去落格博客阅读完整排版的获取 中文 维基百科语料
最近在做输入法的词库,实现新的整句输入模型,(回头我会把之前的基于词的整句输入模型讲讲),新的整句输入模型是基于 HMM (也就是隐马尔可夫模型)来做的,当然了,由于我个人设备资金等有限,只做了二阶矩阵。不过即使如此,模型还是需要训练的。
当然,不是说用小说名著来训练就不好,只不过很难找到各行各业的相关小说,毕竟,它们覆盖的面积太单一了,这其实并不是高质量的语料库。说起高质量,那自然是非维基百科莫属,现在,我们就来获取维基百科的所有中文资料,并把它们导出为语料库,用以给模型训练。
不用写爬虫来爬了,维基百科是开放的,所以他们自己提供了打包下载的链接,真的是很贴心。下载地址是:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 。
这是官方定期 dump 出来的 xml 格式数据,下载的话基本是 1GB 左右,中文的内容确实太少啊。如果你解压缩,那么是一个 6GB 多的 xml 文件,不过别去傻乎乎地解压缩,维基百科自己给你提供了方便的工具来导出内容。
这里我们使用 python 来执行导出,首先下载维基百科提供的工具 gensim
pip3 install gensim
安装成功后,大概这样来写python脚本
import gensim input_file = "./article/zhwiki-latest-pages-articles.xml.bz2" f = open('./article/zhwiki.txt',encoding='utf8',mode='w') wiki = gensim.corpora.WikiCorpus(input_file, lemmatize=False, dictionary={}) for text in wiki.get_texts(): str_line = bytes.join(b' ', text).decode() f.write(str_line+'\n')
UserWarning: Pattern library is not installed, lemmatization won't be available.对于这个警告,忽略即可,我们并不使用它。
在我 2015 年款的中配13寸rmbp上跑了大概十来分钟就好了,导出的数据是 950M 文本,每篇文章一行。
好吧,直接导出的文本太大已经难以用普通的文本编辑器打开了,但显然,我们所谓的中文包含了简体繁体……所以还是应该处理一下的,这里我是将繁体转换为简体,当然反过来也行,我们使用 OpenCC 来完成这个工作。
当然了,我是 macOS 平台,直接使用命令一键安装:
brew install opencc
安装好后,还需要给它写一个配置文件,就写在你的语料库同目录下即可:
{ "name": "Traditional Chinese to Simplified Chinese", "segmentation": { "type": "mmseg", "dict": { "type": "ocd", "file": "TSPhrases.ocd" } }, "conversion_chain": [{ "dict": { "type": "group", "dicts": [{ "type": "ocd", "file": "TSPhrases.ocd" }, { "type": "ocd", "file": "TSCharacters.ocd" }] } }] }
将其保存为
zht2zhs_config.json备用。
接下来在当前目录下执行命令
opencc -i zhwiki.txt -o zhswiki.txt -c zht2zhs_config.json
这下就OK了。
这样一来,我们就得到了一个内容为简体,没有标点符号和数字的中文维基百科语料库,把它扔到训练机器中读取吧~
获取 中文 维基百科语料,首发于落格博客。