想要训练中文NLP模型却苦于没数据?是时候支持开源中文了

IrvingDick 发布于1年前

项目地址:https://github.com/brightmart/nlp_chinese_corpus

在学习 NLP 的这条不归路上,我们总会发现大多数先进算法与优质示例代码都是用英文数据集。而当我们满怀希望地把模型迁移到中文世界时,缺少公开的优质数据集简直就是天堑。比如说最简单的中文语料,只需要一段段自然的中文文本就行了,我们可以用它训练 语言模型 词嵌入 等模型,然而实际上我们会发现公开的大型语料真的很少。

少还只是一点,现有的中文 语料 很多都非常陈旧,且发布后就没有机构维护和更新。很多时候,这些较为陈旧的语料量并不是很大,满足不了深度模型所需要的数据量。此外,很多语料还需要复杂的预处理过程,例如去掉 XML 标签、抽取正文以及去掉多余符号等。

这些都是很难克服的问题,可能真正要训练一个顶尖的模型,还是需要从百度百科或主流媒体爬取大型语料。我们也试过训练简单的词嵌入模型,最终发现也许维基百科提供的中文语料接口是比较简单且大型的数据集。但即使采用维基中文数据,也有一系列处理过程,包括使用 wikiextractor 抽取维基文字和使用 OpenCC 将繁体转化为简体等。

想要使用维基从头训练词嵌入的读者可查阅:https://github.com/HoratioJSY/cn-words

想要训练中文NLP模型却苦于没数据?是时候支持开源中文了

尽管中文信息无处不在,但普通的开发者或研究者并没有比较好的渠道来获取大型中文语料,因此这个项目正是为了构建大规模中文自然语言处理语料。目前项目已经收纳了三个大型语料库,包括维基百科(wiki2019zh)、新闻语料(news2016zh)和百科问答(baike2018qa),它们都按一定结构打包进 JSON 文件,因此文本的抽取也非常方便。

该项目将不断扩展,作者表示截至今年 5 月份,一期目标需要实现 10 个百万级中文语料和 3 个千万级中文语料。今年年底需要完成的二期目标更是提出构建 10 个千万级中文语料和 1 个亿级中文语料。

三大中文数据集

1. 维基百科 json 版 (wiki2019zh)

维基百科数据一共有 1,043,224 个词条,原始文件大小 1.6G,压缩文件 519M。该数据集是最近(2019.2.7)更新的,可用于预训练语言模型哦、词嵌入模型和构建知识问答。机器之心下载后发现整个数据集分割为了很多小型 JSON 文件,这也适合直接用 Sublime 等纯文本编辑器查看具体内容。我们可以直接使用 Python 的 json 包或 Pandas 读取 JSON 文件,并抽取对应的文本。

下载地址:https://pan.baidu.com/s/1uPMlIY3vhusdnhAge318TA

如下展示了 JsON 文件的结构,每一行都是完整的词条(键值对),每一个词条的结构如下所示:

{"id":<id>,"url":<url>,"title":<title>,"text":<text>}

其中,title 是词条的标题,text 是正文;通过"\n\n"换行。

例子:

{"id": "53", "url": "https://zh.wikipedia.org/wiki?curid=53", "title": "经济学", "text": "经济学\n\n经济学是一门对产品和服务的生产、分配以及消费进行研究的社会科学。西方语言中的“经济学”一词源于古希腊的。\n\n经济学注重的是研究经济行为者在一个经济体系下的行为,以及他们彼此之间的互动。在现代,经济学的教材通常将这门领域的研究分为总体经济学和个体经济学。微观经济学检视一个社会里基本层次的行为,包括个体的行为者(例如个人、公司、买家或卖家)以及与市场的互动。而宏观经济学则分析整个经济体和其议题,包括失业、通货膨胀、经济成长、财政和货币政策等。..."}

效果:

