2015-07-10 95 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

是的你是对的,当我使用错误='忽略',我从文件构建的列表成为“索引超出范围” –