这群工程师,业余将中文 NLP 推进了一大步

有人这么说到,如果你研究过 NLP(自然语言处理),就会知道中文 NLP 有多难。

虽然同属 NLP,但在英文和中文领域,因为语言习惯的不同,导致二者的分析和处理存在很大的差异,难点和挑战也各不相同。

中文 NLP 中的一些方法

而且当前流行的一些模型,大都是针对英文开发,再加上在中文用语的特有习惯,很多任务(如分词)都十分困难,导致了中文 NLP 领域进展十分缓慢。

但这一类问题或许将会很快被改变,因为自去年以来,陆续出现很多十分出色的开源项目,极大地推动了 NLP 中文领域的发展。

模型:中文预训练的 ALBERT

2018 年,谷歌推出了语言模型 BERT ,Bidirectional Encoder Representations from Transformers,因为极其强劲的性能,一发布就血洗了多项 NLP 标准的榜单,随即被封神。

但 BERT 的一个缺点就是太过庞大,BERT-large 拥有 3 亿参数,训练起来十分不易。2019 年谷歌 AI 推出了轻量级的 ALBERT(A Little BERT),它比 BERT 模型的参数小了 18 倍,但性能却在其之上。

ALBERT 推出时的性能对比

虽然解决了预训练模型训练成本高,参数量巨大的问题,但 AlBERT 还是只针对于英文语境,这让专注中文开发的工程师感到了一丝无奈。

为了让这个模型可在中文语境下使用,造福更多的开发者,数据工程师徐亮所在的团队,于 2019 年 10 月,开源了首个中文预训练的中文版 ALBERT 模型。

项目在 GitHub 上收获了 2200 多个点赞

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

这个中文预训练的 ALBERT 模型(记作 albert_zh),是在海量中文语料上训练而得来,其训练的内容来自多个百科,新闻以及互动社区,包含了 30G 的中文语料,超过一亿亿汉字。

从数据对比来看,albert_zh 预训练序列长度设置为 512,批次为 4096,训练产生了 3.5 亿个训练数据,而另一款强劲的预训练模型 roberta_zh ,预训练产生了 2.5 亿个训练数据,序列长度为 256。

albert_zh 预训练生成的训练数据更多、使用的序列长度更长,预计 albert_zh 会有比 roberta_zh 更好的性能表现,并且能更好处理较长的文本。

albert_zh 和其他模型的性能比较

此外,albert_zh 训练了从 tiny 版到 xlarge 版一系列不同参数量的 ALBERT 模型,极大地促进了 ALBERT 在中文 NLP 领域的普及。

值得一提的是在 2020 年 1 月,谷歌 AI 发布了 ALBERT V2 ,才缓缓地推出了 ALBERT 的谷歌中文版。

基准 :做中文 GLUE 的 ChineseGLUE

当有了模型之后,又该如何去判断它们好坏呢?这需要有足够好的测试基准,同样在去年,针对中文 NLP 的基准测试 ChineseGLUE 也被开源。

ChineseGLUE 借鉴于业内著名的测试基准 GLUE,后者是九种英语语言理解任务的集合,其目标是推动通用的、鲁棒的自然语言理解系统的研究。

此前没有与 GLUE 相对应的中文版本,一些预训练模型在不同任务上的公开测试无法得到评断,导致中文领域 NLP 发展和应用出现错位,甚至是技术应用上的滞后。

面对这种情形,AlBERT 第一作者蓝振忠博士,ablbert_zh 开发者徐亮等 20 多位工程师,共同推出了针对中文 NLP 的基准:ChineseGLUE。

项目地址
https://github.com/chineseGLUE/chineseGLUE

ChineseGLUE 的出现,让中文被纳入作为新模型评价的一个指标,对中文预训练模型的测试,形成了一个完整的评价体系。

这个强大的测试基准,包含了以下几个方面的内容:

1)包含若干句子或句子对的中文任务基准测试,覆盖多个不同程度的语言任务。

