2011-03-28 83 views
0

我有一个问题来计算相似性度量来为我的最终项目开发一个搜索引擎。我不得不使用tf idf + cosine在java中的相似性,我不知道如何计算它。使用java程序计算余弦相似度

为了您的信息,我有自己的数据库,其中有811文件

回答

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。