2012-09-14 73 views
0

我有一個CSV文件中的列,其名稱使得該列中的每個單元格可能與拼寫錯誤的單元格相同。例如,「耐克」可能與「耐克公司」相同。可以與「耐克公司」相同。將ID映射到名稱並刪除重複的算法開發

我目前的腳本

我已經用Python寫的一個程序,如果在列前綴或後綴 出現該值的2倍以上,從 每個細胞去除前綴和後綴。然後,我在 這一列按字母順序排序後,將一行與下一行進行比較。

我目前的問題

還有很多細胞在其他細胞的現實複製,但他們 不是這樣指出。這些例子是: 一)不是精確的匹配(而不是關閉只是大小寫) B)通過比較其莖沒有抓到(不帶前綴和不帶後綴),以 其字母鄰居

我現在的問題

1)沒有人有經驗的映射ID來名來自世界各地的 (所以口音,Unicode和所有的東西是一個問題在這裏,雖然我設法 來解決大多數的這些Unicode問題) 並具有良好這裏沒有列出算法開發的想法?

2)在某些情況下,重複沒有拿起,我知道爲什麼我知道他們是重複的。在一種情況下, 行的中間有一段時間不存在於其非兄弟單元格中。是一個很好的策略,只需創建一個額外的列和輸出單元格值,我懷疑 是基於少數情況下,我知道我爲什麼知道它的重複?

3)如何檢查自己?一種方法是標記潛在的 重複的最大數量並手動查看所有這些。不幸的是,我們的 數據集的大小並沒有那麼漂亮,也不是很可行...

感謝您提供任何幫助!

回答

0

嘗試音譯名稱,刪除所有國際符號,然後考慮使用類似soundexhttp://en.wikipedia.org/wiki/Levenshtein_distance(例如http://pypi.python.org/pypi/Fuzzy)的函數來計算文本相似度。

+0

感謝您指點我正確的方向。我只是讀了一些,看起來雙倍metaphone將是最好的開始。有沒有一個你知道做音譯的好功能還是隻是我做了一堆「如果」的陳述,因爲沒有那麼多的字符參與? – user1590499

+0

nvm,我想我要使用unicodedata或unidecode,只需要弄清楚我想要哪一個... – user1590499