我正在尝试计算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 1 3第二个3 4第三个4这个5和0文档1第一个1是3一个3第二个3 4第三个4这个5和1个文档1第一个1个1是3个1个3第二个3 4第三个4这个5和0文档0第一个1个是3一个3第二个3 4第三个4这个5
我需要的输出是: this 4是4第一个2文档3第二个1和1第三个1 1
发布于 2020-02-14 20:20:28
我假设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)发布于 2020-02-14 20:29:34
你可以做到这一点。但是,您尝试计算的不是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)发布于 2020-02-14 20:22:39
这非常适合collections包中的Counter类
from collections import Counter
words = ' '.join(corpus)
output = Counter(words.split()).most_common()https://stackoverflow.com/questions/60226111
复制相似问题