2016-03-06 3 views
0

Я пытаюсь использовать CoreNLP и хотел бы знать, возможно ли его разделить предложение, используя только уровень фразы, не вдаваясь в подробности со словом.Stanford CoreNLP - Phrase level POS

В принципе, я хочу проанализировать предложение, а затем получить его фразовые метки, а затем получить разбиение на переменные.

Например, для предложения, если оно содержит словосочетание (X) и глагольную фразу (Y), я хочу проанализировать с использованием CoreNLP X и Y, а затем получить X и Y отдельно в переменных.

Любая идея о том, как это сделать?

ответ

1

Существует некоторый пример кода в моем ответе на этот вопрос, который демонстрирует, как получить доступ к избирательному округу синтаксический

Я предоставил образец класса под названием RootFinderExample.java.

How to get the root node in Stanford Parse-Tree?

Вот где дерево доступ:

Tree tree = sentence.get(TreeAnnotation.class); 

Вот некоторые документы по классу Tree:

http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/trees/Tree.html

+0

Спасибо! Я попробовал код из образца, и он сработал. Теперь я пытаюсь получить доступ к тегу POS для корня и слова в этом дереве. В примере кода, который вы указали, http://stackoverflow.com/questions/34928739/how-to-get-the-root-node-in-stanford-parse-tree/35012082#35012082 Я пытаюсь получить тег POS «бутылка воды Voss» и тег POS (который является NP). Можете ли вы мне помочь? – Tharindu

0

следующий код получает все NP и VP в данном тексте:

props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse"); 
    props.setProperty("ner.model","edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz"); 
    List<mention> NPS = new ArrayList<mention>(); 

    HeadFinder headFinder = null; 
    if (doc != null && doc.length() > 0) { 
    edu.stanford.nlp.pipeline.Annotation annotation = pipeline.process(doc); 
     for (CoreMap sentence : annotation.get(CoreAnnotations.SentencesAnnotation.class)) { 
      Tree tree = sentence.get(TreeAnnotation.class); 
      headFinder = new SemanticHeadFinder(); 
      for (Tree subtree : tree) { 
       if (subtree.label().value().equals("NP")) { 
       //this is a NP, you can assign it to a variable here 
       } 

       if (subtree.label().value().equals("VP")) { 
       //this is a VP, you can assign it to a variable here 
       } 

       } 
       } 
       } 
Смежные вопросы