我正在试验一些NLP算法,现在我专注于情感分析。出于这个原因,我从 http://www.cs.jhu.edu/~mdredze/datasets/sentiment/index2.html 下载了一些带有正面和负面评论的.review
格式文件。
我正在使用BeautifulSoup
来解析这些XML文件,现在我只是尝试通过执行以下源代码来读取它们:
from bs4 import BeautifulSoup
positive_reviews = BeautifulSoup(open('*******/electronics/positive.review').read())
positive_reviews = positive_reviews.findAll('review_text')
negative_reviews = BeautifulSoup(open('*******/electronics/negative.review').read())
negative_reviews = negative_reviews.findAll('review_text')
但是,我收到以下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 118374: ordinal not in range(128)
什么时候
positive_reviews = BeautifulSoup(open('*******/electronics/positive.review').read())
将被执行。
如何修复此错误?
我也更换了
BeautifulSoup(open('*******/electronics/positive.review').read())
跟
BeautifulSoup(open('*******/electronics/positive.review').read().decode('utf-8'))
但我得到完全相同的错误。
最后,我已经阅读了一些关于StackOverflow的相关帖子,但到目前为止,没有任何工作对我有用。例如,在我的终端echo $LANG
输出en_GB.UTF-8
,正如UnicodeDecodeError的第一个答案中所描述的那样:"ascii"编解码器无法解码位置1的字节0xef,但我仍然收到上面的错误。
如果您使用的是 Python 3,请尝试替换
open('*******/electronics/positive.review')
跟
open('*******/electronics/positive.review', encoding='utf-8')