5

我对计算文档分类中的IDF(逆文档频率)有疑问。我有多个类别和多个培训文件。我使用下面的公式在文档中计算IDF每个术语:用于文档分类的计算IDF(逆文档频率)

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

我的问题是:

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

回答

9

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和HinrichSchütze的“信息检索导论”中的sections 6.2 and 6.3

+0

谢谢..我有一个答案。但是,你能解释一下新分类的文档吗?那是如何获得新文档的匹配类别?那么如何为新文件形成频率矢量来做匹配呢? – 2012-08-14 10:25:17

+0

我将这些信息添加到了我的答案中。 – Sicco 2012-08-14 11:08:09

+0

感谢您的帮助.. – 2012-08-14 11:32:47

-1

我已经写了一个小职位描述词频 - 逆文档频率在这里:http://bigdata.devcodenote.com/2015/04/tf-idf-term-frequency-inverse-document.html

下面是从后一个片段:

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

与文档中的其他词语相比,术语频率基本上是文档中某个词的出现频率的显着性。

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