我们採用更加形式化的定义,并採用稍大一些的样例来展示怎样使用基于数据集频率的权重。相应于一个给定的词项,其权重使用IDF(逆文档频率)来计算。
为了给每篇文档建立一个相应的向量,能够考虑例如以下定义。
对于每一篇文档向量,都有n个分量,而且对于整个文档集中每一个不同的词项,都包括一个词条。
向量中的每一个分量为在整个文档集中计算出来的每一个词项的权重。在每篇文档中。词项权重基于词项在整个文档集中出现的频率情况以及词项在某一个特定文档中出现的频率自己主动赋值。
词项在一篇文档中出现的频率越高。则权重越大。相反。假设词项在全部文档中出现的频率越高。则权重越小。
仅当词项在文档中出现时,文档向量中词项的权重才为非零值。
对于一个包括很多小文档的大文档集。文档向量可能会包括大量的零元素。比如,一篇文档集包括10 000个不同的词项,也就是每一个文档中要用10 000维的向量来表示。一个给定的仅仅有100个不同词项的文档向量则包括9 900个零分量。
对于文档中词项的权重因素,主要综合考虑词频和逆文档频率。也就是说。我们使用以下的公式计算文档i相应的向量中第j个词条的值:
以下我们来考虑一个包括D1和D2两篇文档的文档集。在文档D1中词"绿色"出现了十次,而在D2中"绿色"仅出现了5次。假设只查询"绿色"。那么在结果中文档D1排在文档D2前面。
当我们在一篇文档检索系统中用文档集中t个不同的词项来查询时。系统将为每一个文档计算维度为t的向量D(di1, di2,…,dit)。向量值使用前文所述的词项权重填充。
类似地,查询中的词项构建的向量为Q(wq1, wq2,…,wqt)。
查询Q和文档Di的相似度能够简单地定义为两个向量的内积。由于查询向量和和文档向量在长度上是相似的,这样的策略也经常被用来计算两篇文档的相似度。我们将在3.2节中讨论将SC应用到文档聚类中。
相似度计算举例
以下我们考虑一个固定的查询和文档集,包括一个查询Q和三篇文档组成的文档集:
Q:"gold silver truck"
D1:"Shipment of gold damaged in a fire"
D2:"Delivery of silver arrived in a silver truck"
D3:"Shipment of gold arrived in a truck"
在这个文档集中。有三篇文档,所以d = 3。假设一个词项仅在三篇文档中的一篇中出现,那么该词项的IDF就是lg(d/dfi) = lg(3/1) = 0.477。
类似地,假设一个词项在三篇文档中的两篇中出现,那么该词项的IDF就是lg(d/dfi) = lg(3/2) = 0.176。
假设一个词项在三篇文档中都出现了,那么该词项的IDF就是lg(d/dfi) = lg(3/3) = 0。
三篇文档的每一个词项的IDF值例如以下所看到的:
如今就能够构造文档向量了。由于文档集中出现了11个词项,所以我们构造一个11维的文档向量。我们能够用上文给出的按字母顺序排列的词项来构建文档向量,所以t1相应第一个词项"a",t2相应"arrived",依次类推。
向量j中词项i的权重计算方式为idfi×tfij。文档向量如表2-1所看到的。
表2-1 文档向量
docid | a | arrived | damaged | delivery | fire | gold | in | of | shipment | silver | truck |
D1 | 0 | 0 | 0.477 | 0 | 0.477 | 0.176 | 0 | 0 | 0.176 | 0 | 0 |
D2 | 0 | 0.176 | 0 | 0.477 | 0 | 0 | 0 | 0 | 0 | 0.954 | 0.176 |
D3 | 0 | 0.176 | 0 | 0 | 0 | 0.176 | 0 | 0 | 0.176 | 0 | 0.176 |
Q | 0 | 0 | 0 | 0 | 0 | 0.176 | 0 | 0 | 0 | 0.477 | 0.176 |