2012-05-03 55 views
2

我使用Levenshtein距離算法比較作爲用戶輸入提供的公司名稱與已知公司名稱的數據庫以找到最接近的匹配項。本身,算法工作正常,但我想建立一個偏差,以便編輯距離被認爲是較低的,如果字符串的初始部分匹配。修改Levenshtein位置偏差的距離

例如,如果搜索條件是「ABCD」,那麼「ABCD Co.」和「XYX ABCD」具有相同的編輯距離。不過,我想增加一個事實,即第一個字符串的起始部分與第二個字符串的搜索條件更緊密匹配。

這樣做的一種方法可能是將字符串開頭的插入/刪除/替換成本修改得更高,然後降低到最後。有沒有人有這個成功實施的例子?使用Levenshtein距離仍然是我嘗試實現的最好方法?我對這種方法的假設是否準確?

更新:爲了我的直接目的,我決定放棄上述內容,改爲使用Jaro Winkler編輯距離來解決問題。不過,我會留下來進一步的投入。

+0

即時尋找同樣的事情...你有你的解決方案的任何運氣?也許你可以提供一些代碼示例? – Leonardo

回答

0

你正在尋找看起來像史密斯 - 沃特曼局部比什麼:http://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm

+0

嗨,皮埃爾。這個算法看起來很有趣。但是我不確定用於基因序列匹配的東西是否也適用於匹配包含公司名稱的字符串。最終,結果需要轉化爲表示兩個字符串相似性的標準化匹配百分比,而如果初始序列匹配則稱量更多。 – user1368587