酒店评论的情感分析 学习笔记(一)

这几天从github上找了一个关于酒店评论情感分析的项目进行实践。
链接在这里https://github.com/AimeeLee77/senti_analysis
在第一步,将原始数据合并到一个文件中时出现的问题:
1.UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xd0 in position 493: illegal multibyte sequence
百度翻译:UnicodeDecodeError:“gbk”编解码器无法解码位置493中的字节0xd0:非法的多字节序列
酒店评论的情感分析 学习笔记(一)_第1张图片
意思应该是是说这些原始数据中编码没有统一?猜测
查了一下资料,在代码后面加个encoding=‘UTF-8’

#读取文件内容
def getContent(fullname):
    f = codecs.open(fullname, 'r')
    content = f.readline()
    f.close()
    return content

修改成:

#读取文件内容
def getContent(fullname):
    f = codecs.open(fullname, 'r',encoding='UTF-8')
    content = f.readline()
    f.close()
    return content

换了个错,但好像还是这个意思,感觉好像还更不对了,哈哈哈:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xb1 in position 0: invalid start byte
百度翻译:UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xb1:起始字节无效
酒店评论的情感分析 学习笔记(一)_第2张图片
又查了一些资料,看到这一篇http://www.360doc.com/content/18/0916/12/54508727_787095301.shtml
可能改的时候也没有特别理解,文章里是读取图片才用的二进制读取。我就把读取的r都改成rb,结果是:
TypeError: a bytes-like object is required, not ‘int’
酒店评论的情感分析 学习笔记(一)_第3张图片
又把content转换成二进制也不对。最后,我发现可能是文本保存的时候编码的问题,于是查看了数据文件的编码,发现是ANSI
在这里插入图片描述
所以最后代码修改为

#读取文件内容
def getContent(fullname):
    f = codecs.open(fullname, 'r',encoding='ANSI')
    content = f.readline()
    f.close()
    return content

结果是:UnicodeDecodeError: ‘mbcs’ codec can’t decode byte 0xcb in position 29: No mapping for the Unicode character exists in the target code page.
酒店评论的情感分析 学习笔记(一)_第4张图片
结果是可以读取部分,但有的部分无法解码,应该有两种解决方法,一种是把所有文件重新统一一下编码格式,我采用了第二种,把错误忽略掉,哈哈哈。

def getContent(fullname):
    f = codecs.open(fullname, 'r',encoding='ANSI',errors="ignore")
    content = f.readline()
    f.close()
    return content

最后可能数据会比原来少一点,但是应该问题不大,哈哈哈哈。
酒店评论的情感分析 学习笔记(一)_第5张图片

你可能感兴趣的:(自然语言处理,python)