したがって、私は2つの単語を持っています。私は各単語から他への最大重なりを見つける関数を書いてみたい。例:Pythonの2つの単語から2つの単語の単語の重なりを計算します
words = ['AAB', 'BAA']
find_overlap('AAB', 'BAA')
万一出力Bとサイズ1、および:
find_overlap('BAA', 'AAB')
万一出力AAとサイズ2.それを行う方法上の任意の提案?
編集:私はpythonからdifflib.SequenceMatcherを試しましたが、出力がわかりません。
s1 = "AAB"
s2 = "BAA"
s = difflib.SequenceMatcher(None, s1, s2)
pos_a, pos_b, size = s.find_longest_match(0, len(s1), 0, len(s2))
print(pos_a, pos_b, size)
最初に可能な限り重なりを確認し、より小さい重なりを繰り返すように繰り返します。 – Moberg
@Mobergこれは、* War and Peace *と* Crime and Punishment *の完全なテキストの最大の重複を調べるために、数十万文字の重なりをチェックしてから作業を開始することを示唆しています。非常に効率的に聞こえません。オーバーラップの長さはおそらく0です。 –
@ JohnColemanいいえ、それほど効率的ではありません。それは、WaPでCaPの最初の文字の最初の出現を見つけ出し、あなたの道を切り開くことを意味しますが。一致しないとすぐに次の出現にスキップします。他にどんな方法がありますか? :) – Moberg