2015-04-08 2 views
0

Есть ли способ обработать уже помеченный POS-текст с помощью Stanford CoreNLP?Форсирование тегов POS в Stanford CoreNLP

К примеру, у меня есть предложение в этом формате

They_PRP are_VBP hunting_VBG dogs_NNS ._. 

, и я хотел бы пояснение леммы нера, разобрать и т.д., заставляя данную POS аннотации.

Обновление. Я пробовал этот код, но он не работает.

Properties props = new Properties(); 
props.setProperty("annotators", "tokenize, ssplit, pos, lemma"); 

StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 
String sentText = "They_PRP are_VBP hunting_VBG dogs_NNS ._."; 
List<CoreLabel> sentence = new ArrayList<>(); 

String[] parts = sentText.split("\\s"); 
for (String p : parts) { 
    String[] split = p.split("_"); 
    CoreLabel clToken = new CoreLabel(); 
    clToken.setValue(split[0]); 
    clToken.setWord(split[0]); 
    clToken.setOriginalText(split[0]); 
    clToken.set(CoreAnnotations.PartOfSpeechAnnotation.class, split[1]); 
    sentence.add(clToken); 
} 
Annotation s = new Annotation(sentText); 
s.set(CoreAnnotations.TokensAnnotation.class, sentence); 

Annotation document = new Annotation(s); 
pipeline.annotate(document); 
+0

Я пробовал решения, размещенные [здесь] (http://stackoverflow.com/questions/26245422/stanford-corenlp-use-partial-existing-annotation?rq=1), но когда я выполняю 'pipe.nnote (документ); теги POS изменились. –

+0

Что значит «это не работает»? –

+0

Если я правильно помню, аннотатор 'parse' может изменить часть речевых аннотаций. Сохраняется ли проблема при удалении аннотатора синтаксического анализа? –

ответ

0

В POS аннотации, безусловно, будут заменены, если вы включите pos аннотатора в трубопроводе.

Вместо этого удалите аннотатор pos и добавьте опцию -enforceRequirements false. Это позволит работать в трубопроводе, даже если аннотатор, который lemma и т. Д. Зависит от (аннотатор pos), отсутствует. Добавьте следующую строку до трубопровода конкретизации:

props.setProperty("enforceRequirements", "false"); 

Конечно, поведение не определенно, если предприятие в эту область, не устанавливая соответствующие аннотации, поэтому убедитесь, что вы подходите аннотации, сделанные соответствующим комментатор (POSTaggerAnnotator в этом случае).

+0

Это звучит Хорошо: как я могу установить такой параметр с помощью CoreNLP внутри Java-проекта? –

+0

Обновлен мой ответ. –