2)提供性能评估的排行榜,排行榜会定期更新,以此来提供模型的选择依据。

3)收集了一些基准模型,包含开始的代码、预训练模型 ChineseGLUE 任务的基准,这些基准在 TensorFlow,PyTorch,Keras 等框架下可用。

4)拥有预训练或语言建模研究的巨型原始语料库,大约达到了 10G(2019 年),而且计划到 2020 年底将扩大到充足的原始语料库(如 100G)。

项目于 2019 年 10 月增加了评测网站

ChineseGLUE 的推出和不断完善,有望像 GLUE 见证 BERT 出现那般,见证更强大的中文 NLP 模型诞生。

2019 年 12 月 11 月底,该项目迁移至更全面的更多技术支持的项目:CLUEbenchmark/CLUE。

项目地址
https://github.com/CLUEbenchmark/CLUE

数据:史上最全数据集、最大语料库

有了预训练模型和测试基准,还有一个重要的环节在于数据集、语料库等数据资源。

这就促成了一个更全面的组织 CLUE ,CLUE 为 Chinese GLUE 的缩写,这是一个为中文语言理解提供评估基准的开源组织,他们关注的方向有:任务和数据集,基准,经过预训练的中文模型,语料库和排行榜发布。

前段时间,CLUE 发布了最大最全的中文 NLP 数据集,涵盖 10 个大类共 142 个数据集,CLUEDatasetSearch。

项目地址
https://github.com/CLUEbenchmark/CLUEDatasetSearch

其内容包括 NER、QA、情感分析、文本分类、文本分配、文本摘要、机器翻译、知识图谱、语料库以及阅读理解等当前研究的全部主要方向。

只要在网站页面上键入关键词,或者所属领域等信息,就能搜索到相应的资源。每一个数据集,会提供名称、更新时间、提供者、说明、关键字、类别以及论文地址等几方面的信息。

最近,CLUE 组织又陆续开源了 100 GB 的中文语料,以及高质量的中文预训练模型集合,并且在 arViv 提交了一篇论文。

https://arxiv.org/abs/2003.01355

在语料方面,CLUE 开源了 CLUECorpus2020:Large-scale Pre-training Corpus for Chinese 100G 的中文预训练语料。

这些内容,是对 Common Crawl 数据集的中文部分,进行语料清洗后得到的数据。

它们可直接用于预训练、语言模型或语言生成任务,或发布专用于中文 NLP 任务的小词表。

使用小数据集在 BERT-base 上的性能对比

项目地址
https://github.com/CLUEbenchmark/CLUECorpus2020

在模型合集方面,则是发布了 CLUEPretrainedModels:高质量中文预训练模型集合— 最先进大模型、最快小模型、相似度专门模型。

大模型(第三行)性能对比

其中大模型取得与当前中文 NLP 效果最佳模型一致的效果,某些任务有胜出;小模型速度比 Bert-base 提升了 8 倍左右;语义相似度模型,用于处理语义相似度或句子对问题,大概率比直接用预训练模型效果更优。

项目地址
https://github.com/CLUEbenchmark/CLUEPretrainedModels

这些资源的发布,某种程度上来讲,像是推动发展进程的燃料,而足够充足的资源,或许将开启中文 NLP 行业的飞奔之路。

他们让中文 NLP 变得 Easy

在语言角度来说,中文和英文是全球使用人数最多,影响力最大的两种语言,但因为不同的语言特色,在 NLP 领域的研究上也面对着不同的问题。

虽然中文的 NLP 发展,相比于机器能更好理解的英文研究,确实要困难和滞后了一些,但正是因为有文中那些愿意推动中文 NLP 发展的工程师,不断地探索并分享自己的成果,才能让这些技术能够更好地进行迭代。

CLUE 的几位代码贡献者

感谢他们的努力,贡献了这么多优质的项目!同时,也期望有更多的人,能够参与进来,共同推动中文 NLP 的发展大业。

—— 完 ——