我在互联网上找到了以下用于计算 TFIDF 的代码:
https://github.com/timtrueman/tf-idf/blob/master/tf-idf.py
我在函数 def idf(word, documentList) 中添加了“1+”,所以我不会除以 0 错误:
return math.log(len(documentList) / (1 + float(numDocsContaining(word,documentList))))
但我对两件事感到困惑:
- 在某些情况下我得到负值,这是正确的吗?
- 我对第 62、63 和 64 行感到困惑。
代码:
documentNumber = 0
for word in documentList[documentNumber].split(None):
words[word] = tfidf(word,documentList[documentNumber],documentList)
TFIDF 是否应该仅在第一个文档上计算?