2017-02-19 5 views
2

Ich möchte Orte aus verschiedenen Sätzen von Benutzern mit Hilfe von SpaCy extrahieren (zum Beispiel, wenn der Benutzer "New York New Orleans "Ich bekomme die beiden Locations" New York "und" New Orleans "raus. Da SpaCy die sehr praktische Möglichkeit bietet, spezielle Fälle seinem Tokenizer hinzuzufügen, habe ich versucht, sie für verschiedene Orte zu verwenden (wie in der Dokumentation here beschrieben). Solange die Orte nur aus einem Wort bestehen, funktioniert alles gut. Aber sobald die Orte aus zwei oder mehr Wörtern bestehen (wie die oben erwähnten Beispiele von "New York", "New Orleans" und viele mehr), werden die Sonderfälle nicht mehr korrekt behandelt.
Ich denke, dies ist aufgrund der Tatsache, dass die Sonderfälle nur behandelt werden nach der Text in Token aufgeteilt ist (der Text ist auf jeden leeren Raum aufgeteilt, wie beschrieben here). Dies würde bedeuten, dass SpaCy den Text teilt, etwa "New York New Orleans" in die Token "New" "York" "New" "Orleans" und später keinen Sonderfall auf einem der Token finden kann.SpaCy: Hinzufügen Tokenizer Sonderfall für Adressen (Orte), bestehend aus mehr als einem Wort

Also meine Frage ist wie folgt: Gibt es eine Möglichkeit, dass ich Sonderfälle hinzufügen kann, die aus zwei Wörtern bestehen, so dass SpaCy sie richtig tokenisiert? Um bei dem Beispiel zu bleiben, dass "New York New Orleans" als die beiden Orte "New York" und "New Orleans" anerkannt wird - da ich für jeden einen besonderen Fall hinzugefügt habe.
Oder gibt es eine andere Best Practice (die ich vielleicht verpasst habe), um dies zu erreichen?

Antwort

0

Ich verwendete Entity Recognition von spacy? Sie können das Label gleich GPE später filtern, wenn Sie Entity-Erkennung durchführen.

Der Ausgang ist

('GPE', 'New York') 
('GPE', 'New Orleans') 
+0

Vielen Dank für Ihre Antwort! Ich hätte erwähnen sollen, dass ich mit dem deutschen Sprachmodell arbeite. Entschuldigung, das war meine Schuld. Ich habe das Beispiel benutzt, denn wenn das deutsche Modell verwendet wird, kann SpaCy die beiden Orte in "New York New Orleans" nicht erkennen (obwohl es die Orte korrekt erkennt, wie Sie es mit dem englischen Modell angegeben haben). Ich denke, SpaCy kann nur wichtige Orte erkennen. Wenn ich das englische Modell am Beispiel von "Carson City Santa Rosa" versuche, erkennt es "ORG" "Carson City Santa Rosa". – jfrehner

+0

Ja, in diesem Fall kann spacy nur die Position erkennen, wenn Sie Text mit Komma haben: doc = nlp ("Carson City, Santa Rosa"). Dieser wird GPE für jedes Wort geben – titipata

Verwandte Themen