经济学
经济学是一门对产品和服务的生产、分配以及消费进行研究的社会科学。西方语言中的“经济学”一词源于古希腊的。
经济学注重的是研究经济行为者在一个经济体系下的行为,以及他们彼此之间的互动。在现代,经济学的教材通常将这门领域的研究分为总体经济学和个体经济学。微观经济学检视一个社会里基本层次的行为,包括个体的行为者(例如个人、公司、买家或卖家)以及与市场的互动。而宏观经济学则分析整个经济体和其议题,包括失业、通货膨胀、经济成长、财政和货币政策等。
其他的对照还包括了实证经济学(研究「是什么」)以及规范经济学(研究「应该是什么」)、经济理论与实用经济学、行为经济学与理性选择经济学、主流经济学(研究理性-个体-均衡等)与非主流经济学(研究体制-历史-社会结构等)。
经济学的分析也被用在其他各种领域上,主要领域包括了商业、金融、和政府等,但同时也包括了如健康、犯罪、教育、法律、政治、社会架构、宗教、战争、和科学等等。到了21世纪初,经济学在社会科学领域各方面不断扩张影响力,使得有些学者讽刺地称其为「经济学帝国主义」。
在现代对于经济学的定义有数种说法,其中有许多说法因为发展自不同的领域或理论而有截然不同的定义,苏格兰哲学家和经济学家亚当·斯密在1776年将政治经济学定义为「国民财富的性质和原因的研究」,他说:
让-巴蒂斯特·赛伊在1803年将经济学从公共政策里独立出来,并定义其为对于财富之生产、分配、和消费的学问。另一方面,托马斯·卡莱尔则讽刺的称经济学为「忧郁的科学」(Dismal science),不过这一词最早是由马尔萨斯在1798年提出。约翰·斯图尔特·密尔在1844年提出了一个以社会科学定义经济学的角度:
.....

如果使用 Pandas 读取 JSON 文件,运行以下代码就行了:

import pandas as pd

data = pd.read_json(path_or_buf='./wiki_00', orient='records', encoding='utf-8', lines=True)

想要训练中文NLP模型却苦于没数据?是时候支持开源中文了

2. 新闻语料 json 版 (news2016zh)

包含了 250 万篇新闻(原始数据 9G,压缩文件 3.6G;新闻内容跨度:2014-2016 年)。新闻来源涵盖了 6.3 万个媒体,含标题、关键词、描述、正文。数据去重并分成三个部分:训练集(243 万)、验证集(7.7 万)、测试集(数万,不提供下载)。

该数据集除了用于预训练语言模型与词嵌入模型,还能用于训练标题生成模型、关键词生成模型或给新闻分类。

  • 下载地址:https://pan.baidu.com/s/1LJeq1dkA0wmYd9ZGZw72Xg

  • 密码:film

可以做为【通用中文语料】,训练【词向量】或做为【预训练】的语料;

也可以用于训练【标题生成】模型,或训练【关键词生成】模型(选关键词内容不同于标题的数据);

亦可以通过新闻渠道区分出新闻的类型。

结构:

{'news_id': <news_id>,'title':<title>,'content':<content>,'source': <source>,'time':<time>,'keywords': <keywords>,'desc': <desc>, 'desc': <desc>}

其中,title 是新闻标题、content 是正文、keywords 是关键词、desc 是描述、source 是新闻的来源、time 是发布时间。

例子:

{"news_id": "610130831", "keywords": "导游,门票","title": "故宫淡季门票40元 “黑导游”卖外地客140元", "desc": "近日有网友微博爆料称,故宫午门广场售票处出现“黑导游”,专门向外地游客出售高价门票。昨日,记者实地探访故宫,发现“黑导游”确实存在。窗口出售", "source": "新华网", "time": "03-22 12:00", "content": "近日有网友微博爆料称,故宫午门广场售票处出现“黑导游”,专门向外地游客出售高价门票。昨日,记者实地探访故宫,发现“黑导游”确实存在。窗口出售40元的门票,被“黑导游”加价出售,最高加到140元。故宫方面表示,请游客务必通过正规渠道购买门票,避免上当受骗遭受损失。目前单笔门票购买流程不过几秒钟,耐心排队购票也不会等待太长时间。....再反弹”的态势,打击黑导游需要游客配合,通过正规渠道购买门票。"}

