这几天在学着做中文自然语言处理,跟着aespresso博主的教程,采用谭松波老师的酒店评论语料库,进行情感识别训练。
但是这个过程中遇到一些文档转码的问题。我在该博主的github上下载这份语料库,可以看到github上他的txt文档里可以显示中文,但下载到本地后用记事本打开变成了乱码。同时python直接读取的话也是按乱码处理,这样就无法进行机器学习。
同时发现,用NotePad++打开这些txt文件后是可以显示正常中文的,只是NotePad++并没有像往常一样标明这个文档是以什么格式编码的。这里我们用NotePad++另存为utf-8格式后便可用记事本正常打开。但由于我们有几千个txt的语料库,所以用notepad++一条条转码是很困难的。
这里我做了两个尝试,一个是使用Notepad++实现批量转码,另一个是查明这些文档现在的编码格式是什么,然后编写脚本或在直接在程序中进行转码。这里稍作记录。
一. 用Notepad++实现批量转码
虽然我不知道现在的编码格式是什么,但既然notepad++可以读出中文并转成utf-8,那只需要让notepad++批量处理文件就好了呀。但很遗憾这个想法最终没能实现。
关键点在于给Notepad++安装插件这步。首先安装plugin Manager,这步可以完成。然后需要安装python script插件,这里安装成功后会报下图中的错。后又试图直接下载插件的dll并放入notepad安装目录下,几经周折都没能成功。这里也算是留下一个关于Notepad++使用方面的问题。
二. 查明编码格式后转码
1. 使用chardet这个库,用chardet.detect() 查明现在的编码格式其实是‘GB23212'. 这里要注意chardet.detect()函数接收的是字节流而不是字符串,所以读取文件时要用open('file','rb'),注意时’rb'而不是‘r'
2. 这样我们就可以用codecs将文件夹下的所有txt文件转成utf-8格式。很直观的,转码完成后记事本就可以正常打开显示中文了。当然也可以在python程序中加以验证。
3. 最终我们可以将文档里的内容读取出来存在本地的list中,处理后作为神经网络的input。那这里最后需要注意的就是open()函数中要使用encoding='utf-8',否则还会读成乱码
具体代码在github上:https://github.com/TianqinCai/Chinese_NLP/blob/master/Chinese%20NLP.ipynb
网友评论