2011-03-28 124 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。