【问题标题】:Caluculating IDF(Inverse Document Frequency) for document categorization为文档分类计算 IDF(逆文档频率)
【发布时间】:2023-03-08 18:34:01
【问题描述】:

我对在文档分类中计算 IDF(逆文档频率)有疑问。我有不止一个类别,其中包含多个用于培训的文档。我正在使用以下公式计算文档中每个术语的 IDF:

IDF(t,D)=log(Total Number documents/Number of Document matching term);

我的问题是:

  1. “语料库中的文档总数”是什么意思?文档是从当前类别计数还是从所有可用类别计数?
  2. “文档匹配项数”是什么意思?匹配文档的术语是从当前类别中计数还是从所有可用类别中计数?

【问题讨论】:

    标签: machine-learning information-retrieval tf-idf document-classification categorization


    【解决方案1】:

    我在这里写了一篇描述词频-逆文档频率的小帖子:http://bigdata.devcodenote.com/2015/04/tf-idf-term-frequency-inverse-document.html

    这是帖子中的一个sn-p:

    TF-IDF 是广泛用于文档分类的最基本指标。 让我们尝试定义这些术语:

    词频基本上是与文档中其他词相比,文档中某个词出现的频率的重要意义。

    另一方面,逆文档频率对于给定集合(我们想要分类为不同类别的文档)的所有文档中单词的出现率很重要。

    【讨论】:

      【解决方案2】:

      Total Number documents in Corpus 只是您在语料库中拥有的文档数量。因此,如果您有 20 个文档,则此值为 20

      Number of Document matching term 是术语t 出现在多少文档中的计数。因此,如果您总共有 20 个文档,并且术语 t 出现在 15 个文档中,则 Number of Documents matching term 的值为 15。

      因此,此示例的值将是 IDF(t,D)=log(20/15) = 0.1249

      现在,如果我是正确的,您的每个文档有多个类别,并且您希望能够将新文档分类为一个或多个这些类别。一种方法是为每个类别创建一个文档。每个类别文档都应包含所有标有该类别的文本。然后您可以对这些文档执行tf*idf

      然后可以通过使用为每个类别计算的不同术语值对查询的术语值求和来实现对新文档进行分类的简单方法。用于计算产品的术语值产生最高结果的类别将排名第一。

      另一种可能性是使用查询中每个术语的idf 为查询创建一个向量。查询中未出现的所有术语都被赋予0 的值。然后可以使用例如cosine similarity 来比较查询向量与每个类别向量的相似性。

      Smoothing 也是处理查询中未出现在您的语料库中的单词的有用技术。

      我建议阅读 Christopher D. Manning、Prabhakar Raghavan 和 Hinrich Schütze 的“信息检索简介”的 sections 6.2 and 6.3

      【讨论】:

      • 谢谢..我得到了答案。但是你能解释一下分类新文件的详细说明吗?那是如何获得新文档的匹配类别?。那么如何为新文档形成频率向量进行匹配?..
      • @Sicco 我正在做你在答案中提到的事情。但是我只有两个类别,所以两个文件。由于文档数量如此之少,我的 Idf 只能是 {0, 0.5},这让我的信息太松散了。
      猜你喜欢
      • 2016-01-23
      • 2017-06-13
      • 2015-01-19
      • 2014-05-18
      • 1970-01-01
      • 2014-08-19
      • 2015-11-23
      • 1970-01-01
      • 2021-02-20
      相关资源
      最近更新 更多