我拥有大量新闻文章,准确来说是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')
由于设置了一个而另一个是字符串,所以它不起作用。有什么建议,如何使其有效?或任何其他方法?
谢谢
答案 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']
可以在文章中搜索的字符串。