IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    获取 中文 维基百科语料

    R0uter发表于 2016-12-02 10:39:54
    love 0

    去落格博客阅读完整排版的获取 中文 维基百科语料

    最近在做输入法的词库,实现新的整句输入模型,(回头我会把之前的基于词的整句输入模型讲讲),新的整句输入模型是基于 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 来完成这个工作。

    安装 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了。

    转换为简体内容
    转换为简体内容

    结论

    这样一来,我们就得到了一个内容为简体,没有标点符号和数字的中文维基百科语料库,把它扔到训练机器中读取吧~

    延伸阅读

    中文维基百科文本数据分析之一(数据获取与预处理)

    中英文维基百科语料上的Word2Vec实验

    获取 中文 维基百科语料,首发于落格博客。

    其他推荐:
    1. OpenWRT系列教程之 WEB管理界面安装——LUCI
    2. 如何使用Windows2008r2为vSphere配置nfs服务器
    3. Windows 8.1 “语言包无法使用”的解决办法
    4. 在 Xcode 中直接预览应用 UI
    5. WordPress 编辑器 增加中文字体 TinyMCE Advanced 插件



沪ICP备19023445号-2号
友情链接