2016-11-01 63 views
0

我在想如何根據Levenshtein distance(字符串編輯距離)生成一組類似的字符串。理想情況下,我喜歡傳入一個源字符串(即用於生成與其類似的其他字符串的字符串),需要生成的字符串數量以及閾值作爲參數,即在字符串之間的相似性生成的集合應該大於閾值。我想知道我應該用什麼Python包來實現這個目標?或者任何想法如何實現這個?如何在python中生成一組類似的字符串

+1

https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Python – Whud

回答

1

我認爲你可以用另一種方式思考問題(顛倒過來)。

  • 給定一個字符串,假設它是座標
  • 給定一個閾值(編輯距離),假設它是k
  • 然後,您應用k步驟中不同「編輯」的組合。

例如,假設K = 2,並承擔了允許edit modes你是:

  • 刪除一個字符
  • 增加一個字符
  • 替代與另一個一個字符。

,則邏輯是類似下面的東西:

input = 'sittin' 
for num in 1 ... n: # suppose you want to have n strings generated 
    my_input_ = input 
    # suppose the edit distance should be smaller or equal to k; 
    # but greater or equal to one 
    for i in in 1 ... randint(k): 
    pick a random edit mode from (delete, add, substitute) 
    do it! and update my_input_ 

如果你需要堅持使用預定義的字典,這增加了一些複雜性,但它仍然是可行的。在這種情況下,編輯必須有效。

相關問題