2014-01-25 55 views
1

不知道這是爲元或堆棧,但我有一個非常大的字符串列表,並希望找到它們之間的相似性,所以我可以提取最相似的組並重寫它們作爲正則表達式來節省空間。python找到大量字符串的正則表達式模式

現在我正在查看列表並慢慢地用手篩選它。

是否有一個函數可以在Python中執行此操作,我將輸入一個列表並按相似性對字符串進行分組?我有輕鬆的學習,但如果已經有一個已經存在,我不想製作自己的程序。

NLTK會爲此做些什麼嗎?

例如,對於爭奪名單,我可以得到這樣的回報或有組織的數據集

Cat 
hat 
bat 
rat 

snail 
mail 
fail 
pail 

rhino 
dino 

Milhouse 

,我會寫的正則表達式爲他們

patterns = ['^(c|h|b|r)at$', '^(sn|m|f|p)ail$', '^(rh|d)ino$', 'Milhouse'] 

回答

1

我不知道NLTK有或沒有,但這聽起來像Burkhard-Keller樹木。我不認爲他們在標準庫中,但至少有一個可用的Python實現。

如果你想堅持標準庫,你可以嘗試difflib.get_close_matches(),但它可能會更慢。

+0

是的,我認爲這就是我想要的。這只是我可以返回一組單詞,在那裏我可以手動編寫模式,以節省大量設置的麻煩。 – user3084006

+0

我發現了一個BK樹的實現,但不會顯示結果http://code.activestate.com/recipes/572156-bk-tree/ – user3084006

相關問題