2015-07-10 20 views
1

我想標記twitter文本。 當我申請的功能nltk.word_tokenize()每個單Twitter文字,它完美的作品,甚至一些非常醜陋的,如錯誤使用「nltk.word_tokenize()」函數

'\xd8\xb3\xd8\xa3\xd9\x87\xd9\x8e\xd9\x85\xd9\x90\xd8\xb3\xd9\x8f',
'\xd9\x82\xd9\x90\xd8\xb5\xd9\x8e\xd9\x91\xd8\xa9\xd9\x8b', '\xd8\xad\xd8\xaa\xd9\x89'

但是當我遍歷文件

tokens = [] 
for i in range(0,5047591): 
    s = ','.join(l_of_l[i]) 
    tokens += nltk.word_tokenize(s) 
所有的Twitter

返回錯誤,如:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)File "/Library/Python/2.7/site-packages/nltk/tokenize/punkt.py", line 1304, in _realign_boundaries for sl1, sl2 in _pair_iter(slices):

,還有更多

有關如何修復它的任何建議?

回答

0

您得到的問題不是來自您包含的代碼,而是來自包含open()命令的代碼。該腳本打開文件正常,但是當你訪問你的數據時,它會給你那個TraceBack

import codecs 
... 
with codecs.open('file.csv','r',encoding='utf8') as f: 
    text = f.read() 
+0

謝謝!我做了f.readline()來代替,但我得到了這個錯誤「UnicodeDecodeError:'utf8'編解碼器無法解碼位置1中的字節0x8b:無效的起始字節」,我不太確定如何處理它 –

+0

有第二個錯誤有兩種可能的解決方案。 1)將該行更改爲'用codecs.open('file.csv','r',encoding ='utf-8',errors ='ignore')作爲f:',但可能會丟失一些*字符。 2)確定你正在處理什麼類型的編碼,然後執行decode('######'')。encode('utf-8')'。使用'.decode'('cp1252')'很常見,但請注意不能保證是正確的。 – Leb

+0

是的你是對的,當我使用錯誤='忽略',我從文件構建的列表成爲「索引超出範圍」 –