【发布时间】:2011-07-24 05:35:19
【问题描述】:
我在为我的最终项目开发搜索引擎时计算相似性度量时遇到了问题。
我必须在 java 中使用 tf idf + cosine 相似度,但我不知道如何计算它。
供您参考,我有自己的数据库,其中包含 811 文档
【问题讨论】:
标签: java tf-idf trigonometry
我在为我的最终项目开发搜索引擎时计算相似性度量时遇到了问题。
我必须在 java 中使用 tf idf + cosine 相似度,但我不知道如何计算它。
供您参考,我有自己的数据库,其中包含 811 文档
【问题讨论】:
标签: java tf-idf trigonometry
要计算向量 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 的概率向量。
【讨论】: