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.
该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)