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

use*_*234 12 java nlp stanford-nlp opennlp

我是自然语言处理的新手.我需要从文本中提取名词短语.到目前为止,我已经使用open nlp的分块解析器来解析我的文本以获得树结构.但是我无法从中提取名词短语.树结构,在打开的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();}
Run Code Online (Sandbox Code Playgroud)

在这里,我得到的输出为

(TOP(S(S(ADJP(JJ welcome)(PP(TO to)(NP(NNP Big)(NNP Data.)))))(S(NP(PRP We))(VP(VP(VBP)) (VP(VBG工作)(PP(IN on)(NP(NNP Natural)(NNP语言)(NNP Processing.can)))))(NP(DT some)(CD one)(NN帮助))(NP( PRP us))(PP(IN in)(S(VP(VBG提取)(NP(DT)(NN名词)(NNS短语))(PP(IN)(NP(DT))(NN树)( WP结构.))))))))))

有人可以帮助我获取像NP,NNP,NN等名词短语.可以告诉我,我是否需要使用任何其他NP Chunker来获取名词短语?是否有任何正则表达式模式来实现相同的目的.

请帮帮我.

提前致谢

Gouse.

ice*_*eam 6

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,NP代表名词短语.对于NP和其他词性标签,请参阅:http://bulba.sdsu.edu/jeanette/thesis/PennTags.html. (2认同)