有谁知道从文本中仅提取名词的最简单方法?
我听说过TreeTagger工具,但尝试尝试一下,但由于某种原因而无法使用。
有什么建议?
谢谢菲尔
编辑:
导入org.annolab.tt4j。*; TreeTaggerWrapper tt =新的TreeTaggerWrapper(); 尝试{tt.setModel(“ /名词/english.par”); tt.setHandler(new TokenHandler(){ 无效令牌(字符串令牌,字符串pos,字符串引理){ System.out.println(token +“ \ t” + pos +“ \ t” + lemma); }}); tt.process(words); //单词=单词列表 }最后{tt.destroy(); }
那是我的代码,英语是语言。我遇到了错误:new TokenHandler(){}类型必须实现继承的抽象方法TokenHandler.token。难道我做错了什么?
首先,您必须标记文本。这看似微不足道(在任何空格处分割都可以为您工作),但从形式上讲,这却很难。然后,您必须确定什么是名词。“停车场”是否包含一个名词(停车场),两个名词(汽车,公园)或一个名词(公园)和一个形容词(汽车)?这是一个很难的问题,但是如果没有它,您也许仍然可以解决。
“我看见xyzzy”是否识别出不在词典中的名词?单词“ the”可能将xyzzy标识为名词。
“时光如箭”中的名词在哪里?与“果蝇像香蕉”相比(感谢格劳乔·马克思)。
我们在OpenNLP工具包(opennlp.tools.lang.english.PosTagger; opennlp.tools.postag.POSDictionary on http://上使用了Brown标记器(Java)(http://en.wikipedia.org/wiki/Brown_Corpus)opennlp.sourceforge.net/)来查找普通英语中的名词,我建议从此开始- 它为您完成了大部分思考。否则,请查看任何POSTaggers(http://en.wikipedia.org/wiki/POS_tagger)或(http://www- nlp.stanford.edu/links/statnlp.html#Taggers)。
在计算机的词性标记中,通常区分英语的50至150个单独的词性,例如NN表示单数普通名词,NNS表示复数普通名词,NP表示单数专有名词(请参阅POS)布朗语料库中使用的标签)
http://en.wikipedia.org/wiki/Natural_language_processing_toolkits中有NLP工具箱的完整列表。我强烈建议您使用其中之一,而不要尝试与Wordnet或其他集合进行匹配。