详解中文维基百科数据处理流程及脚本代码

导读

最近在做词向量相关工作,词向量的训练数据采用中文维基百科数据,训练之前,要对维基百科数据进行处理,这篇文章记录了一些处理过程相关的脚本

 

一、维基百科

维基百科(Wikipedia),是一个基于维基技术的多语言百科全书协作计划,也是一部用不同语言写成的网络百科全书。维基百科是由吉米·威尔士与拉里·桑格两人合作创建的,于2001年1月13日在互联网上推出网站服务,并在2001年1月15日正式展开网络百科全书的项目。

 

二、维基百科处理

1 环境配置

(1)编程语言采用 python3

(2)Gensim第三方库,Gensim是一个Python的工具包,其中有包含了中文维基百科数据处理的类,使用方便。

(3)OpenCC第三方库,是中文字符转换,包括中文简体繁体相互转换等。

  • OpenCC:https://github.com/BYVoid/OpenCC,OpenCC源码采用c++实现,如果会用c++的可以使用根据介绍,make编译源码。

  • OpenCC也有python版本实现,可以通过pip安装(pip install opencc-python),速度要比c++版慢,但是使用方便,安装简单,推荐使用pip安装。

2 数据下载

  • 中文维基百科数据按月进行更新备份,一般情况下,下载当前最新的数据,下载地址(https://dumps.wikimedia.org/zhwiki/latest/),我们下载的数据是:zhwiki-latest-pages-articles.xml.bz2。

  • 中文维基百科数据一般包含如下几个部分:

  • 训练词向量采用的数据是正文数据,下面我们将对正文数据进行处理。

3 数据抽取

  • 下载下来的数据是压缩文件(bz2,gz),不需要解压,这里已经写好了一份利用gensim处理维基百科数据的脚本

    wikidata_process

       https://github.com/bamtercelboo/corpus_process_script/tree/master/wikidata_process

  • 使用:

    python wiki_process.py zhwiki-latest-pages-articles.xml.bz2 zhwiki-latest.txt

  • 这部分需要一些的时间,处理过后的得到一份中文维基百科正文数据(zhwiki-latest.txt)。

  • 输出文件类似于:

    歐幾里得 西元前三世紀的古希臘數學家 現在被認為是幾何之父 此畫為拉斐爾的作品 雅典學院 数学 是利用符号语言研究數量 结构 变化以及空间等概念的一門学科

4 中文繁体转简体

  • 经过上述脚本得到的文件包含了大量的中文繁体字,我们需要将其转换成中文简体字

  • 我们利用OpenCC进行繁体转简体的操作,这里已经写好了一份python版本的脚本来进行处理

  • chinese_t2s

    https://github.com/bamtercelboo/corpus_process_script/tree/master/chinese_t2s

  • 使用:

    python chinese_t2s.py –input input_file –output output_file

    like:

    python chinese_t2s.py –input zhwiki-latest.txt –output zhwiki-latest-simplified.txt

  • 输出文件类似于

    欧几里得 西元前三世纪的古希腊数学家 现在被认为是几何之父 此画为拉斐尔的作品 雅典学院 数学 是利用符号语言研究数量 结构 变化以及空间等概念的一门学科

5.清洗语料

  • 上述处理已经得到了我们想要的数据,但是在其他的一些任务中,还需要对这份数据进行简单的处理,像词向量任务,在这得到的数据里,还包含很多的英文,日文,德语,中文标点,乱码等一些字符,我们要把这些字符清洗掉,只留下中文字符,仅仅留下中文字符只是一种处理方案,不同的任务需要不同的处理,这里已经写好了一份脚本

    clean

    https://github.com/bamtercelboo/corpus_process_script/tree/master/clean

  • 使用:

    python clean_corpus.py –input input_file –output output_file

    like:

    python clean_corpus.py –input zhwiki-latest-simplified.txt –output zhwiki-latest-simplified_cleaned.txt

  • 效果:

    input:

    哲学 哲学(英语:philosophy)是对普遍的和基本的问题的研究,这些问题通常和存在、知识、价值、理性、心灵、语言等有关。

    output:

    哲学哲学英语是对普遍的和基本的问题的研究这些问题通常和存在知识价值理性心灵语言等有关

 

三、数据处理脚本

近在github上新开了一个Repository

corpus-process-script

https://github.com/bamtercelboo/corpus_process_script

在这个repo,将存放中英文数据处理脚本,语言不限,会有详细的README,希望对大家能有一些帮助。

 

References

[1] 繁体转简体,CentOS安装OpenCC,升级到gcc4.6

http://www.linuxdown.net/install/soft/2016/0122/4445.html

[2] OpenCC - 简体繁体转换

https://www.jianshu.com/p/834a02d085b6

[3] wiki语料处理

http://www.cnblogs.com/chenbjin/p/5635853.html

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

http://www.52nlp.cn/%E4%B8%AD%E8%8B%B1%E6%96%87%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E8%AF%AD%E6%96%99%E4%B8%8A%E7%9A%84word2vec%E5%AE%9E%E9%AA%8C

 

小编:

以上都是师兄刘宗林最近在做中文维基百科词向量前期的数据处理记录,很详细哒。包括如何处理和各种脚本,跟着流程实现一遍,你就能简单上手类似的数据处理部分。当然,如果想了解词向量理论,点这里

该内容来自刘宗林师兄博客:

https://bamtercelboo.github.io/2018/05/10/wikidata_Process/

彩蛋:

师兄github中有很多神经网络自然语言处理实验源代码:如果你对代码实现很头疼的话,这些希望对你有帮助!

github:

https://github.com/bamtercelboo


更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux shell命令行及脚本编程是一种在Linux操作系统中使用命令行和脚本语言进行编程和自动化的技术。下面将详细介绍一些常见的实例来解释这个概念。 1. 文件操作:通过命令行可以完成文件的创建、复制、移动、删除等操作。比如,使用`mkdir`命令创建一个新的目录,使用`cp`命令复制文件,使用`mv`命令移动文件,使用`rm`命令删除文件等。 2. 系统管理:通过shell命令行,可以管理和监控Linux系统的各种信息。比如,使用`ps`命令查看当前运行的进程,使用`top`命令监控CPU和内存的使用情况,使用`df`命令查看磁盘空间等。 3. 网络管理:通过shell脚本编程可以实现一些网络管理的功能。比如,使用`ping`命令来测试主机的连通性,使用`ifconfig`命令配置网络接口,使用`curl`命令进行HTTP请求等。 4. 任务调度:通过shell脚本编程可以实现定时任务的自动化执行。比如,使用`crontab`命令可以定时执行一些任务,比如备份文件、清理临时文件等。 5. 数据处理:通过shell脚本编程可以对数据进行一些处理和分析。比如,使用`awk`命令可以进行文本处理和分析,使用`grep`命令进行文本搜索,使用`sed`命令进行文本替换等。 总结来说,通过shell命令行及脚本编程,可以实现各种功能的自动化和批量处理,提高工作效率。掌握这些技能对于Linux系统管理员和开发人员来说非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值