UnicodeDecodeError: 'ascii'编解码器无法将0xc3字节解码到指定位置

3
当我尝试从nltk中的标记文本中提取某些模式时,出现错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 79: ordinal not in range(128)。起初我没有这个错误,但只有在安装了一些包之后才遇到了它。
以下是代码:
# -*- coding: utf-8 -*-
import codecs
import sys
import re
import sys
import nltk
from nltk.corpus import *

k =  nltk.corpus.brown.tagged_words('myfile')
for (w1,t1), (w2,t2) in nltk.bigrams(k):
    if t1 == 'NN' and  t2 == 'AJ':
       print w1, w2

这是代码的完整输出内容。

Traceback (most recent call last):
File "/home/fathi/egfe.py", line 12, in <module>
for (w1,t1), (w2,t2) in nltk.bigrams(k):
File "/usr/local/lib/python2.7/dist-packages/nltk/util.py", line 442, in bigrams
for item in ngrams(sequence, 2, **kwargs):
File "/usr/local/lib/python2.7/dist-packages/nltk/util.py", line 419, in ngrams
history.append(next(sequence))
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/reader/util.py", line 291, in  iterate_from
tokens = self.read_block(self._stream)
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/reader/tagged.py", line 241, in read_block
for para_str in self._para_block_reader(stream):
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/reader/util.py", line 564, in read_blankline_block
line = stream.readline()
File "/usr/local/lib/python2.7/dist-packages/nltk/data.py", line 1095, in readline
new_chars = self._read(readsize)
File "/usr/local/lib/python2.7/dist-packages/nltk/data.py", line 1322, in _read
chars, bytes_decoded = self._incr_decode(bytes)
File "/usr/local/lib/python2.7/dist-packages/nltk/data.py", line 1352, in _incr_decode
return self.decode(bytes, 'strict')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 79: ordinal not in range(128)

tagged_wordsencoding选项吗?如果没有,它是否允许您传递已经打开的文件而不是文件名? - abarnert
此外,'myfile' 的内容是什么? 我猜它们要么是 UTF-8 编码,要么是你的平台默认字符集(例如,对于美国 Windows,是 cp1252); 如果是这样,您必须以某种方式告诉 Python,否则它将假定它们位于 sys.getdefaultencoding() 中,通常为 ASCII。 - abarnert
感谢您发布完整的回溯信息。在这种情况下,它可能并没有太大帮助(尽管这也可能是错误的;比我更了解NLTK的人可能会因此找到答案...),但这总是一个好主意。 - abarnert
你是不是意图导入了两次sys?如果你只需要Brown,就没必要导入所有的语料库。尝试更新NLTK,甚至可以使用alpha版本。如果还不行,可以尝试使用textclean。 - Dan
你安装了哪个包? - alvas
安装的包是textblob。 - 5555555555
1个回答

0
问题在于nltk版本与python版本不兼容,因此需要使用较旧的nltk工具包版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接