我在互联网上找到了计算TF国防军的下列代码:
https://github.com/timtrueman/tf-idf/blob/master/tf-idf.py我在函数def下手(word,documentList)中添加了"1+“,这样就不会被0错误除以:
return math.log(len(documentList) / (1 + float(numDocsContaining(word,documentList))))但我困惑于两件事:
代码:
documentNumber = 0
for word in documentList[documentNumber].split(None):
words[word] = tfidf(word,documentList[documentNumber],documentList)是否应仅根据第一份文件计算过渡联邦国防军?
发布于 2013-05-20 11:36:00
发布于 2013-11-13 17:04:41
如果所讨论的单词包含在集合中的每个文档中,则1+更改将导致负值。0 < (x / (1 + x)) <1适用于所有x>0。结果是负对数。
在我看来,一个不存在的单词的正确IDF是无限的或未定义的,但是通过在分母和名称中添加1+,一个不存在的单词将有一个IDF略高于任何现有的单词,而在每个文档中存在的单词将有一个IDF为零。这两种情况都可能与您的代码很好地配合。
https://stackoverflow.com/questions/16648599
复制相似问题