2016-06-13 4 views
0

Ich habe einen benutzerdefinierten NER-Klassifikator (Named Entity Recognition) und einen benutzerdefinierten RE-Klassifikator (Relationship Extraction) erstellt. In den Trainingsdaten für den RE habe ich ihm eine Menge von 10 Sätzen gegeben, in denen ich die genauen Entitäten und die Beziehung zwischen ihnen angegeben habe.Beziehungsextraktion (RE) mit Stanford-API

Wenn ich den Code ausführe, bekomme ich die richtigen Beziehungen für 6 von den 10 Sätzen. Ich bekomme jedoch nicht die richtige Beziehung in allen Sätzen. Ich wollte verstehen, warum der RE-Code nicht in der Lage ist, die richtigen Beziehungen in den Sätzen zu identifizieren, obwohl ich in den Trainingsdaten genau denselben Satz angegeben habe.

Zum Beispiel folgender Satz:

Ziel des Fonds ist unsere Mitglieder die bestmöglichen RetOue erreichen zu helfen.

In der Trainingsdaten, da die Beziehung

Fund RetOue

Im Folgenden sind alle RelationMentions im Satz gefunden bauen und es kann beween „Fund, dass die Beziehung zu sehen "und" RetOut "kommt als _NR und hat eine Wahrscheinlichkeit von (_NR, 0.6074190677382846) und die tatsächliche Relation (Build, 0.2265263651796966) hat eine geringere Wahrscheinlichkeit. Die zweite in der folgenden Liste:

RelationMention [type=_NR, start=1, end=9, {_NR, 0.8706606065870188; build, 0.04609463244214589; reply, 0.014127678851794745; cause, 0.01412618987143006; deliver, 0.014028667880335159; calculate, 0.014026673364224201; change, 0.013888249765034161; collaborate, 0.0130473} 
    EntityMention [type=RESOURCE, objectId=EntityMention-10, hstart=1, hend=2, estart=1, eend=2, headPosition=1, value="Fund", corefID=-1] 
    EntityMention [type=ROLE, objectId=EntityMention-11, hstart=8, hend=9, estart=8, eend=9, headPosition=8, value="members", corefID=-1] 
] 

RelationMention [type=_NR, start=1, end=14, {_NR, 0.6074190677382846; build, 0.26265263651796966; collaborate, 0.029635339573025835; reply, 0.020273680468829585; cause, 0.020270355199687763; change, 0.020143296854960534; calculate, 0.019807048865472295; deliver, 0.01979857478176975} 
    EntityMention [type=RESOURCE, objectId=EntityMention-10, hstart=1, hend=2, estart=1, eend=2, headPosition=1, value="Fund", corefID=-1] 
    EntityMention [type=RESOURCE, objectId=EntityMention-12, hstart=13, hend=14, estart=13, eend=14, headPosition=13, value="RetOue", corefID=-1] 
] 

RelationMention [type=_NR, start=1, end=9, {_NR, 0.9088620248226259; build, 0.029826907381364745; cause, 0.01048834533846858; reply, 0.010472406713467062; change, 0.010430417119225247; deliver, 0.010107963031033371; calculate, 0.010090071219976819; collaborate, 0.009721864373838134} 
    EntityMention [type=ROLE, objectId=EntityMention-11, hstart=8, hend=9, estart=8, eend=9, headPosition=8, value="members", corefID=-1] 
    EntityMention [type=RESOURCE, objectId=EntityMention-10, hstart=1, hend=2, estart=1, eend=2, headPosition=1, value="Fund", corefID=-1] 
] 

RelationMention [type=_NR, start=8, end=14, {_NR, 0.6412212367693484; build, 0.0795874107991397; deliver, 0.061375929752833555; calculate, 0.061195561682179045; cause, 0.03964100603702037; reply, 0.039577811103586304; change, 0.03870906323316812; collaborate, 0.038691980622724644} 
    EntityMention [type=ROLE, objectId=EntityMention-11, hstart=8, hend=9, estart=8, eend=9, headPosition=8, value="members", corefID=-1] 
    EntityMention [type=RESOURCE, objectId=EntityMention-12, hstart=13, hend=14, estart=13, eend=14, headPosition=13, value="RetOue", corefID=-1] 
] 

