我试图使用CoreNLP并且想知道是否可以仅使用短语级别来分割句子而不用详细说明单词级别。
基本上,我想分析一个句子然后获取它的短语标签,然后获得分裂成变量。
例如,对于一个句子,如果它包含名词短语(X)和动词短语(Y),我想使用CoreNLP分析X和Y,然后分别将X和Y分别变为变量。
关于如何做的任何想法?
答案 0 :(得分: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
答案 1 :(得分: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
}
}
}
}