【问题标题】:Why is log used when calculating term frequency weight and IDF, inverse document frequency?为什么在计算词频权重和IDF、逆文档频率时使用log?
【发布时间】:2015-01-19 23:46:07
【问题描述】:

IDF 的公式是 log( N / df t ) 而不仅仅是 N / df t。

其中 N = 集合中的文档总数,df t = 词条 t 的文档频率。

据说使用日志是因为它“抑制”了 IDF 的效果。这是什么意思?

另外,我们为什么要对术语频率使用对数频率加权,如下所示:

【问题讨论】:

标签: information-retrieval tf-idf


【解决方案1】:

Debasis 的回答是正确的。我不确定他为什么被否决。

这是直觉: 如果 doc1 中单词“computer”的词频为 10,而 doc2 中为 20,我们可以说 doc2 比 doc1 中的单词“computer”更相关。

但是,如果同一个词“计算机”的词频对于 doc1 是 100 万,而 doc2 是 200 万,此时,在相关性方面已经没有太大差异,因为它们都包含非常高的计算术语“计算机”。

就像 Debasis 的回答一样,添加 log 是为了降低频率较高的术语的重要性,例如使用 log base 2,100 万的计数将减少到 19.9!

我们还将 log(tf) 加 1,因为当 tf 等于 1 时,log(1) 为零。通过加一,我们可以区分 tf=0 和 tf=1。

希望这会有所帮助!

【讨论】:

  • 很好的答案,但不是关于 IDF 而不是 TF 的问题吗?看来你的推理应该适用于 TF
  • 是的,同样的想法也适用于 IDF 术语。 IDF 越高,给定单词/标记的唯一性就越高。假设文档总数为 100M,具有给定令牌的文档数为 10,则 100M/10 = 10M。所以应用日志会很有帮助。
【解决方案2】:

在文档中出现的词越多,相关性就不一定越多……词频对文档相关性的贡献本质上是一个次线性函数……因此用对数来近似次线性函数...

同样适用于 idf...线性 idf 函数可能会过多地提高具有高 idf 术语的文档分数(由于拼写错误,这可能是罕见的术语)...亚线性函数的性能要好得多...

【讨论】:

    【解决方案3】:

    您可以认为我们正在获取整个语料库中单词的信息内容,即信息内容 = -log(p) = -log(n_i/N) = log(N/n_i)。

    【讨论】:

      【解决方案4】:

      我将尝试将我的答案更多地放在实际方面。让我们用两个词——“The”和“Serendipity”。

      所以这里的第一个词“the”,如果我们的语料库有 1000 个文档,几乎每个文档都会出现,但“serendipity”是一个罕见的词,可能出现的文档较少,例如我们认为它只出现在一份文件。

      所以,在计算两者的 IDF 时 -

      IDF Log(IDF)
      The = 1000/1000 = 0 0
      Serendipity = 1000/1 =1000 ~6.9

      现在我们看看如果我们的 TF 范围在 0-20 左右,那么如果我们的 IDF 不是 log(IDF),那么它肯定会主导 TF,但如果作为 log(IDF),那么它将有一个相等的TF 对结果的影响。

      【讨论】:

        猜你喜欢
        • 2016-01-23
        • 2023-03-08
        • 1970-01-01
        • 2014-05-18
        • 2017-06-13
        • 1970-01-01
        • 2016-04-23
        • 1970-01-01
        • 2014-08-19
        相关资源
        最近更新 更多