2012-07-13 42 views
4

如何確定使用WordNet的Python中兩個文本之間的語義相似度?使用WordNet來確定兩個文本之間的語義相似度?

明顯的預處理將刪除停用詞和詞幹,但那又如何?

我能想到的唯一方法是計算兩個文本中每個單詞之間的WordNet路徑距離。這是unigrams的標準。但是這些都是大的(400字)文本,它們是自然語言文件,沒有任何特定順序或結構的文字(除了英文文法強加的文字外)。那麼,你會在文本之間比較哪些單詞?你將如何在Python中做到這一點?

+0

我會遍歷所有單詞,並比較同一指數與Levenshtein距離其他文本並試圖將其最小化 – 2012-07-13 02:50:22

+0

兩個文本沒有通過類似的索引組織。例如,它將是一個關於狗的維基百科頁面,另一個關於貓的維基百科頁面。 – Zach 2012-07-13 22:22:45

回答

8

一件事,你可以做的是:

  1. 殺停止詞
  2. 找到儘可能多的單詞可能有同義詞和反義詞與同一文檔的其他詞的最大的交叉點。我們稱之爲「重要詞彙」
  3. 檢查每個文檔的重要詞彙集是否相同。他們越接近,文檔就越相似。

還有另一種方法。從每個文檔中的句子計算句子樹。然後比較兩個森林。很久以前,我爲一門課做了一些類似的工作。 Here's the code(請記住,這是很久以前的,這是課程,所以代碼是非常黑客,至少可以這麼說)。

希望這有助於

+0

+1好主意。我在看你的代碼,但我沒有看到如何比較句子樹。據推測,它應該只需要大約15行代碼與Python中的NLTK,不是嗎? – Zach 2012-07-13 22:30:32

+0

我從來沒有到過這一點。但它應該是我的代碼輸出的直接鏡頭 – inspectorG4dget 2012-07-13 22:34:22

+0

取決於您想如何比較句子樹。但它不應該佔用太多的代碼。 – inspectorG4dget 2012-07-14 00:23:04

相關問題