我有一個幾千個術語的列表。這些術語有重疊,但形式不同。例如(紅寶石,a_ruby),(鐵人三項,鐵人三項,鐵人三項),(非營利,非營利,非營利組織)。去重複關鍵字數組(但不是基於精確匹配)
其中大多數字符重疊的字符數量顯着,但不完全相同。例如,(非盈利和非盈利)
什麼正則表達式序列將是最好的?我知道我可以使用詞幹,但想知道如何將它與正則表達式結合起來。
我有一個幾千個術語的列表。這些術語有重疊,但形式不同。例如(紅寶石,a_ruby),(鐵人三項,鐵人三項,鐵人三項),(非營利,非營利,非營利組織)。去重複關鍵字數組(但不是基於精確匹配)
其中大多數字符重疊的字符數量顯着,但不完全相同。例如,(非盈利和非盈利)
什麼正則表達式序列將是最好的?我知道我可以使用詞幹,但想知道如何將它與正則表達式結合起來。
對於數千個項目的單個列表,我會考慮一種替代方法。
按字母順序排序列表,然後手動刪除重複項。無論正則表達式和隨後的處理如果不超過手動通過列表,可能會花費更多的時間。
當然,我假設這是一次性命題。我順從正則表達式專家的方案解決方案。
我同意鮑勃考夫曼,你應該做第一遍以消除實際重複。之後,你有一個正則表達式無法爲你解決的問題;您需要查看edit distance的測量數據以隨時隨地獲取。
我在這種情況下,這是不完全可靠平常策略,如下:
1)刪除所有非字母數字字符。
2)使所有字符串小寫。
3)把所有的字符串放在一個HashSet
(這將刪除重複項)。
4)檢查word
和word+"s"
都在集合中的任何情況,並刪除複數。
5)按字母順序輸出字符串,並快速手動搜索重複項。如果發現任何情況,請相應地定義新規則。
其他規則,你可能需要:
這聽起來像一個非常好的序列。在我做任何複雜的正則表達式或算法之前,我會嘗試這個 – 2009-09-29 18:16:09