Überprüfen Sie, ob eine Zeichenfolge eine mögliche Abkürzung für einen Namen ist

8

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.

    
Björn Lindqvist 07.09.2011, 09:20
quelle

5 Antworten

8

Dies besteht alle Tests einschließlich einiger extra, die ich erstellt habe. Es verwendet Rekursion. Hier sind die Regeln, die ich verwendet habe:

  • Der erste Buchstabe der Abkürzung muss mit dem ersten Buchstaben von der Text
  • Der Rest der Abkürzung (das Kürzel abzüglich des ersten Buchstabens) muss eine Abkürzung für:

    sein
    • die restlichen Wörter oder
    • der verbleibende Text ab jede Position im ersten Wort.
%Vor%     
unutbu 07.09.2011, 09:28
quelle
4

Hier 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%     
Michael Brennan 07.09.2011 10:05
quelle
4

@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).

%Vor%

Sie müssen Ihre Logik definieren, Sie können die Abkürzung nicht blind finden.

    
Aamir Adnan 07.09.2011 10:28
quelle
0

Ihr Algorithmus scheint einfach zu sein - die Abkürzung ist die Verkettung aller Großbuchstaben. Also:

%Vor%     
Dominik 07.09.2011 09:28
quelle
0

Das könnte gut genug sein.

%Vor%     
Juho 07.09.2011 09:30
quelle