2016-11-30 78 views
1

我試圖抓取一個非常'右側'的網站來進行關於仇恨和種族主義檢測的研究,所以我的測試內容可能會受到攻擊。使用NLTK編碼問題

我試圖刪除一些停用詞和標點符號在Python中,我使用NLTK,但我遇到了一個編碼問題...我使用Python 2.7和數據來自一個文件,我填寫文章從網站我爬到:

stop_words = set(nltk.corpus.stopwords.words("english")) 
for key, value in data.iteritems(): 
    print type(value), value 
    tokenized_article = nltk.word_tokenize(value.lower()) 
    print tokenized_article 
    break 

和輸出看喜歡:(我加...縮短樣品)

<type 'str'> A Negress Bernie ... they’re not going to take it anymore. 

['a', 'negress', 'bernie', ... , 'they\u2019re', 'not', 'going', 'to', 'take', 'it', 'anymore', '.'] 

我不明白爲什麼有這個「\ u2019」那不應該在那裏。如果有人可以告訴我如何駕駛它。我試圖用UTF-8編碼,但我仍然遇到同樣的問題。

+0

'\ u2019'是unicode符號[右單引號](http://unicode.org/cldr/utility/character.jsp?a=2019)。如果你沒有太多不同的問題字符,你可以簡單地[修復你的字符串](http://stackoverflow.com/questions/24358361/removing-u2018-and-u2019-character) – alexis

回答

1
stop_words = set(nltk.corpus.stopwords.words("english")) 
for key, value in data.iteritems(): 
    print type(value), value 
    #replace value with ignored handler 
    value = value.encode('ascii', 'ignore') 
    tokenized_article = nltk.word_tokenize(value.lower()) 
    print tokenized_article 
    break 
+1

謝謝:)我切換'忽略'與'替換'其他方式我會'他們'。然後我可以刪除'?'與string.punctuation – mel

+1

我喜歡你的任務主題,繼續 –

+0

這不是一個好建議。即使在處理文本之前,您應該已經明確地抓取了網站的編碼並且知道這一點,然後將抓取工具設置爲適當的編碼。如果它們都是UTF8,那麼比較Python3中的字符串會更有意義,並且會給您帶來更少的痛苦。 – alvas