2009-11-03 49 views
18

我正在寻找一种类或方法,需要一个长100多万字的单词和标记的字符串,删除在IR系统中使用的停用词和词干。Tokenizer,停止词的删除,在Java中的词干

例如:

“大肥猫,说:‘你最有趣的家伙,我知道’的袋鼠......”

标记生成器将消除标点和回报也就是说

停用词卸妆将删除像“”,“来”字的ArrayList

词干会减少他们的'根'每个单词,例如'最有趣'会变得有趣

非常感谢提前。

回答

8

AFAIK Lucene可以做你想做的。用StandardAnalyzerStopAnalyzer你可以去除停用词。结合Lucene contrib-snowball(其中包括Snowball的工作)项目,您也可以执行此操作。

但对制止也考虑这个答案:Stemming algorithm that produces real words

+0

嘿! @jitter去Lucene没有帮助?需要更具体的链接。 – jsroyal 2017-01-22 07:16:05

6

这些是自然语言处理的标准要求,所以我会查找这样的工具包。既然你需要Java我与OpenNLP开始: http://opennlp.sourceforge.net/

如果你可以看看其他语言中也有NLTK(Python)的

注意,“你最有趣的家伙,我知道”不规范的语法,这比“你是我认识的最有趣的人”更难处理。不是不可能的,但更难。我不知道有什么系统会将“你”与“你是”等同起来。

+0

http://en.wikipedia.org/wiki/Natural_language_processing_toolkits – Fedearne 2009-11-03 00:15:36

+0

openNLP中是否有话题建模?在描述中没有看到。 – 2012-05-03 08:13:55

0

这里是NLP tools完整列表。有时候自己创建它们是有意义的,因为它们会变得更轻,并且对内部工作有更多的控制:使用简单的正则表达式来进行标记化。对于停止的话就按下面的列表或其他一些列表到HashSet:

common-english-words.txt

这里是许多Java implementation of porter stemer一个)。

1

我已经处理了一些我曾经使用的任务的问题,所以让我给出一个标记器的建议。由于我没有看到它直接作为答案,所以我经常使用edu.northwestern.at.utils.corpuslinguistics.tokenizer.*作为我的标记器家族。我看到很多使用PennTreebankTokenizer类的案例。以下是您如何使用它:

WordTokenizer wordTokenizer = new PennTreebankTokenizer(); 
    List<String> words = wordTokenizer.extractWords(text); 

指向此作品的链接是here。只是一个免责声明,我与西北航空,集团或他们所从事的工作没有任何关系。我只是偶尔使用代码的人。

+0

我可以从哪里下载西北分词器? – Hector 2016-05-26 09:11:13

+0

@Hector试试https://bitbucket.org/pibburns/morphadorner/src/9c3188655f6386e65c93f315f86b3a176607c8f7/src/edu/northwestern/at/morphadorner/corpuslinguistics/tokenizer/?at=default。也许我给了错误的包。 4年后,很难看出包装是否改变或者我原来是错的 – demongolem 2016-05-26 15:52:25