0

我有一个庞大的新闻文章数据集,准确地说是 48000 篇。我已经为每篇文章制作了 ngrams n = 3。我的 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')

因为一个是设置的,另一个是字符串它不起作用。任何建议,如何使它工作?或任何其他方法?

谢谢你

4

1 回答 1

1

在文章中搜索带状疱疹之前,您可以使用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']

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

于 2019-03-13T14:14:14.760 回答