LSH-带状疱疹的二进制矩阵表示

时间:2019-03-13 12:38:05

标签: python pandas n-gram lsh

我拥有大量新闻文章,准确来说是48000个。我在n = 3的每篇文章中都做了ngram。 我的ngram看起来像这样:

[[(tikro, enters, into), (enter, into, research), (into, research, and),...]] 

现在,我需要为每个瓦片和文章制作一个二进制矩阵:

          article1 article2 article3
shingle1     1        0        0
shingle2     1        0        1
shingle3     0        1        0

起初,我将所有带状疱疹都保留在一个列表中。在那之后,我尝试了一下以检查它是否有效。

for art in article:
    for sh in ngrams:
        if sh in art:
            print('found')

由于设置了一个而另一个是字符串,所以它不起作用。有什么建议,如何使其有效?或任何其他方法?

谢谢

1 个答案:

答案 0 :(得分:0)

在搜索文章中的带状疱疹之前,您可以使用join将带状疱疹的单词连接成3个词组。

例如,我们有如下的ngram:

ngrams = [('tikro', 'enters', 'into'),
          ('enter', 'into', 'research'),
          ('into', 'research', 'and')]

然后我们将每个带状疱疹的单词连接成短语:

shingles = [' '.join(x) for x in ngrams]

转换后,shingles类似于:

['tikro enters into', 
 'enter into research', 
 'into research and']

可以在文章中搜索的字符串。