首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TFIDF计算混淆

TFIDF计算混淆
EN

Stack Overflow用户
提问于 2013-05-20 11:33:52
回答 2查看 9.6K关注 0票数 9

我在互联网上找到了计算TF国防军的下列代码:

代码语言:javascript
复制
https://github.com/timtrueman/tf-idf/blob/master/tf-idf.py

我在函数def下手(word,documentList)中添加了"1+“,这样就不会被0错误除以:

代码语言:javascript
复制
return math.log(len(documentList) / (1 + float(numDocsContaining(word,documentList))))

但我困惑于两件事:

  1. 在某些情况下,我得到了负值,这是对的吗?
  2. 我对第62、63和64行感到困惑。

代码:

代码语言:javascript
复制
 documentNumber = 0
  for word in documentList[documentNumber].split(None):
       words[word] = tfidf(word,documentList[documentNumber],documentList)

是否应仅根据第一份文件计算过渡联邦国防军?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-20 11:36:00

  1. 不是的。tf-国防军是tf,一个非负值,乘以下手,一个非负值,所以它永远不会是负值.这段代码似乎实现了多年来一直在维基百科上的erroneous definition of tf-idf (同时也是fixed )。
票数 14
EN

Stack Overflow用户

发布于 2013-11-13 17:04:41

如果所讨论的单词包含在集合中的每个文档中,则1+更改将导致负值。0 < (x / (1 + x)) <1适用于所有x>0。结果是负对数。

在我看来,一个不存在的单词的正确IDF是无限的或未定义的,但是通过在分母和名称中添加1+,一个不存在的单词将有一个IDF略高于任何现有的单词,而在每个文档中存在的单词将有一个IDF为零。这两种情况都可能与您的代码很好地配合。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16648599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档