falls die zu analysierenden Befehle eingetippt werden kannst du für Zeit jedes Tippen eines (!) Buchstabens tausende bis Millionen Vergleiche machen,
das muss nicht kritisch sein
die Ähnlichkeit ist aber immer eine wackelige Sache,
ein nicht ganz so gutes, aber grob das Problem darstellendes Beispiel:
‚play card 1 on target 1‘ könnte zu einem Referenzstring ‚sell card 1 on target 1‘ ähnlicher sein als zu Referenzstring ‚play card 1 on 1‘
(wobei hier unwahrscheinlich dass der eine Referenzstring target verwendet, der andere nicht…)
für mehr Sicherheit wie auch deine gewünschte Beschleunigung Gedanke:
kann man sagen dass der erste Begriff als Kommando erhöhte Bedeutung hat, dass der wohl immer richtig eingetippt wird?
dann könnte man diesem ersten Wort entsprechend deutlich verwenden, das ‚play‘ extrahieren und in Datenstrukturen nachschauen,
welche Befehle auch mit ‚play‘ anfangen, vielleicht nur einer oder ein paar zum Stringvergleich
oder etwas allgemeiner könntest du alle wichtigen Begriffe wie ‚play‘ und ‚card‘, ‚target‘ aus den Referenzstrings extrahieren
und denen als Tags zuordnen,
außerdem andersrum zu allen einzelnen Tags eine Liste von Befehlen verwalten die sie enthalten
die Auswertung einer Eingabe ist dann auch wiederum Extrahieren von Tags und Kombination derselben zu wenigen übrigbleibenden Befehlen
evtl. diese Tags bewerten, ‚play‘ und ‚card‘ sind so wichtig dass sie unbedingt vorkommen müssen, ‚target‘ darf fehlen usw.,
oder auch einem Referenzbefehl „play card 1 on target 1“ (bzw. allen Befehlen der zugeordneten Kategorie ‚x auf y‘)
sematisch zuordnen dass auch ‚and‘ ein passender Tag ist,
so dass für eine Eingabe mit ‚and‘ der Referenzbefehl auch eine etwas höhere Bewertung bekommt, obwohl der gar nicht ‚and‘ enthält
denkbar, die Referenz schlicht nur noch ‚play card‘ zu benennen, oder überhaupt nur noch ein Befehl-Objekt/ Enum-Wert ohne echten String,
aber zugeordnete Hauptschlagwörter ‚play‘ und ‚card‘ sowie durch die manuelle Kategorie ‚x auf y‘ lauter übliche Verdächtige wie ‚on‘, ‚and‘, ‚target‘,
gar zwei Zahlen verlangen, was man auch wieder prüfen könnte
je weiter ich schreibe, desto mehr entfernt sich das vom ursprünglichen Gedanken der Referenzstrings,
desto komplizierter und mehr Arbeit
aber so genauer wird es evtl.,
wirklich eindeutig wird es aber nie, egal wieviel Aufwand man betreibt, wenn ‚play sell card‘ eingetippt wird dann aufgeschmissen