Ich habe eine Datei mit Namen und möchte darin suchen, ohne mich zu sehr darum zu kümmern, ob ich den Namen (nach dem ich suche) richtig geschrieben habe. Ich weiß, dass grep
es eine ganze Reihe von Funktionen gibt, um nach einer ganzen Reihe ähnlicher Zeichenfolgen in einer Datei oder einem Stream zu suchen, aber meines Wissens verfügt es nicht über Funktionen, um Rechtschreibfehler zu korrigieren, und selbst wenn dies der Fall ist, seitdem Dies sind Namen von Personen, die in einem Standardwörterbuch nicht enthalten sind.
Vielleicht kann ich meine Namensdatei in ein spezielles Wörterbuch umwandeln und dann ein Standardwerkzeug zur Rechtschreibprüfung verwenden? Von besonderer Bedeutung in dieser Anwendung ist die Fähigkeit, ähnlich klingende Wörter zu finden.
Zum Beispiel: "jacob"
sollte zurückkehren "Jakob"
. Noch besser wäre es, wenn auch sprachübergreifende Ähnlichkeiten berücksichtigt würden, so dass dies "miguel"
übereinstimmen sollte "Michael"
.
Ist dies etwas, das bereits implementiert wurde, oder muss ich mein eigenes bauen?
quelle
agrep
für ungefähregrep
(nicht für Ton / Sprache). Auch beimzsh
Pattern Matching(#a3)
können bis zu 3 Fehler zugelassen werden.Text::Soundex
perl
Antworten:
@manatwork hat es richtig, Soundex ist wahrscheinlich das Werkzeug, das Sie suchen.
Installieren Sie das Perl-Soundex-Modul mit CPAN:
Machen Sie eine Datei voller Namen zum Testen aufgerufen
names.txt
Nun das Perl-Skript zur Verwendung des Soundex-Moduls,
soundslike.pl
Machen Sie es ausführbar und führen Sie einige Beispiele aus:
quelle