Einer meiner Hauptprobleme ist das Verständnis von Namen und das Zusammensetzen von Hausnamen & amp; Titel. Ich habe eine 80% ige Lösung mit einer ziemlich großen Regex, die ich heute Morgen zusammengestellt habe, auf die ich wahrscheinlich nicht stolz sein sollte (aber irgendwie krank bin), die den folgenden Beispielen richtig entspricht:
%Vor%Der Regex-Matcher sieht so aus:
%Vor%(wtf richtig?)
Aus praktischen Gründen: Ссылка
Also, für das Beispiel:
%Vor%Die Regex ergibt ein Gruppendiktat, das wie folgt aussieht:
%Vor%Ich brauche Hilfe bei dem letzten Schritt, der mich aufgestört hat, mögliche Nebennamen zu verstehen.
Beispiele umfassen:
%Vor%Ist das möglich und gibt es einen besseren Weg, dies ohne maschinelles Lernen zu tun? Vielleicht kann ich namesparser (entdeckt, nachdem ich in das Regex-Kaninchenloch gegangen bin) statt dessen benutzen, um festzustellen, ob es da ist oder nicht sind mehrere Namen? Das oben genannte entspricht 99,9% meiner Fälle, so dass ich denke, es lohnt sich zu beenden.
TLDR : Ich kann nicht herausfinden, ob ich eine Art Lookahead oder Lookbehind verwenden kann, um sicherzustellen, dass der mögliche zweite Vorname nur dann passt, wenn Es gibt einen Nachnamen danach.
Hinweis: Ich muss keine Titel wie Mrs. Mrs Ms. usw. parsen, aber ich nehme an, dass das auf die gleiche Weise wie die Vornamen hinzugefügt werden kann.
Lösungshinweise : Befolgen Sie zuerst Richards Ratschlag und tun Sie dies nicht. Zweitens, untersuchen Sie NLTK oder verwenden Sie / tragen Sie namesparser bei Bedarf für eine stabilere Lösung ein.
Reguläre Ausdrücke wie diese sind die Arbeit des Dunklen.
Wer kann, wenn er später auf Ihren Code schaut, verstehen, was vor sich geht? Werden Sie auch?
Wie werden Sie alle möglichen Kantenfälle testen?
Warum haben Sie überhaupt einen regulären Ausdruck gewählt? Wenn das Werkzeug, mit dem Sie arbeiten, so schwierig zu bearbeiten ist, schlägt es vor, dass ein anderes Werkzeug besser wäre.
Versuchen Sie Folgendes:
%Vor%Ausgabe:
%Vor%Dies dauerte weniger als fünfzehn Minuten und in jeder Phase ist die Logik klar und das Programm kann in Teilen debugged werden. Während One-Liner süß sind, sollten Klarheit und Testbarkeit Vorrang haben.
Tags und Links python parsing regex string-parsing