RelationMention [type=_NR, start=1, end=14, {_NR, 0.8650327055005457; build, 0.05264799740623545; collaborate, 0.01878896136615606; reply, 0.012762167223115933; cause, 0.01276049397449083; calculate, 0.012671777715382195; change, 0.012668721250994311; deliver, 0.012667175563079464} 
    EntityMention [type=RESOURCE, objectId=EntityMention-12, hstart=13, hend=14, estart=13, eend=14, headPosition=13, value="RetOue", corefID=-1] 
    EntityMention [type=RESOURCE, objectId=EntityMention-10, hstart=1, hend=2, estart=1, eend=2, headPosition=1, value="Fund", corefID=-1] 
] 

RelationMention [type=_NR, start=8, end=14, {_NR, 0.8687007489440899; cause, 0.019732766828364688; reply, 0.0197319383076219; change, 0.019585387681083893; collaborate, 0.019321463597270272; deliver, 0.018836262558606865; calculate, 0.018763499991179922; build, 0.015327932091782685} 
    EntityMention [type=RESOURCE, objectId=EntityMention-12, hstart=13, hend=14, estart=13, eend=14, headPosition=13, value="RetOue", corefID=-1] 
    EntityMention [type=ROLE, objectId=EntityMention-11, hstart=8, hend=9, estart=8, eend=9, headPosition=8, value="members", corefID=-1] 
] 

Ich wollte die Gründe verstehen, die ich für dieses beachten sollte.

Q.1 Meine Vermutung war, dass als Entitätstypen genau in der Beziehung wird dazu beitragen, erkannt zu werden genau erkannt zu werden. Ist es richtig?

Q.2 Wie kann ich meine Trainingsdaten verbessern, um sicherzustellen, dass ich die richtige Beziehung als Ergebnis habe?

Q.3 Ist es wichtig, wie viele Datensätze jedes Entity-Typs ich definiert habe? Soll ich für jeden Relationstyp die gleiche Anzahl von Definitionen pflegen? Zum Beispiel: In meinen Trainingsdaten, wenn ich 10 Beispiele der Beziehung "build" habe, soll ich dann 10 Relationen für jeden der anderen Beziehungstypen definieren, wie für "cause", "reply" usw.?

Q.4 Meine Annahme ist, dass die richtige NER Klassifizierung der Einheit einen Unterschied in der Beziehungsextraktions macht. Ist es richtig?

Antwort

0

Es gibt viele Funktionen, die von RE zur Verbesserung der Genauigkeit der Beziehung Klassifizierung, die im Detail analysiert werden müssen verwendet werden können.

Antworten auf meine Fragen: A.1. Ja, Entitätstypen werden genau erkannt und helfen, die Beziehung korrekt zu erkennen. A.2.Soweit ich weiß, müssen Trainingsdaten manuell kommentiert und verbessert werden. A.3. Soweit ich weiß, ist die Anzahl der zwischen den Entitäten definierten Datensätze von Bedeutung. A.4. Die NER-Genauigkeit macht einen Unterschied in der RE-Genauigkeit.

1

Ihre Annahmen, dass gute NER-Informationen helfen, sind richtig, aber die Chancen stehen gut, dass Sie mehr als 10 Trainingsbeispiele benötigen. Sie sollten mehr in Richtung von Tausenden von Beispielen denken, idealerweise Zehntausende von Beispielen.

Aber Sie sollten sich wahrscheinlich trotzdem das Training merken. Was sind deine Trainingsbeispiele? Verwenden Sie die Standardfunktionen?

+0

Vielen Dank für die Antwort. Ja, ich verwende die Standardfunktionen. Ich scannte durch die Funktionen und sah, dass es ziemlich viele Features gibt, die optimiert werden können. Ich war nicht in der Lage zu entscheiden, wie ich die Funktionen, die ich nehmen sollte, kurz aufzählen sollte. Ich wollte auch verstehen, wie die Wahrscheinlichkeit jeder Beziehung zwischen Entitäten berechnet wird. Alle Zeiger würden helfen. – Bonson