5

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

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

我的问题是:

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

2 回答 2

9

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

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

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

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

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

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

平滑也是一种有用的技术来处理查询中没有出现在您的语料库中的单词。

我建议阅读Christopher D. Manning、Prabhakar Raghavan 和 Hinrich Schütze 的“Introduction to Information Retrieval”的第 6.2 和 6.3 节。

于 2012-08-14T09:18:10.593 回答
0

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

这是该帖子的一个片段:

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

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

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

于 2015-04-17T03:47:51.467 回答