2016-06-17 2 views
4

Ich verwende den StanfordCoreNLPServer einige Informationen aus Text (wie Oberflächen, Straßennamen)Haben sowohl NER und RegexNER Tags in StanfordCoreNLPServer Ausgabe?

die Straße von einem speziell ausgebildeten NER-Modell gegeben ist, und die Oberfläche über die RegexNER durch eine einfache regex zu extrahieren.

Jeder von ihnen funktioniert getrennt, aber wenn zusammen verwendet, ist nur das NER-Ergebnis in der Ausgabe unter dem ner Tag. Warum gibt es kein regexner Tag? Gibt es eine Möglichkeit, auch das RegexNER-Ergebnis zu erhalten?

Informationen:

  • StanfordCoreNLP v3.6.0

  • die URL verwendet:

    'http://127.0.0.1:9000/' 
    '?properties={"annotators":"tokenize,ssplit,pos,ner,regexner", ' 
    '"pos.model":"edu/stanford/nlp/models/pos-tagger/french/french.tagger",' 
    '"tokenize.language":"fr",' 
    '"ner.model":"ner-model.ser.gz", ' # custom NER model with STREET labels 
    '"regexner.mapping":"rules.tsv", ' # SURFACE label 
    '"outputFormat": "json"}' 
    

    als here vorgeschlagen, die regexner annotator ist nach die ner, aber immer noch ...

  • Der Stromausgang (Auszug):

    {u'index': 4, u'word': u'dans', u'lemma': u'dans', u'pos': u'P', u'characterOffsetEnd': 12, u'characterOffsetBegin': 8, u'originalText': u'dans', u'ner': u'O'} 
    {u'index': 5, u'word': u'la', u'lemma': u'la', u'pos': u'DET', u'characterOffsetEnd': 15, u'characterOffsetBegin': 13, u'originalText': u'la', u'ner': u'O'} 
    {u'index': 6, u'word': u'rue', u'lemma': u'rue', u'pos': u'NC', u'characterOffsetEnd': 19, u'characterOffsetBegin': 16, u'originalText': u'rue', u'ner': u'STREET'} 
    {u'index': 7, u'word': u'du', u'lemma': u'du', u'pos': u'P', u'characterOffsetEnd': 22, u'characterOffsetBegin': 20, u'originalText': u'du', u'ner': u'STREET'} 
    [...] 
    {u'index': 43, u'word': u'165', u'lemma': u'165', u'normalizedNER': u'165.0', u'pos': u'DET', u'characterOffsetEnd': 196, u'characterOffsetBegin': 193, u'originalText': u'165', u'ner': u'NUMBER'} 
    {u'index': 44, u'word': u'm', u'lemma': u'm', u'pos': u'NC', u'characterOffsetEnd': 198, u'characterOffsetBegin': 197, u'originalText': u'm', u'ner': u'O'} 
    {u'index': 45, u'word': u'2', u'lemma': u'2', u'normalizedNER': u'2.0', u'pos': u'ADJ', u'characterOffsetEnd': 199, u'characterOffsetBegin': 198, u'originalText': u'2', u'ner': u'NUMBER'} 
    
  • Erwartete Ausgabe: Ich möchte die letzten drei Elemente mit SURFACE, dh das RegexNER Ergebnis gekennzeichnet werden.

Lassen Sie mich wissen, wenn weitere Details benötigt werden.

Antwort

3

Ok, scheinen die Dinge wie ich, wenn ich die regexner die erste Stelle setzen will zu arbeiten: an einem gewissen Stadium des Prozesses

"annotators":"regexner,tokenize,ssplit,pos,ner", 

scheint, gibt es eine Ordnung Problem?

+0

Sind Sie sicher, dass die obige Zeile ohne Fehler ausgeführt wird? –

+0

Ja, tut es mit dem Setup in der Frage beschrieben. – stellasia

+0

Wenn ich den Code mit der Annotator-Reihenfolge ausführen, die Sie in der Antwort erwähnen, gibt es "Annotator" Regexner "erfordert Annotator" tokenize "" –

2

Hier ist, was die RegexNER documentation sagt dazu:

RegexNER wird eine bestehende Einheit Zuordnung nicht überschreiben, sofern Sie es nicht die Erlaubnis in einem dritten Tab-separierte Spalte geben, die eine durch Kommata getrennte Liste von Objekttypen enthält das kann überschrieben werden. Nur das O-Label ohne Entity kann immer überschrieben werden. Sie können jedoch zusätzliche Entity-Tags angeben, die immer überschrieben werden können.

Bachelor of (Arts | Gesetze | Wissenschaft | Ingenieurwesen | Divinity) GRAD

Lalor LOCATION PERSON

Arbeitsorganisation

Ich bin nicht sicher, was Ihre Mapping-Datei sieht genau so aus, aber wenn es Entitäten nur Labels zuordnet, beschriftet der ursprüngliche NER Ihre Entitäten als NUMMER, und RegexNER kann sie nicht überschreiben. Wenn Sie explizit deklarieren, dass einige NUMBER-Objekte in Ihrer Zuordnungsdatei als OBERFLÄCHE überschrieben werden sollen, sollte es funktionieren.

Verwandte Themen