辞書に複数の単語のための近い試合を得る:Pythonの私は、次のような構造を持つ辞書を持っている
{
1: {"names": ["name1_A", "name1_B", ...]},
2: {"names": ["name2_A", "name2_B", ...]},
...
}
どこname1_A
とname1_B
IDで同じ名前を書くための同義語/エイリアス/さまざまな方法があります1. name2_A
とname2_B
は、同じ名前のエイリアスで、IDは2などです。
ユーザー入力を受け取り、エイリアスがユーザー入力と最も似ている名前のIDを返す関数を記述する必要があります。
私が意味することを理解することはそれほど直感的ではありませんので、ここに例があります。
{
1: {"names": ["James", "Jamie"]},
2: {"names": ["Karen", "Karyn"]}
}
単語Jimmy
におけるユーザーのタイプ:これは私の辞書であるとしましょう。辞書からJimmy
に最も近いマッチがJamie
あるので、この関数は世界Karena
でユーザーがタイプした場合ID 1.
を返すために持っている、最も近いマッチがKaren
であるため、機能はID 2を返すことがあります。
最も近い数値を得るにはdifflibのget_close_matches()
を使用するのが最善の方法だと思います。しかし、その関数は引数として可能性のリストを取ります。関数で正しく使用する方法は考えられません。どんな助けもありがとう。
どのように「最も類似」を定義していますか? –
「Jamie」が「Jimmy」のクローゼットマッチだと言ったとき、あなたは両方のストリングの各キャラクターの最高のマッチを比較していますか? –
"ダイナミックプログラミングスペルチェッカー"を検索します。これはおそらく一組のルールであり、必ずしもベストであるとは限りません。すなわち、音声的な距離を使うほうがいいでしょうか? – user2864740