我有一些要求是在java中使用stanford nlp从解析后的文本中获取有意义的单词。 我正在尝试下面的示例代码。
import edu.stanford.nlp.trees.*;
import edu.stanford.nlp.ling.HasWord;
import edu.stanford.nlp.parser.lexparser.LexicalizedParser;
public class Demo
{
public static void main(String args[])
{
LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser");
lp.setOptionFlags(new String[]{"-maxLength", "80","-retainTmpSubcategories"});
String sent = "my name is arjun";
Tree parse = (Tree) lp.apply(sent);
List taggedWords = parse.taggedYield();
System.out.println(parse.toString());
}
}
输出:
(ROOT (S (NP (PRP$ my) (NN name)) (VP (VBZ is) (ADJP (JJ arjun)))))
必需的输出:
name,arjun.
怎么做。请建议我。
感谢。
答案 0 :(得分:2)
确定您感兴趣的词组级别,并仅输出TaggedWord的Word部分。
从你唯一的例子来看,你似乎对单名词(NN)以及形容词(JJ)或ADJP(形容词短语)感兴趣。 (虽然根据你的例子,同样有效的答案是,“显示所有以[a]或[n]开头的单词”或所有长度> 2的单词。)
您不应该使用toString
版本;检查解析树中的标记值。