2014-04-03 69 views
2

我得到一個網址列表並使用nltk將它們刮取。我的最終結果是以列表的形式列出網頁上的所有單詞。麻煩的是,我只是在尋找不是通常的英語「糖」詞的關鍵字和短語,比如「as,and like,to,am,for」等。我知道我可以構建一個全部常見的文件英語單詞,只是從我的刮痕標記列表中刪除它們,但有一個內置的功能,可以自動執行此操作嗎?只從網頁中提取有意義的文本

我基本上是在頁面上尋找有用的單詞,而不是絨毛,並且可以爲頁面提供一些上下文。幾乎像在stackoverflow上的標籤或谷歌用於搜索引擎優化的標籤。

+0

可能重複的[如何使用nltk或python刪除停用詞](http://stackoverflow.com/questions/5486337/how-to-remove-stop-words-using-nltk-or-python) – tripleee

回答

3

更多的信息,我認爲你正在尋找的是從nltk.corpus的stopwords.words:

>>> from nltk.corpus import stopwords 
>>> sw = set(stopwords.words('english')) 
>>> sentence = "a long sentence that contains a for instance" 
>>> [w for w in sentence.split() if w not in sw] 
['long', 'sentence', 'contains', 'instance'] 

編輯:搜索停用詞給可能的重複項:Stopword removal with NLTK,How to remove stop words using nltk or python。查看這些問題的答案。並且也考慮Effects of Stemming on the term frequency?

1

儘管您可能會在NLTK(和其他地方)中獲得健壯的停用詞列表,但您可以根據所處理的數據類型(註冊表)輕鬆構建自己的列表。大多數你不想要的單詞是所謂的語法單詞:它們非常頻繁,所以你可以通過按降序對頻率列表進行排序並丟棄n-top項目來輕鬆捕捉它們。

根據我的經驗,任何中等大型語料庫(> 10k個正在運行的文本)的前100行幾乎不包含任何內容詞

但是,您似乎有興趣提取關鍵字。對於這個任務,純頻率簽名不是很有用。您需要將頻率轉換爲相對於參考語料庫的其他值:這稱爲加權,並且有許多不同的方法來實現它。 TfIdf是自1972年以來的行業標準。

如果您要花時間完成這些任務,請獲取語料庫語言學或計算語言學入門手冊。