2

i have some requirement that is getting meaningful words from parsed text using stanford nlp in java. i am trying following sample code.

    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());
    }
    }

output:

(ROOT (S (NP (PRP$ my) (NN name)) (VP (VBZ is) (ADJP (JJ arjun)))))

required output:

name,arjun.

how to do this.please suggest me.

thanks.

4

1 回答 1

2

确定您感兴趣的短语级别并仅输出 TaggedWord 的 Word 部分。

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

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

于 2013-07-26T08:47:57.167 回答