Brauchen Sie eine gute Beziehung Extraktor

8

Ich mache ein NLP-Projekt.

Der Zweck des Projekts besteht darin, eine mögliche Beziehung zwischen zwei Dingen zu extrahieren. Für ein Paar "Standort" und "Person" wären die extrahierten Ergebnisse beispielsweise "in der Nähe", "lebt in", "arbeitet in" usw.

Gibt es dafür ein NLP-Tool?

    
Yangrui 21.12.2014, 10:57
quelle

3 Antworten

12

Es gibt ein paar verschiedene Werkzeuge, die Sie sich ansehen sollten:

MITIE

MITs neues MITIE Tool unterstützt die grundlegende Extraktion von Beziehungen. In der Verteilung enthalten sind 21 englische binäre Relationsextraktionsmodelle, die auf einer Kombination von Wikipedia- und Freebase-Daten trainiert wurden. Sie können auch eigene benutzerdefinierte Beziehungsdetektoren trainieren. Hier ist eine Auflistung des Verzeichnisses MITIE / MITIE-models / english / binary_relations /, das heruntergeladen wird, wenn Sie das make MITIE-models -Ziel während des Build-Prozesses ausführen (die Namen sollten relativ selbsterklärend sein):

  • rel_classifier_book.written_work.author.svm
  • rel_classifier_film.film.directed_by.svm
  • rel_classifier_influence.influence_node.influenced_by.svm
  • rel_classifier_law.inventor.inventions.svm
  • rel_classifier_location.location.contains.svm
  • rel_classifier_location.location.nearby_airports.svm
  • rel_classifier_location.location.partial_contains.svm
  • rel_classifier_organization.organization.place_founded.svm
  • rel_classifier_organization.organization_founder.organizations_founded.svm
  • rel_classifier_organization.organization_scope.organizations_with_this_scope.svm
  • rel_classifier_people.deceased_person.place_of_death.svm
  • rel_classifier_people.ethnicity.geographic_distribution.svm
  • rel_classifier_people.person.ethnicity.svm
  • rel_classifier_people.person.nationality.svm
  • rel_classifier_people.person.parents.svm
  • rel_classifier_people.person.place_of_birth.svm
  • rel_classifier_people.person.religion.svm
  • rel_classifier_people.place_of_interment.interred_here.svm
  • rel_classifier_time.event.includes_event.svm
  • rel_classifier_time.event.locations.svm
  • rel_classifier_time.event.people_involved.svm

OpenIE

OpenIE von der Univ of Washington wird Beziehungen aus dem Text extrahieren und die Ausgabe als Tripel darstellen die Form von (Arg1, Arg2, Relation) . Zum Beispiel angesichts des eingegebenen Satzes:

  

Der US-Präsident Barack Obama hat am Dienstag seine Rede vor Tausenden von Menschen gehalten.

OpenIE extrahiert diese binären Beziehungen:

  • (Barack Obama, ist der Präsident der USA.)
  • (Barack Obama, gab, seine Rede)
  • (Barack Obama, hielt seine Rede am Dienstag)
  • (Barack Obama, hielt seine Rede vor Tausenden von Menschen)

Hinweis: OpenIE verwendet eine nicht standardmäßige Open-Source-Lizenz , die die kommerzielle Nutzung ausdrücklich untersagt .

Stanford Relation Extractor

Der Stanford Relation Extractor extrahiert die Relationen Live_In, Located_In, OrgBased_In und Work_For . Wenn Sie einen anderen Beziehungssatz verwenden möchten, können Sie Ihren eigenen Relationsextraktor mithilfe des Codes (Details auf der Webseite) trainieren.

Wenn Sie grundlegende Abhängigkeiten haben möchten, können Sie auch den Stanford Dependency Parser verwenden:

Der Stanford Dependency Parser (Teil des Stanford Parser) wird dies tun extrahiert grammatische Beziehungen zwischen Wörtern in einem Satz. Zum Beispiel, mit dieser Eingabe:

  

Bills auf Häfen und Einwanderung wurden eingereicht von Senator Brownback, Republikaner von Kansas

Der Stanford-Parser extrahiert diese grammatischen Abhängigkeiten:

  • nsubjpass (eingereicht, Rechnungen)
  • auxpass (eingereicht, waren)
  • Agent (eingereicht, Brownback)
  • nn (Braunrücken, Senator)
  • appos (Brownback, Republikaner)
  • prep_of (Republikaner, Kansas)
  • prep_on (Rechnungen, Ports)
  • conj_and (Häfen, Einwanderung)
  • prep_on (Rechnungen, Einwanderung)

GATE

GATE von der Univ of Sheffield enthält auch eine Relationsextraktionsfähigkeit, obwohl ich sie noch nie benutzt habe es selbst. Diese Präsentation bietet einen Überblick über die Funktionsweise: Ссылка

    
Charlie Greenbacker 21.12.2014, 17:02
quelle
4

Der MIML-RE Relation Extractor ( Ссылка ) könnte auch nützlich sein, wenn Sie nach einem suchen der Beziehungen in der KBP-Beziehung festgelegt (siehe Ссылка ). Zugegebenermaßen ist dies ein viel größeres System, das mehr Mühe bereitet als der Annotator "relation" in CoreNLP.

Der einfachste Weg, um mit dieser Option zu beginnen, ist Ссылка (stellen Sie sicher, dass Sie auch die Modelle sowie alle Abhängigkeiten herunterladen). Von dort gibt es eine Reihe relativ niedriger Einstiegsmethoden in SlotfillingTasks (zB getSlotsInSentence() erhält alle Relationen für eine gegebene Entität, oder classifyRelation() klassifiziert die Relation zwischen zwei Entitäten in einem Satz).

    
Gabor Angeli 23.12.2014 01:30
quelle
2

Sie können auch einen Blick auf ReVerb werfen. Es führt die Open Information Extraction durch, dh Sie müssen den Typ der zu extrahierenden Beziehungen nicht angeben. Es identifiziert und extrahiert automatisch alle Arten von Verb-vermittelten Beziehungen zwischen zwei Substantiven / Substantiven.

Es basiert auf einfachen Regeln für Wortart-Tags und ist daher extrem schnell, das heißt im Vergleich zu anderen Systemen, die auf syntaktischem Parsen beruhen.

Der Code ist hier

verfügbar

UPDATE: Ich habe in einem Blogpost geschrieben, wie man ReVerb PoS-Muster benutzt, um relationale Tripel aus Nachrichtenartikeln zu extrahieren:

Ссылка

    
David Batista 25.12.2014 21:41
quelle

Tags und Links