我有相同數據(公司)的2個信息來源,我可以通過唯一ID(合同編號)連接在一起。第二個不同來源的出現是由於這兩個來源是手動更新的,這是獨立的。所以我有一個ID和公司名稱在2個表中。字符串比較算法,相關性,多少「相似」2個字符串
我需要拿出一個算法會比較名稱 2分表爲同一ID中,並且爲了所有的公司由表示字符串是多麼的不同(要突出一個變量最不同的,將被放置在列表的頂部)。
我看着簡單的Levenshtein距離計算算法,但它在字母級別,所以我仍然在尋找更好的東西。
Levenshtein之所以沒有真正做好這項工作,是因爲公司有一個名稱,由組織形式(LTD,JSC,co。等)加上前綴或後綴。所以我們可能會有很多JSC "Foo"
,它們與Foo JSC.
的差別很大,但我真正在數據庫中尋找的是不同的字符串,如SomeLongCompanyName JSC
和JSC OtherName
。
有沒有什麼好的方法可以做到這一點? (我不太喜歡用正則表達式來分隔每個字符串中的單詞,然後使用Levenshtein距離查找另一個字符串中的每個單詞的匹配的想法,所以我正在尋找其他想法)
通過將組織表單移動到最後按字母順序排序來預處理每個字符串。然後使用Levenshtein距離。 – TonyK 2010-09-17 08:29:35
這裏也有困難。想象一下擁有'MeLTD'LTD'的公司。我在這裏實際上沒有'LTD',這是另一種語言,所以我有很多像'IS''II''IM''SA''SRL'(有時用點分開),而2個字母是非常可能會出現在名字本身。你仍然應該寫這個答案,因爲這是一個新的想法,我會嘗試。至少會給你一個'上'。 – AlexanderMP 2010-09-17 08:48:36
在這種情況下,它會變得混亂。如何:1.用空格替換所有標點符號。 2.將字符串分解爲空白分隔的單詞。 3.將<= 4個字符的所有單詞移至末尾,按字母順序排序。萊文斯坦。 你想要更多,我有一個代理:-) PS你也可以投票評論! – TonyK 2010-09-17 15:34:40