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?
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