2009-11-03 85 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