2012-08-01 77 views
5

任何人都可以推薦一個Perl模塊,它可以比較兩個字符串並返回它們匹配的程度嗎?我廣泛搜索CPAN,儘管有類似的模塊,如String ::大約數據::比較,它們不是我正在尋找的。假設我有兩個字符串:我愛你我想你。我想要比較這兩個字符串的功能,考慮到衆多參數,正確順序匹配單詞(作爲字符串中的第一個單詞不應該「匹配」作爲第二個字符串中的第四個單詞,即使兩個字符串都有該字),但字不匹配,但拼寫幾乎類似(如說loge),字數等,並返回一個索引,例如從0到1的數字1,表示兩個字符串之間的相似程度。有沒有這樣的Perl模塊?用於文本比較的Perl模塊

+2

會http://search.cpan.org/dist/Text-Levenshtein/Levenshtein.pm做你要找什麼對於? – 2012-08-01 16:49:21

+0

嗯,我不確定,關於Levenshtein距離的例子和維基百科文章只是在字比較中處理,沒有字符串比較。所以我不知道它如何將字符串與一些匹配的單詞進行比較,但是在不同的位置上,這不應該成爲匹配。 – SexyBeast 2012-08-01 16:57:49

+0

做這種類型的字符串比較是人類做平凡的事情,但這與計算機很難做到。 – 2012-08-01 17:00:24

回答

6

有很多這樣的模塊。然而,通常情況下,你必須以某種特殊的方式利用它們來解釋你自己的假設。大多數像這樣的字符串比較工具只是實現一種將一個字符串與另一個進行比較的算法。大多數人認爲如果你有特定的決策要做,你會自己編碼。

就個人而言,我不確定我會建議Text::Levenshtein,因爲bug和缺少ut8支持。不過,我也沒有更好的建議。

然而,這些搜索,就會發現許多潛在的模塊,你可以看看,並確定最適合你的目的(根據通用算法做這樣的事情的名稱):

如果你有興趣在口語相似之處,你也可以看看我n要註音比較:

+0

哇。大量的資源,將把它們全部放在眼裏。謝謝! – SexyBeast 2012-08-01 17:46:45