2016-06-30 5 views
4

Zuerst ein wenig Kontext: Ich versuche, Straßenadressen in einem Korpus von Dokumenten zu identifizieren, und wir beschlossen, dass die offensichtliche Lösung hierfür wäre eine NLP (Apache OpenNLP in diese verwenden Case) Tool, um dies zu erreichen und bisher sieht alles gut aus, obwohl wir das Modell noch mit vielen Dokumenten trainieren müssen, aber das ist nicht wirklich ein Problem. Wir haben die Lösung verbessert, indem wir einen zusätzlichen Schritt für die Adressvalidierung hinzugefügt haben, indem wir den Parser USAddress von Datamade verwendet haben. Mein größtes Problem ist die Tatsache, dass die Adressen für sich nichts sind ohne einen Ort neben ihnen, manchmal wird der Ort im Text angegeben und wir werden davon ausgehen, dass dies oft passiert.Verknüpfen von mehreren Entitäten Name Finder mit OpenNLP

Hier kommt meine Frage: Gibt es eine Möglichkeit, Koreferenz zu verwenden, um die Entitäten in den Text zu verbinden? Oder besser noch: Gibt es eine Möglichkeit, willkürliche Wörter im Text zu kommentieren und sie als eine Einheit zu identifizieren?

Ich habe an der Apache OpenNLP Dokumentation suchen, aber ... es ist ziemlich dünn und ich denke, es braucht noch etwas Arbeit.

+0

Was meinst du mit "Standort"? Was ist ein Beispiel für eine Adresse mit einem verknüpften Standort? – fgregg

+0

Nehmen wir zum Beispiel diesen Satz: "Die Gemeinde befindet sich in ** 909 West Temple St. ** in dem entwicklungsintensiven Civic Center Teilmarkt von ** Los Angeles **, die Gemeinschaft beläuft sich auf 526 Einheiten." in diesem Fall wäre Los Angeles der Ort. –

+0

Also "Los Angeles" ist ein "Ort"? – fgregg

Antwort

0

Ok, einige Monate später! Es war nicht Coref was ich suchte ... was ich eigentlich suchte war Relation Extraction (Information Extraction). Ich benutzte MITIE (BinaryRelation) und das hat den Trick gemacht, ich trainierte mein eigenes Modell mit dem Brat Annotation Tool und ich bekam einen F1 Score von 0.81. Ziemlich ordentlich ...

0

OpenNLP bietet keine Koreferenz Auflösung Modul.
Sie müssen entweder Stanford oder Illinois oder Berkeley System verwenden, um die Aufgabe zu erfüllen. Es kann sein, dass sie nicht funktionieren, Sie müssen möglicherweise einige Parameter tunen oder beaufsichtigtes Training durchführen, um eine angemessene Leistung zu erzielen.

@edit
Dank @Alaye für den Hinweis auf, dass OpenNLP einen HZVref Modul verfügt, um weitere Informationen zu seiner Antwort zu sehen.

Dank

+1

opennlp hat Coreference-Auflösung, beziehen Sie sich darauf [Blog] (http://blog.dpdearing.com/2012/11/making-coreference-resolution-with-open-nlp-1-5-0-your-bitch/) – Nuwanda

1

Wenn Sie Koreferenz für dieses Problem verwenden möchten, können Sie einen Blick auf diese blog

aber eine einfachere Lösung wäre mit einem Satz Detektor + RegEx oder einen Ort NER + Satz Detektor haben kann (Angenommen, Adressen sind in einer einzigen Zeile)

Ich denke, die US-Adressen können mit einem regulären Ausdruck identifiziert werden und sobald die Regex übereinstimmt, können Sie Opennlp Satzdetektor verwenden, um die gesamte Adresszeile zu drucken.

Ebenso können Sie NER Modell von opennlp bereitgestellt verwenden Orte zu finden und den Satz drucken Sie wollen.

Hoffe, das hilft!

bearbeiten

diese Github Repo machte es für uns einfach. Hör zu!

+0

Wir Ich kann die Adresse bereits identifizieren und wir identifizieren auch Orte (via Clavin). Die Sache ist, dass ich eine Adresse mit einem Ort verbinden muss. Eine einfache Lösung wäre, Adressen und Standorte zu mischen und abzugleichen und sie zusammen zu geocodieren, was jedoch zu falschen Ergebnissen führen könnte. –

+0

hat die Adresse einen PIN-Code? Sie können die Lage von diesem Recht bekommen ?? – Nuwanda

+0

Nicht sicher, dass ich verstehe ... –

Verwandte Themen