如何使用java中的stanford nlp从文本中获取有意义的单词

时间:2013-07-26 05:52:44

标签: java parsing stanford-nlp

我有一些要求是在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.

怎么做。请建议我。

感谢。

1 个答案:

答案 0 :(得分:2)

确定您感兴趣的词组级别,并仅输出TaggedWord的Word部分。

从你唯一的例子来看,你似乎对单名词(NN)以及形容词(JJ)或ADJP(形容词短语)感兴趣。 (虽然根据你的例子,同样有效的答案是,“显示所有以[a]或[n]开头的单词”或所有长度> 2的单词。)

您不应该使用toString版本;检查解析树中的标记值。