3 Stimmen

Wie man den Unterschied zwischen ' als Abkürzungszeichen und als Anführungszeichen erkennt

Ich versuche, Textblöcke zu analysieren, und brauche eine Möglichkeit, den Unterschied zwischen Apostrophen in verschiedenen Kontexten zu erkennen. Besitz und Abkürzung in einer Gruppe, Zitate in der anderen.

z.B.

"Ich bin der Besitzer der Autos" -> ["Ich bin", "der", "Autos'","Besitzer"]

aber

"Er sagte 'Hallo' " -> ["Er","sagte"," 'Hallo' "]

Das Erkennen von Leerzeichen auf beiden Seiten wird nicht helfen, da Dinge wie " 'ello " und " Autos' " als ein Ende eines Zitats interpretiert würden, genauso wie passende Paare von Apostrophen. Ich habe das Gefühl, dass es keinen anderen Weg gibt, dies zu tun, als eine extrem komplizierte NLP-Lösung zu verwenden und ich werde wohl einfach alle Apostrophe ignorieren müssen, die nicht in der Mitte eines Wortes auftreten, was bedauerlich wäre.

BEARBEITEN:

Seitdem ich das geschrieben habe, habe ich erkannt, dass dies unmöglich ist. Jeder auf Regex basierende Parser müsste Folgendes analysieren:

'ello meine Kameraden' Hunde

auf 2 verschiedene Arten und könnte dies nur mit dem Verständnis des restlichen Satzes tun. Ich werde wohl die unelegante Lösung wählen, den unwahrscheinlichsten Fall zu ignorieren und hoffen, dass er selten genug ist, um nur selten Anomalien zu verursachen.

0voto

Michael Kohl Punkte 64654

Hm, Ich fürchte, das wird nicht einfach sein. Hier ist ein Regex, der irgendwie funktioniert, leider nur für Dinge wie "Ich bin" und "Ich habe":

>> s1 =~ /[\w\s]*((? nil
>> s2 =~ /[\w\s]*((? 0
>> $1
=> "'hallo da'"

Wenn du ein wenig damit herumspielst, könntest du vielleicht einige andere häufige Kontraktionen eliminieren, was immer noch besser sein könnte als nichts.

0voto

Finbarr Punkte 29720

Einige Regeln, über die man nachdenken sollte:

  • Zitate beginnen mit einem Apostroph mit einem Leerzeichen oder nichts davor.
  • Zitate enden mit einem Apostroph mit Satzzeichen oder einem Leerzeichen danach.
  • Einige Wörter können wie das Ende von Zitaten aussehen, z.B. Leute'.
  • Die Anführungsapostrophe haben niemals Buchstaben direkt davor und danach.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X