ユニコード文字列のレーベンシュタイン編集距離を評価する必要があります。つまり、編集距離にバイアスがかからないように、同一のコンテンツを含む 2 つの文字列を正規化する必要があります。
テスト用にランダムな Unicode 文字列を生成する方法は次のとおりです。
def random_unicode(length=10):
ru = lambda: unichr(random.randint(0, 0x10ffff))
return ''.join([ru() for _ in xrange(length)])
そして、ここに失敗している簡単なテストケースがあります:
import unicodedata
uni = random_unicode()
unicodedata.normalize(uni, 'NFD')
そして、ここにエラーがあります:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)
uni
実際に Unicode オブジェクトであることを確認しました。
u'\U00020d93\U000fb2e6\U0005709a\U000bc31e\U00080262\U00034f00\U00059941\U0002dd09\U00074f6d\U0009ef7a'
誰かが私を啓発できますか?