2017-07-26 30 views
0

我有一個名稱列表與我和iam試圖從任何給定的名稱列表中查找最相似的5個名稱作爲查詢。 我想過應用word2vec或者使用nltk中的Text.similar()。但我不確定這些是否也適用於名稱。名稱間的相似性測量?

任何相似性度量都適用於我。 有什麼建議嗎? 這不是任何項目,但只是我想學習新的東西。

+2

你是表面相似還是語義相似?在第一種情況下,例如「史蒂夫」和「史蒂文」被認爲是相似的,你通常會使用字符串相似性度量,也許還會結合一些手寫規則。在第二種情況下,如果您使用單詞嵌入,則可能會發現名稱「特朗普」和「普京」是相似的(因爲如果嵌入是在新聞文本上進行訓練的,則這些名稱出現在相似的上下文中)。 – lenz

+0

嗨@lenz表面相似性將爲我工作。關於如何做到這一點的任何想法。 –

+0

我在python'difflib'.wil中遇到了這個庫,它完成了我的工作。任何想法。 –

回答

4

既然你添加了NLTK,我假設你在Python中工作得很好。
查看包含10個不同算法的Jellyfish庫,用於比較字符串。其中一些人只會比較字符,而其他人會嘗試猜測字符串是如何發音的,並幫助您識別其他拼寫完全​​不同但拼寫相似的短語。
實際的算法都是用C編寫的,所以這個庫非常高效!
我想你會發現Jaro-Winkler距離是最有用的。還請查看this paper

+1

哦,是的,我忘記了彼得·克里斯滕的這份技術報告(儘管我知道)。它更適合作爲字符串相似性的介紹。 Efremova等人的專家是正面和負面類別的可分離性的好圖表。 – lenz