2017-03-01 5 views
1

Ich möchte aufeinander folgende Tokens mit der gleichen benannten Entity Annotation (sagen wir, STANFORD UNIVERSITY, wo beide Token "Stanford" und "Universität" haben NE "ORGANISATION") zu einem einzigen Token, so dass ich gerade "STANFORD UNIVERSITY" mit NE "ORGANISATION". Gibt es eine Möglichkeit, das mit Tokens Regex zu tun? SoGibt es eine Möglichkeit, mehrere Token mit TokensRegex zu Token zu kombinieren?

, das ist wirklich eine zweiteilige Frage:

1) Wie würden Sie das Muster für eine ununterbrochene Folge von Token mit dem gleichen NER schreiben?

2) Wie würden Sie die Aktion schreiben, um erfasste Token zu einem zu kombinieren (im Grunde genommen das Gegenteil der Split-Funktion)?

Danke!

Antwort

1

Sie möchten den Annotator entitymentions verwenden, der dies für Sie erledigt und vollständige Entitäten aus dem Text extrahiert.

Beispielcode:

package edu.stanford.nlp.examples; 

import edu.stanford.nlp.pipeline.*; 
import edu.stanford.nlp.ling.*; 
import edu.stanford.nlp.util.*; 

import java.util.*; 

public class EntityMentionsExample { 

    public static void main(String[] args) { 
    Annotation document = 
     new Annotation("John Smith visted Los Angeles on Tuesday."); 
    Properties props = new Properties(); 
    props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,entitymentions"); 
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 
    pipeline.annotate(document); 

    for (CoreMap entityMention : document.get(CoreAnnotations.MentionsAnnotation.class)) { 
     System.out.println(entityMention); 
    } 
    } 
} 
Verwandte Themen