用java程序计算余弦相似度

用java程序计算余弦相似度,java,tf-idf,trigonometry,Java,Tf Idf,Trigonometry,我有一个问题,计算一个相似性度量,为我的最终项目开发一个搜索引擎 我必须在java中使用tf idf+cosine相似性,我不知道如何计算它 供您参考,我有自己的数据库,其中有811个文档,用于计算向量u和v的余弦相似性,对u和v进行归一化,然后得到u和v的点积。这意味着向量大小相同,都是数字向量(请参阅)编码这样的操作很简单,有些人是为你做的,就像这里 在搜索引擎中,余弦相似性可以衡量对象a与B的匹配程度。您的查询是对象a,计算数据库/存储/任意位置中所有对象B的余弦相似性,B对象通过降低相似

我有一个问题,计算一个相似性度量,为我的最终项目开发一个搜索引擎

我必须在java中使用tf idf+cosine相似性,我不知道如何计算它


供您参考,我有自己的数据库,其中有811个文档,用于计算向量u和v的余弦相似性,对u和v进行归一化,然后得到u和v的点积。这意味着向量大小相同,都是数字向量(请参阅)编码这样的操作很简单,有些人是为你做的,就像这里

在搜索引擎中,余弦相似性可以衡量对象a与B的匹配程度。您的查询是对象a,计算数据库/存储/任意位置中所有对象B的余弦相似性,B对象通过降低相似性进行排序

如果您的对象是数字向量,那么就很简单了。如果没有,那么你必须想出一种方法把你的物体变成数字向量。例如,对于文本数据,向量可以包含某些关键字在文本中出现的次数,它被称为“单词袋模型”(参见)。这样的模型完全忽略了单词之间的关系。考虑到单词之间的简单关系,一种更聪明的方法是计算给定文本中一个单词跟随另一个单词的概率,这是一种马尔可夫表示法。这个向量是一个概率向量,单词x跟在y后面