einen Wörterbuch mit folgenden Struktur:Python - get schließen Treffer für mehrere Worte in einem Wörterbuch
{
1: {"names": ["name1_A", "name1_B", ...]},
2: {"names": ["name2_A", "name2_B", ...]},
...
}
wo name1_A
und name1_B
sind Synonyme/aliases/verschiedene Möglichkeiten, den gleichen Namen zu schreiben, deren ID 1. name2_A
und name2_B
sind Aliase mit dem gleichen Namen, deren ID 2 ist, und so weiter.
Ich muss eine Funktion schreiben, die eine Benutzereingabe nimmt und die ID des Namens zurückgibt, dessen Alias der Benutzereingabe am ähnlichsten ist.
Ich weiß, es ist nicht sehr intuitiv zu verstehen, was ich meine, also hier ist ein Beispiel. Lassen Sie uns sagen, das ist mein Wörterbuch:
{
1: {"names": ["James", "Jamie"]},
2: {"names": ["Karen", "Karyn"]}
}
Der Benutzer tippt im Wort Jimmy
. Da die größte Übereinstimmung mit Jimmy
aus dem Wörterbuch Jamie
ist, hat die Funktion die ID 1.
Wenn der Benutzer tippt auf der Welt Karena
, zurückzukehren, da die nächste Übereinstimmung Karen
ist, hat die Funktion die ID 2 zurückzukehren.
Ich denke, der beste Weg, um die nächste Mathematik zu bekommen, ist difflib 's get_close_matches()
. Diese Funktion nimmt jedoch eine Liste von Möglichkeiten als Argument, und ich kann mir keine Möglichkeit vorstellen, sie in meiner Funktion korrekt zu verwenden. Jede Hilfe wäre willkommen.
Wie definieren Sie "am ähnlichsten"? –
Wenn du sagst, 'Jamie' ist der Schrank zu' Jimmy', du vergleichst die höchste Übereinstimmung jedes Charakters in beiden Strings oder hast eine andere Logik hinter dir? –
Suche nach "dynamic programming spell checker", vielleicht - das ist nur ein Satz von Regeln, und nicht unbedingt der beste. dh. vielleicht wäre es besser, die phonetische Entfernung zu benutzen? – user2864740