前沿科技探索家 · 2020年12月17日

开源!我知道你不知道,百度开源词法LAC 2.0帮你更懂中文

v2-68d37a808ed9c1c808811708d43697e3_1440w.jpg
百度 NLP 权威发布,可能是最好用的中文词法分析工具——LAC 2.0闪亮登场!与 LAC 1.0相比,LAC 2.0在性能与效果上有明显提升,且支持多种开发语言,一键安装调用,更加快速便捷。

LAC 项目地址

https://github.com/baidu/lac

LAC 是什么

LAC 全称 Lexical Analysis of Chinese,是百度 NLP(自然语言处理部)研发的一款词法分析工具,可实现中文分词、词性标注、专名识别等功能。

LAC 在分词、词性、专名识别的整体准确率超过90%,以专名识别为例,其效果要比同类词法分析工具提升10%以上。

例如:我知道你不知道,百度开源词法 LAC 帮你更懂中文!
v2-17dc776259570c453c9ef2f419710f7d_1440w.jpg.png

LAC 2.0可以从语义合理性角度精确完成分词、词性标注和专名的一体化识别。

LAC 2.0有哪些优势

自开源以来,LAC 得到了不少关注与好评。为了进一步提升厂内外开发者的使用体验,我们对 LAC 进行了新一轮全面升级,带来5大优势:

效果好:通过大规模语料自动标注和联合模型训练,整体效果业内领先。

通过前沿的深度学习模型 BiGRU-CRF,LAC 2.0可以联合学习分词、词性标注和实体识别这三个具有强关联性的任务,模型的整体效果 F1 值超过了0.91,词性标注 F1 值超过了0.94,专名识别 F1 值超过了0.85,效果对比业内其他开源工具达到了领先的水平。

同时,对于词法分析而言,OOV(新词,out of vocabulary)是当前模型效果提升最大的障碍,最有效的解决方法是增加数据量,但是人工标注数据需要巨大的人力成本。我们基于强大的 NLP 技术积累,通过自动标注生成大规模数据集,让模型可以学习到强大的泛化特征,并通过一定量的人工标注数据对模型进行修正。相较于仅用人工标注数据集进行模型训练,通过该方法训练得到的模型整体效果提升超过3%。

效率高:优化模型参数与性能,重构 C++ 调用代码,简化编译流程,性能提升约2倍。

与旧版本相比,LAC 2.0的效率得到较大的提升。通过精简模型参数,结合飞桨预测库的性能优化,LAC 2.0词法分析的 CPU 单线程性能优于其他主流工具(详细数据参考表4词性标注与实体识别性能评估)。

可定制:LAC 2.0可以实现简单可控的干预机制,能够精准匹配用户词典对模型进行干预,词典支持长片段形式,使得干预更为精准。
v2-10c638563fbafa8c7a214454bfcf51ce_1440w.jpg

模型示意图
调用便捷:增加 Python 的 pip 一键安装,增加 Java 和 Android 的支持与调用。

LAC 1.0仅支持 C++ 和 Python,调用相对复杂有一定门槛。LAC 2.0则同时提供了 Java、android、C++ 和 Python 语言,重构相关代码,相比 LAC 1.0版本使用更便捷。同时,LAC 2.0支持一键安装,开发者可以实现快速调用和集成。

支持移动端:定制超轻量级模型,体积仅为 2M。

LAC 2.0在对 Android 应用的支持上,定制了一版超轻量级的模型,该模型的体积仅为2M,在主流千元手机上测试单线程性能达到了200 QPS,能够满足大多数移动应用的需求,效果大幅超过了同等体积量级的模型。

LAC 2.0对比其他开源工具

分词效果

我们选择市面上流行的3款分词工具进行模型比较。并在pku、msr、ctb、weibo等多个开源数据集对模型效果进行评测,从结果上看,LAC 在不同数据集的分词效果均明显优于相关工具,平均分词错误至少降低38.5%,如下所示:
v2-2677a641fdea72fcf0b82f1f73609ce6_1440w.jpg

该表格列出的数据是通过各个工具提供的训练接口在不同开源数据集上进行微调训练得出。采用数据集微调训练后再评估,是因为目前分词结果并没有统一的标准,比如人名“张三”,MSR 数据集切分时会将其作为一个完整的单词,而工具 A 数据集标准则认为姓和名需要进行切分,故而会切分为“张 三”。不同标准导致结果差异大,故而通过微调训练使得模型在一个分词标准下进行比较。

LAC 默认模型的分词标准偏向于实体粒度,会比其他开源工具的分词粒度更大一些,有需要的同学,可通过增量训练接口和定制接口快速实现模型微调和粒度迁移。

专名识别效果

标注任务中,我们以词法任务中难度最大的专名识别任务对 LAC 的效果进行评估,在开源的新闻实体识别数据集(MSRA)与简历实体识别数据集(Resume)上比较了 LAC 2.0与其他工具的效果差异:
v2-bfef7c62fc5787069f98830556cbfd89_1440w.jpg

表1 MSRA 专名效果评估
v2-316dda98828798a372ff607749777e70_1440w.jpg
表2 Resume 专名效果评估
表1、表2中 LAC 的人名识别效果显示会稍低于工具 B,实则是因为 LAC 认为“张先生”、“李老师”才是一个完整的人名实体,而其他工具和 MSRA 数据集则将其中“张”字、“李”字标注为人名实体。故而 LAC 的人名识别效果实际上会显著高于表中的数值,并优于工具 B。

综上可知,LAC 的专名识别的整体效果要显著优于其他工具。

性能比较

我们也对 LAC 与其他工具的性能进行比较,测试环境为:Python 语言,Linux 系统,CPU E5-2650 v3

其分词的性能如表3所示,词性标注与实体识别性能如表4所示,LAC 还可实现批处理的形式,性能会更快一些。

从结果上看,在分词速率上,LAC 性能优于工具 A 和工具 B。而在词性标注和实体识别上,LAC 的性能是最高的。

v2-9a7e599d635efea8c42ab53ed4cb3809_1440w.jpg
表3 分词性能评估
v2-cedac7771ce6677912b2f0464753ebd9_1440w.jpg
表4 词性标注与实体识别性能评估
LAC 2.0如何安装使用

LAC 2.0安装非常简单,Python 语言的开发者可直接使用 pip 安装,兼容Python2/3,兼容Windows、Linux和MacOS,其他语言(JAVA、C++、Android)的调用可以参考 GitHub 的 README 文档中安装与使用部分。

pip install lac

from LAC import LAC

lac = LAC()

lac.run("百度是一家高科技公司")

感谢大家的关注,打开下方链接,可了解更多技术详情!

LAC 项目地址

https://github.com/baidu/lac

百度自然语言处理(Natural Language Processing,NLP)以『理解语言,拥有智能,改变世界』为使命,研发自然语言处理核心技术,打造领先的技术平台和创新产品,服务全球用户,让复杂的世界更简单。

推荐阅读
关注数
12971
内容数
325
带你捕获最前沿的科技信息,了解最新鲜的科技资讯
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息