2010-02-17 94 views
5

我用tf/idf來計算兩個文檔之間的相似度相似度。它有一些限制,表現不佳。文檔相似性

我查找了LDA(潛在dirichlet分配)來計算文檔相似度。我不知道 這很多。我無法找到關於我的問題的很多東西。

你能否給我提供任何與我的問題有關的教程?或者你可以提供一些建議,我怎樣才能用LDA完成這項任務?

由於

P.S:也沒有任何的源代碼速效與LDA執行這樣的任務??

+0

之間的餘弦相似能否請您闡述一下爲什麼餘弦相似性對你沒有工作,這項服務? – 2010-02-17 12:16:17

回答

0

你可能會想到LSA(潛在語義分析),這是一種非常常見的解決這類問題的方法。

+0

您好, 感謝您的回覆。是的,我知道LSA,我也實施了它。我用SVD的JAMA包,但我有一個問題,如果我的行少於columsn它不起作用:(你能告訴我任何其他小svd包? – user238384 2010-02-17 02:08:04

1

你看過Lucene和Mahout嗎?

這可能是有用的 - Latent Dirichlet Allocation與Lucene和Mahout。

+0

謝謝,你也可以請回答是否有可能計算在LDA的幫助下兩個文檔之間的相似性?大多數人都說它可以用於非監督集羣:( – user238384 2010-02-17 02:06:56

+0

對不起,我不太瞭解LDA提供的專家答案,它不是Mahout的一部分我已經使用過,但是,我對聚類的理解是,基於某種相似性度量對您的分組對象進行分組,這種情況在本例中是LDA。 – 2010-02-17 02:50:28

0

有點舊,但對於任何人仍然感興趣,看看這blog post(免責聲明:這是我自己的博客)。那裏描述的算法和鏈接的代碼可能會做你所需要的,如果你沒有對任何特定的方法設置你的心。

關於Shashikant的評論,餘弦相似性可能不是一個好的選擇,因爲簽名的長度與文檔成比例。恆定長度的簽名是可取的。

0

嘗試計算兩個文件

http://www.scurtu.it/documentSimilarity.html

import urllib,urllib2 
import json 
API_URL="http://www.scurtu.it/apis/documentSimilarity" 
inputDict={} 
inputDict['doc1']='Document with some text' 
inputDict['doc2']='Other document with some text' 
params = urllib.urlencode(inputDict)  
f = urllib2.urlopen(API_URL, params) 
response= f.read() 
responseObject=json.loads(response) 
print responseObject