超赞!百度词法分析工具 LAC 全面升级,2.0 版在线极速体验

2020 年 6 月 24 日 AINLP

关于中文词法分析(中文分词、词性标注、命名实体识别)相关的工具,我们在之前已经多次提到过百度LAC(https://github.com/baidu/lac),除了在易用性上稍弱外,其他方面,特别在专名识别的横向对比中还是很亮眼的。最近百度NLP发布了LAC 2.0:开源!我知道你不知道,百度开源词法LAC 2.0帮你更懂中文,看完文章的第一感受就是易用性大大加强了,之前需要通过PaddleNLP或者PaddleHub调用lac,现在 "pip install lac" 后即可直接调用,相当方便。所以花了一点时间,把 LAC 2.0 单独作为一个接口部署在AINLP公众号的自然语言处理工具测试平台了,感兴趣的同学可以通过AINLP公众号后台对话极速体验LAC 2.0,输入"LAC 中文文本"直接获取百度LAC的中文文词、词性标注、NER识别结果:


关于百度LAC,首先看一下官方主页的介绍:

LAC全称Lexical Analysis of Chinese,是百度自然语言处理部研发的一款联合的词法分析工具,实现中文分词、词性标注、专名识别等功能。该工具具有以下特点与优势:

效果好:通过深度学习模型联合学习分词、词性标注、专名识别任务,整体效果F1值超过0.91,词性标注F1值超过0.94,专名识别F1值超过0.85,效果业内领先。
效率高:精简模型参数,结合Paddle预测库的性能优化,CPU单线程性能达800QPS,效率业内领先。
可定制:实现简单可控的干预机制,精准匹配用户词典对模型进行干预。词典支持长片段形式,使得干预更为精准。
调用便捷:支持一键安装,同时提供了Python、Java和C++调用接口与调用示例,实现快速调用和集成。
支持移动端: 定制超轻量级模型,体积仅为2M,主流千元手机单线程性能达200QPS,满足大多数移动端应用的需求,同等体积量级效果业内领先。

LAC 2.0 的使用还是很方便的,官方文档很清晰,可以直接参考,以下是在 Ubuntu 16.04, Python 3.6.8 环境下安装测试,这里是在 virtualenv 虚拟环境下通过 pip install lac 安装,安装完成后可以在命令行中直接输入lac进行体验:

(venv) textminer@textminer:~/nlp_tools/baidu_lac$ lac
我爱自然语言处理
我/r 爱/v 自然语言处理/nz
百度LAC是一个中文词法分析工具
百度/ORG LAC/nz 是/v 一个/m 中文/nz 词法/n 分析/vn 工具/n
习近平致信祝贺哈尔滨工业大学建校100周年
习近平/PER 致信/v 祝贺/v 哈尔滨工业大学/ORG 建校/v 100周年/m
新华社北京67日电  中共中央总书记、国家主席、中央军委主席习近平7日致信祝贺哈尔滨工业大学建校100周年,向全校师生员工和校友致以热烈的祝贺和诚挚的问候。
新华社/ORG 北京/LOC 67日/TIME 电/n  /w  /w 中共中央/ORG 总书记/n 、/w 国家主席/n 、/w 中央军委/ORG 主席/n 习近平/PER 7日/TIME 致信/v 祝贺/v 哈尔滨工业大学/ORG 建校/v 100周年/m ,/w 向/p 全校/n 师生/n 员工/n 和/c 校友/n 致以/v 热烈/a 的/u 祝贺/vn 和/c 诚挚/a 的/u 问候/vn 。/w


如果只需要测试中文分词结果,输入'lac --segonly'即可。LAC的代码调用也很方便:

 1(venv) textminer@textminer:~/nlp_tools/baidu_lac$ ipython
2Python 3.6.8 (default, May  7 201914:58:50
3Type 'copyright''credits' or 'license' for more information
4IPython 7.15.0 -- An enhanced Interactive Python. Type '?' for help.
5
6In [1]: from LAC import LAC                                                                            
7
8# 如果只需要中文分词功能,设置'seg'模式,加载中文分词模型
9In [2]: lac = LAC(mode='seg')                                                                          
10
11# 单个样本调用
12In [3]: text = '我爱自然语言处理'                                                                      
13
14In [4]: result = lac.run(text)                                                                         
15
16In [5]: print(result)                                                                                  
17['我''爱''自然语言处理']
18
19# 批量样本调用
20In [6]: texts = ['我爱自然语言处理''百度LAC是一个不错的中文词法分析工具''AINLP@我爱自然语言处理']  
21
22In [7]: result = lac.run(texts)                                                                        
23
24In [8]: print(result)                                                                                 
25[['我''爱''自然语言处理'], ['百度''LAC''是''一个''不错''的''中文''词''法''分析''工具'], ['AINLP''@''我''爱''自然语言处理']]


如果需要使用LAC的词性标注与命名实体识别功能,可以调用的时候设置为'lac'模式,加载LAC模型:

 1In [11]: lac = LAC(mode='lac')                                                                         
2
3In [12]: text = '我爱自然语言处理'                                                                     
4
5In [13]: result = lac.run(text)                                                                        
6
7In [14]: print(result)                                                                                 
8[['我''爱''自然语言处理'], ['r''v''nz']]
9
10In [15]: texts = ['我爱哈尔滨工业大学''2020年6月7日哈工大迎来百年校庆']                              
11
12In [16]: result = lac.run(texts)                                                                       
13
14In [17]: print(result)                                                                                 
15[[['我''爱''哈尔滨工业大学'], ['r''v''ORG']], [['2020年6月7日''哈工大''迎来''百年''校庆'], ['TIME''ORG''v''m''n']]]


这里的输出格式为(word_list, tags_list),对应每个句子的切词结果word_list和每个词的对应词性标注的tags_list,其所用的词性标记集如下,包括4个常用的专名类别(PER, LOC, ORG, TIME):

此外,LAC的词典定制化和模型增量训练功能也相当友好,这对于有在实际业务需求的团队就非常有帮助,可以基于自己的业务需求和领域词典数据定制一个面向自身业务和领域的中文词法分析模型。以下以词典定制化为例,我们添加了一个自定义词典 mydict.txt, 内容如下:

锦江石材/ORG
正式成立


以下是加载自定义词典前后的结果对比:

 1In [24]: text = "锦江石材正式成立了"                                                                   
2
3In [25]: result = lac.run(text)                                                                        
4# 没有干预的结果
5In [26]: print(result)                                                                                 
6[['锦江''石材''正式''成立''了'], ['LOC''n''ad''v''xc']]
7
8In [27]: lac.load_customization('mydict.txt')                                                          
9
10In [28]: result = lac.run(text)                                                                        
11
12# 干预后的结果
13In [29]: print(result)                                                                                 
14[['锦江石材''正式成立''了'], ['ORG''v''xc']]


至于模型增量训练,留给感兴趣的同学自己尝试,这个功能很有用,可以参考LAC官方文档说明,很清晰。

最后需要说明一下本文主要参考了百度LAC的项目主页文档,点击文末“阅读原文”直达,推荐Star:
https://github.com/baidu/lac

关于LAC2.0的更详细介绍,包括性能和效果的评测,可以参考:
开源!我知道你不知道,百度开源词法LAC 2.0帮你更懂中文

我们之前写得三篇关于百度NLP工具的相关文章,也可以对比参考和测试LAC1.x版本:

百度深度学习中文词法分析工具LAC试用之旅
来,试试百度的深度学习情感分析工具
中文命名实体识别工具(NER)哪家强?

推荐阅读

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

太赞了!Springer面向公众开放电子书籍,附65本数学、编程、机器学习、深度学习、数据挖掘、数据科学等书籍链接及打包下载

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

这门斯坦福大学自然语言处理经典入门课,我放到B站了

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,点个在看吧👇

登录查看更多
2

相关内容

词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。 词法分析(lexical analysis)包括汉语分词和词性标注两部分。和大部分西方语言不同,汉语书面语词语之间没有明显的空格标记,文本中的句子以字串的形式出现。 因此汉语自然语言处理的首要工作就是要将输入的字串切分为单独的词语,然后在此基础上进行其他更高级的分析,这一步骤称为分词(word segmentation 或tokenization)。除了 分词,词性标注也通常认为是词法分析的一部分。给定一个切好词的句子,词性标注的目的是为每一个词赋予一个类别,这个类别称为词性标记(part-of-speech tag),比如,名词(noun)、动词(verb)、形容词(adjective)等。
专知会员服务
44+阅读 · 2020年8月20日
【2020新书】C++20快速语法参考,第4版,209页pdf
专知会员服务
71+阅读 · 2020年8月5日
流畅的Python 中英文版 PDF 高清电子书
专知会员服务
80+阅读 · 2020年8月2日
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
TensorFlow 2.0 学习资源汇总
专知会员服务
66+阅读 · 2019年10月9日
来,试试百度的深度学习情感分析工具
AINLP
5+阅读 · 2019年7月8日
准确实用,7个优秀的开源中文分词库推荐
开源中国
5+阅读 · 2018年7月26日
【推荐】中文处理(BiLSTM分词)工具包FoolNLTK
机器学习研究会
6+阅读 · 2017年12月27日
HULAC:一个高效的中文词法分析工具包(清华)
全球人工智能
5+阅读 · 2017年11月12日
自然语言处理工具包spaCy介绍
AINLP
18+阅读 · 2016年11月14日
Arxiv
5+阅读 · 2019年8月22日
Arxiv
21+阅读 · 2018年8月30日
VIP会员
相关VIP内容
专知会员服务
44+阅读 · 2020年8月20日
【2020新书】C++20快速语法参考,第4版,209页pdf
专知会员服务
71+阅读 · 2020年8月5日
流畅的Python 中英文版 PDF 高清电子书
专知会员服务
80+阅读 · 2020年8月2日
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
TensorFlow 2.0 学习资源汇总
专知会员服务
66+阅读 · 2019年10月9日
相关资讯
来,试试百度的深度学习情感分析工具
AINLP
5+阅读 · 2019年7月8日
准确实用,7个优秀的开源中文分词库推荐
开源中国
5+阅读 · 2018年7月26日
【推荐】中文处理(BiLSTM分词)工具包FoolNLTK
机器学习研究会
6+阅读 · 2017年12月27日
HULAC:一个高效的中文词法分析工具包(清华)
全球人工智能
5+阅读 · 2017年11月12日
自然语言处理工具包spaCy介绍
AINLP
18+阅读 · 2016年11月14日
Top
微信扫码咨询专知VIP会员