有谁知道从文本正文中仅提取名词的最简单方法?
我听说过TreeTagger工具,我试过试一试,但由于某些原因无法让它工作.
有什么建议?
谢谢菲尔
编辑:
import org.annolab.tt4j.*;
TreeTaggerWrapper tt = new TreeTaggerWrapper();
try { tt.setModel("/Nouns/english.par");
tt.setHandler(new TokenHandler() {
void token(String token, String pos, String lemma) {
System.out.println(token+"\t"+pos+"\t"+lemma); } });
tt.process(words); // words = list of words
} finally { tt.destroy();
}
那是我的代码,英语是语言.我收到错误:新类型TokenHandler(){}必须实现继承的抽象方法TokenHandler.token.难道我做错了什么?
pet*_*ust 23
首先,您必须对文本进行标记.这可能看起来微不足道(在任何空格分裂可能对你有用)但正式情况下它更难.然后你必须决定什么是名词."停车场"是否包含一个名词(停车场),两个名词(汽车,公园)或一个名词(公园)和一个形容词(汽车)?这是一个很难的问题,但是如果没有它,你可能会再次遇到这个问题.
"我看到xyzzy"是否识别出不在字典中的名词?单词"the"可能将xyzzy标识为名词.
"时间过得像箭头"中的名词在哪里?与"像香蕉一样的果蝇"相比(感谢Groucho Marx).
我们在OpenNLP工具包中使用Brown tagger(Java)(http://en.wikipedia.org/wiki/Brown_Corpus)(http://上的opennlp.tools.lang.english.PosTagger; opennlp.tools.postag.POSDictionary)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或其他集合.
| 归档时间: |
|
| 查看次数: |
19246 次 |
| 最近记录: |