我是自然语言处理的新手,我需要从文本中提取出名词短语.我远在我使用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); } }