java – 如何使用Open nlp的分块解析器提取名词短语

前端之家收集整理的这篇文章主要介绍了java – 如何使用Open nlp的分块解析器提取名词短语前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是自然语言处理的新手,我需要从文本中提取出名词短语.我远在我使用open nlp的分块解析器来解析我的文本以获取Tree结构.但是我无法从树结构,在开放nlp中是否有任何正则表达式模式,以便我可以使用它来提取名词短语.

以下是我正在使用的代码

InputStream is = new FileInputStream("en-parser-chunking.bin");
    ParserModel model = new ParserModel(is);
    Parser parser = ParserFactory.create(model);
    Parse topParses[] = ParserTool.parseLine(line,parser,1);
        for (Parse p : topParses){
                 p.show();}

在这里我得到的输出

(SP(VPP(VBP))(S(NP(PRP We)))(S(S(S(SJ(欢迎)(PP(TO to)(NP(NNP Big) (NP(DTG))(NP(DT))(PP(IN)(NP(NNP Natural))(NNP语言)(NNP Processing) (PP(IN in)(PP(IN))(S(VP(VBG提取))(NP(DT))(NN名词)(NNS短语)) WP结构.)))))))))))

有些人可以帮我取得名词短语,如NP,NNP,NN等.有些人可以告诉我,我需要使用任何其他的NP Chunker来获得名词短语吗?有没有任何正则表达式呢?

请帮忙我

提前致谢

Gouse.

解决方法

Parse对象是一棵树;您可以使用getParent()和getChildren()和getType()来导航树.
List<Parse> nounPhrases;

public void getNounPhrases(Parse p) {
    if (p.getType().equals("NP")) {
         nounPhrases.add(p);
    }
    for (Parse child : p.getChildren()) {
         getNounPhrases(child);
    }
}

猜你在找的Java相关文章