0

我在计算相似性度量以为我的最终项目开发搜索引擎时遇到问题。

我必须在 java 中使用tf idf + 余弦相似度,但我不知道如何计算它。

供您参考,我有自己的数据库,其中包含 811 文档

4

1 回答 1

1

要计算向量 u 和 v 的余弦相似度,请将 u 和 v 归一化,然后得到 u 和 v 的点积。这意味着向量具有相同的大小并且是数值向量(参见http://en.wikipedia.org/wiki /Cosine_similarity)编码这样的操作是微不足道的,有些人为你做了,就像这里http://acs.lbl.gov/software/colt/

在搜索引擎中,余弦相似度可以衡量对象 A 匹配 B 的程度。您的查询是对象 A,计算数据库/存储中所有对象 B 的余弦相似度/无论如何,B 对象按相似度递减排序。

如果您的对象是数字向量,那就很容易了。如果没有,那么您必须设计一种方法将您的对象转换为数字向量。例如,对于文本数据,向量可以包含一些关键字在文本中出现的次数,它被称为“词袋模型”(参见http://en.wikipedia.org/wiki/Bag_of_words_model)这样的模型完全忽略单词之间的关系。考虑到单词之间的简单关系的更聪明的方法可以是计算给定文本的给定单词跟随另一个单词的概率,这是马尔可夫表示。该向量是单词 x 跟随 y 的概率向量。

于 2011-03-28T06:02:54.510 回答