3. 百科类问答 json 版 (baike2018qa)

150 万个问答 ( 原始数据 1G 多,压缩文件 663M;数据更新时间:2018 年),每个问题都标注有类别,共 492 个类别。数据去重并分成三个部分:训练集(142.5 万)、验证集(4.5 万)、测试集(数万,不提供下载)。

相比前面两个数据集,该数据集不仅能用于构建百科类的知识问答,同时它的类别信息比较有用,可以用于监督学习而构建更好的句子表征模型。

  • 下载地址:https://pan.baidu.com/s/12TCEwC_Q3He65HtPKN17cA

  • 密码:fu45

可以做为通用中文语料,训练词向量或做为预训练的语料;也可以用于构建百科类问答;其中类别信息比较有用,可以用于做监督训练,从而构建

更好句子表示的模型、句子相似性任务等。

结构:

{"qid":<qid>,"category":<category>,"title":<title>,"desc":<desc>,"answer":<answer>}

其中,category 是问题的类型,title 是问题的标题,desc 是问题的描述,可以为空或与标题内容一致。

例子:

{"qid": "qid_2540946131115409959", "category": "生活知识", "title": "冬天进补好一些呢,还是夏天进步好啊? ", "desc": "", "answer": "你好!\r\r当然是冬天进补好的了,夏天人体的胃处于收缩状态,不适宜大量的进补,所以我们有时候说:“夏天就要吃些清淡的,就是这个道理的。”\r\r不过,秋季进补要注意“四忌” 一忌多多益善。任何补药服用过量都有害。认为“多吃补药,有病治病,无病强身”是不的。过量进补会加重脾胃、肝脏负担。在夏季里,人们由于喝冷饮,常食冻品,多有脾胃功能减弱的现象,这时候如果突然大量进补,会骤然加重脾胃及肝脏的负担,使长期处于疲弱的消化器官难于承受,导致消化器官功能紊乱。 \r\r二忌以药代食。重药物轻食物的做法是不科学的,许多食物也是好的滋补品。如多吃荠菜可治疗高血压;多吃萝卜可健胃消食,顺气宽胸;多吃山药能补脾胃。日常食用的胡桃、芝麻、花生、红枣、扁豆等也是进补的佳品。\r\r三忌越贵越好。每个人的身体状况不同,因此与之相适应的补品也是不同的。价格昂贵的补品如燕窝、人参之类并非对每个人都适合。每种进补品都有一定的对象和适应症,应以实用有效为滋补原则,缺啥补啥。 \r\r四忌只补肉类。秋季适当食用牛羊肉进补效果好。但经过夏季后,由于脾胃尚未完全恢复到正常功能,因此过于油腻的食品不易消化吸收。另外,体内过多的脂类、糖类等物质堆积可能诱发心脑血管病。"}

贡献语料

最后,为了一期和二期目标,整个项目还需要更多的社区帮助,正如作者所言:

为了共同建立一个大规模开放共享的中文语料库,以促进中文自然语言处理领域的发展,凡提供语料并被采纳到该项目中,

除了会列出贡献者名单(可选)外,我们会根据语料的质量和量级,选出前 20 个同学,结合您的意愿,寄出键盘、鼠标、

显示屏、无线耳机、智能音箱或其他等值的物品,以表示对贡献者的感谢。

有料的同学,快贡献开放中文语料吧:nlp_chinese_corpus@163.com。

查看原文: 想要训练中文NLP模型却苦于没数据?是时候支持开源中文了

  • bigduck
  • beautifulmouse
  • bigfrog
  • tinytiger
  • orangebutterfly
  • greenwolf