Ich versuche, einen Python-Algorithmus zu entwickeln, um zu überprüfen, ob eine Zeichenfolge eine Abkürzung für ein anderes Wort sein kann. Zum Beispiel
fck
ist eine Übereinstimmung für fc kopenhavn
, weil es mit den ersten Zeichen des Wortes übereinstimmt. fhk
würde nicht übereinstimmen. fco
sollte nicht mit fc kopenhavn
übereinstimmen, weil niemand den FC Kopenhavn als FCO abkürzen würde. irl
ist eine Übereinstimmung für in real life
. ifk
ist eine Übereinstimmung für ifk goteborg
. aik
ist eine Übereinstimmung für allmanna idrottskluben
. aid
ist eine Übereinstimmung für allmanna idrottsklubben
. Dies ist kein wirklicher Name für das Team, aber ich denke, es ist schwierig, es auszuschließen, wenn Sie nicht domänenspezifisches Wissen darüber anwenden, wie schwedische Abkürzungen gebildet werden. manu
ist eine Übereinstimmung für manchester united
. Es ist schwer, die genauen Regeln des Algorithmus zu beschreiben, aber ich hoffe, dass meine Beispiele zeigen, wonach ich suche.
Update Ich habe einen Fehler gemacht, als ich die Strings mit den passenden Buchstaben in Großbuchstaben gezeigt habe. Im realen Szenario sind alle Buchstaben Kleinbuchstaben, so dass es nicht so einfach ist, nur zu prüfen, welche Buchstaben in Großbuchstaben geschrieben sind.
Dies besteht alle Tests einschließlich einiger extra, die ich erstellt habe. Es verwendet Rekursion. Hier sind die Regeln, die ich verwendet habe:
Der Rest der Abkürzung (das Kürzel abzüglich des ersten Buchstabens) muss eine Abkürzung für:
seinHier ist ein Weg, um das zu erreichen, was Sie anscheinend tun möchten
%Vor%Das Caret stellt sicher, dass das erste Zeichen der Abkürzung mit dem ersten Zeichen des Wortes übereinstimmt, das sollte für die meisten Abkürzungen gelten.
Bearbeiten :
Dein neues Update hat die Regeln ein wenig verändert. Wenn Sie "(|.*\s)"
anstelle von ".*"
verwenden, stimmen die Zeichen in der Abkürzung nur überein, wenn sie nebeneinander liegen oder wenn das nächste Zeichen am Anfang eines neuen Wortes erscheint.
Dies stimmt fck
mit FC Kopenhavn
überein, aber fco
nicht.
Die Übereinstimmung von aik
mit allmanna idrottskluben
wird jedoch nicht funktionieren, da dies Kenntnisse der schwedischen Sprache erfordert und nicht so trivial ist.
Hier ist der neue Code mit der kleinen Änderung
%Vor% @Ocaso Protal
sagte in Kommentar how should you decide that aik is valid, but aid is not valid?
und er hat recht.
Der Algo, der mir einfiel, ist die Arbeit mit word threshold
(Anzahl der Wörter getrennt durch Leerzeichen).
Sie müssen Ihre Logik definieren, Sie können die Abkürzung nicht blind finden.
Tags und Links python text-analysis string-matching slug abbreviation