2016-07-06 222 views
0

我正在處理一個單詞項目包,我想從停止詞的NLTK列表中刪除停用詞。在那一刻,我這樣做:什麼是使用NLTK停用詞的正確方法?

words.difference_update(set(stopwords.words("english")))

(字被包含在語料庫中的所有單詞一組)

然而,當我看的stopwords.words("english")我看到這樣的話的內容: 「cann」和「doesn」。我假設這些是「不能」和「不」等單詞的詞語前綴,也可能是其他詞。

因此,我認爲有一種方法可以檢查一個單詞是否在停用詞表中,它比純字符串相等更復雜,但我無法弄清楚它是什麼。任何幫助表示讚賞。

+0

您還可以下載整個語料庫[這裏](https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/stopwords.zip),並在您閒暇時閱讀/修改它。這[問題](https://stackoverflow.com/questions/37701305/where-to-find-an-exhaustive-list-of-stop-words/37712453#37712453)進入如何修改NLTK列表。 – patrick

回答

0

有沒有正確的方式來使用停用詞。這取決於你想完成什麼任務。但是,根據您提供的信息,NLTK似乎假設您正在用空格和標點劃分您的文檔。但是,我可以猜測,停用詞表還將包含諸如coulddoes之類的詞。我的方法是使用NLTK的tokenize包,然後再創建語料庫的令牌運行您difference_update

words = set(nltk.word_tokenize(document)) 

注意的是,根據符號化的模型,功能可能分裂出消極的詞語,如couldn't['could',"n't"]。因此,如果停用詞列表不包含n't字符串,則必須將其從集中刪除。

我正在做的另一個假設是您的語料庫只包含小寫字詞。

希望有幫助!

+0

你如何檢測一個單詞是否是單詞的後半部分(除了通過分隔空間和單詞以及比較的單詞循環)。 – roundsquare

+0

對不起,我明白你的意思。通過使用標記,我得到了停用詞列表所期望的標記。 – roundsquare

相關問題