2014-04-07 74 views
2

我正在使用Python腳本,在其中我想刪除像「the」,「an」,「and」,「for」等常見英語單詞以及更多來自串。目前我所做的是我製作了所有這些單詞的本地列表,我只需撥打remove()即可將它們從字符串中刪除。但我想在這裏採用一些pythonish的方式來實現這一點。已閱讀關於nltk和wordnet,但完全無能爲力,這是我應該使用和如何使用它。提取非內容英語單詞字符串 - python

編輯

好吧,我不明白爲什麼被標記爲重複我的問題不以任何方式意味着我知道停止的話,現在我只是想知道如何使用它... ..問題是關於我可以在我的場景中使用什麼,並回答這是停止詞......但是當我發佈這個問題時,我不知道任何關於停用詞的事情。

+2

尋找「停止詞刪除」許多其他的包......和你的基本方法是不是錯了... – dsign

+0

停用詞可能是在我的場景中很有用...現在正在搜索... thnx ...有任何鏈接停止單詞教程。 –

+2

沒有教程對不起......但你在做什麼是正確的。只需獲取一長串停用詞,然後使用正則表達式模塊來替換空字符串的停用詞。 – dsign

回答

0

我發現,我一直在尋找的是這樣的:

from nltk.corpus import stopwords 
my_stop_words = stopwords.words('english') 

現在我可以從我的列表/字符串中刪除或替換單詞,其中我在my_stop_words中找到匹配項,這是一個列表。

爲了這個工作,我不得不下載Python的NLTK和使用它的下載器我下載了stopwords包。

它還含有可在NLP不同的情況下使用像words,brown,wordnet etc.

2

做到這一點。

vocabular = set (english_dictionary) 
unique_words = [word for word in source_text.split() if word not in vocabular] 

它可以是簡單和高效的。如果您不需要獨特單詞的位置,請將它們設爲set!操作in是非常快的套(和緩慢的名單和其他容器)

+0

我是否需要導入任何包才能正常工作..? –

+0

無。 'set'是一個內置的容器,通過不存儲相對位置來實現對象的快速搜索。第二行是一個普通的基本Python「列表理解」操作符。 –

+0

what abt english_dictionary ..?那應該是我忽略的單詞列表..? –

0

這也將工作:

yourString = "an elevator is made for five people and it's fast" 
wordsToRemove = ["the ", "an ", "and ", "for "] 

for word in wordsToRemove: 
    yourString = yourString .replace(word, "") 
+2

是的,但這是我想避免做的,因爲我不想把我的本地名單,因爲它應該包含所有常見的英語單詞....如果是4-5個字,那麼這種方式看起來是正確的...我將使用nltk,語料庫和停止詞列表,它提供 –