如何计算术语在使用python时出现的文档数?

问题描述 投票:0回答:3

我正在尝试为TF-IDF矢量化计算IDF值。我正在尝试计算包含词汇的每个唯一词的文档数。

这是语料库:

语料库= ['这是第一个文档',“本文件是第二份文件”,“这是第三个”,“这是第一份文件吗?”

我的代码:

...

IDF值:

for i in range(0,len(corpus)):
    o=corpus[i].split(' ')
    c=0
    for wor in n:
        for k in range(0,len(corpus)):
            if wor in o[k]:
            c=c+1
        print(wor, c) 

...

我得到的输出是:和0文件0前1是3一三第二三4第三四这5和0文件1前1是3一三第二三4第三四这5和1文件1前1是3一三第二三4第三四这5和0文件0前1是3一三第二三4第三四这5

我需要的输出:这4是44前2文件3第二个1和1第三名一个1

python tf-idf
3个回答
0
投票

这对于Counter包中的collections类是完美的

from collections import Counter

words = ' '.join(corpus)
output = Counter(words.split()).most_common()

0
投票

我假设n包含您的词汇。然后您可以执行此操作:

wordsets = [ frozenset(document.split(' ')) for document in corpus ]
results = []
for word in n:
    count = sum( 1 for s in wordsets if word in s )
    results.append((count, word))
for count, word in sorted(results, reverse=True):
    print(word, count)

0
投票

您可以执行此操作。但是,您要计算的不是IDF。这只是所有文档中特定单词的出现频率。

 for i in range(0,len(corpus)):
   words=corpus[i].split(' ')
   for word in words:
     if word in freq:
       freq[word] = freq[word] + 1
     else:
       freq[word] = 1
 print(freq)
© www.soinside.com 2019 - 2024. All rights reserved.