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

百度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帮你更懂中文!

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可以实现简单可控的干预机制,能够精准匹配用户词典对模型进行干预,词典支持长片段形式,使得干预更为精准。

模型示意图

调用便捷: 增加Python的pip一键安装,增加Java和Android的支持与调用

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

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

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

LAC 2.0对比其他开源工具

分词效果

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

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

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

专名识别效果

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

表1 MSRA 专名效果评估

表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的性能是最高的。

表3 分词性能评估

表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)以『理解语言,拥有智能,改变世界』为使命,研发自然语言处理核心技术,打造领先的技术平台和创新产品,服务全球用户,让复杂的世界更简单。