java – 通过斯坦福解析器提取所有名词,形容词形式和文本
发布时间:2020-12-15 08:40:31 所属栏目:Java 来源:网络整理
导读:我试图通过斯坦福解析器从给定的文本中提取所有名词和形容词. 我目前的尝试是在Tree-Object的getChildrenAsList()中使用模式匹配来定位如下内容: (NN paper),(NN algorithm),(NN information),... 并将它们保存在一个数组中. 输入句子: In this paper we p
我试图通过斯坦福解析器从给定的文本中提取所有名词和形容词.
我目前的尝试是在Tree-Object的getChildrenAsList()中使用模式匹配来定位如下内容: (NN paper),(NN algorithm),(NN information),... 并将它们保存在一个数组中. 输入句子:
结果 – 字符串: [(S (PP (IN In) (NP (DT this) (NN paper))) (NP (PRP we)) (VP (VBP present) (NP (NP (DT an) (NN algorithm)) (SBAR (WHNP (WDT that)) (S (VP (VBD extracts) (NP (JJ semantic) (NN information)) (PP (IN from) (NP (DT an) (ADJP (JJ arbitrary)) (NN text)))))))) (. .))] 我尝试使用模式匹配,因为我无法在斯坦福解析器中找到返回所有单词类的方法,例如名词. 有没有更好的方法来提取这些单词类或解析器提供特定的方法? public static void main(String[] args) { String str = "In this paper we present an algorithm that extracts semantic information from an arbitrary text."; LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz"); Tree parseS = (Tree) lp.apply(str); System.out.println("tr.getChildrenAsList().toString()"+ parseS.getChildrenAsList().toString()); } } 解决方法
顺便说一句,如果您想要的只是名词和动词等词性,您应该使用词性标注器,例如Stanford POS标记器.它会更快地运行几个数量级,并且至少是准确的.
但你可以使用解析器来完成它.你想要的方法是taggedYield(),它返回一个List< TaggedWord>.所以你有了 List<TaggedWord> taggedWords = (Tree) lp.apply(str); for (TaggedWord tw : taggedWords) { if (tw.tag().startsWith("N") || tw.tag().startsWith("J")) { System.out.printf("%s/%s%n",tw.word(),tw.tag()); } } (这种方法会削减一个角落,因为知道所有且只有形容词和名词标签在Penn树库标签集中以J或N开头.您可以更一般地检查一组标签中的成员资格.) 附:使用标签stanford-nlp最适合stackoverflow上的Stanford NLP工具. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 微信支付H5调用支付详解(java版)
- 从javax.swing.text尝试针对AbstractDocument.UndoRedoDocu
- java组件commons-fileupload实现文件上传
- 如何在编写JavaFx css时禁用eclipse中的`Unknown property:
- java – EventQueue.invokeLater vrs SwingUtilities.invok
- 在Java中寻找BufferedInputStream的最佳大小
- 基于java解析JSON的三种方式详解
- java – Web应用程序中的Quartz
- java实现简单银行家算法
- Java方法链接在单行上进行转换