Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用“错误”;nltk.word“u tokenize()”;功能_Python_Twitter_Nlp_Nltk_Tokenize - Fatal编程技术网

Python 使用“错误”;nltk.word“u tokenize()”;功能

Python 使用“错误”;nltk.word“u tokenize()”;功能,python,twitter,nlp,nltk,tokenize,Python,Twitter,Nlp,Nltk,Tokenize,我正在尝试标记twitter文本。 当我将函数nltk.word_tokenize()应用于每个twitter文本时,即使对于一些非常丑陋的文本,例如 “\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” 但是当我在一个文件中循环浏览所有twi

我正在尝试标记twitter文本。 当我将函数nltk.word_tokenize()应用于每个twitter文本时,即使对于一些非常丑陋的文本,例如

“\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”

但是当我在一个文件中循环浏览所有twitter时

tokens = []
for i in range(0,5047591):
    s = ','.join(l_of_l[i])
    tokens += nltk.word_tokenize(s)
它返回错误,例如:

UnicodeDecodeError:“ascii”编解码器无法解码位置2:序号不在范围(128)文件中的字节0xc3 “/Library/Python/2.7/site packages/nltk/tokenize/punkt.py”,第1304行, 在(u)中重新对齐(u)边界 对于sl1、sl2成对iter(切片):

还有更多


关于如何修复它有什么建议吗?

您遇到的问题不是来自您包含的代码,而是来自包含
open()
命令的代码。脚本可以很好地打开文件,但是当您访问数据时,它会给您回溯

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

谢谢我改为使用了f.readline(),但出现了以下错误“UnicodeDecodeError:'utf8'编解码器无法解码位置1中的字节0x8b:无效的开始字节”,我不太确定该如何处理第二个错误有两种可能的解决方案。1) 将该行更改为
,使用codecs.open('file.csv','r',encoding='utf-8',errors='ignore')作为f:
,但可能会丢失一些字符。2) 确定您正在处理的编码类型,然后执行
解码('.'.'.'.'.'.'.'.'.'.'.'.''.'编码('utf-8')
)。使用
.decode('cp1252')
是很常见的,但请注意,这并不保证是正确的。是的,你是对的,当我使用errors='ignore',我从文件构建的列表变成了“索引超出范围”,但decode()。声明没有解决,我想知道我的pycharm可能存在一些设置问题,因为有时候我甚至无法安装一些模块。这可能对pycharm有帮助,既然你提到了它。转到文件>设置>编辑器>文件编码,然后将“IDE编码”、“项目编码”和(底部)“属性文件的默认编码”更改为“UTF-8”。去掉
errors='ignore'
,然后再次运行脚本。我还没有测试过它,但是你也可以删除编解码器。再一次,问题是它对pycharm有特殊的好处。