Baidu NLP词法分析工具LAC使用体验

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

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

安装与使用

LAC是以PYTHON包的形式提供服务的,安装非常简单,基于anaconda环境,执行如下命令即可:

 pip install lac

编写测试用例:

分词/切词用例:

from LAC import LAC

# 装载分词模型
lac = LAC(mode='seg')

# 单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具"
seg_result = lac.run(text)

# 批量样本输入, 输入为多个句子组成的list,平均速率会更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"]
seg_result = lac.run(texts)
print(seg_result)
texts = [u"豆豆很帅", u"豆豆爸爸是一名工程师"]
seg_result = lac.run(texts)
print(seg_result)

分词/切词运行结果:

 词性标注与实体识别:

from LAC import LAC

# 装载LAC模型
lac = LAC(mode='lac')

# 单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具"
lac_result = lac.run(text)

# 批量样本输入, 输入为多个句子组成的list,平均速率更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"]
lac_result = lac.run(texts)
print(lac_result)
texts = [u"豆豆很帅", u"豆豆爸爸是一名工程师"]
seg_result = lac.run(texts)
print(seg_result)

输出结果:

每个句子的输出其切词结果word_list以及对每个单词的标注tags_list,其格式为(word_list, tags_list)

词性和专名类别标签集合如下表,其中我们将最常用的4个专名类别标记为大写的形式:

词语重要性分析:

from LAC import LAC

# 装载词语重要性模型
lac = LAC(mode='rank')

# 单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具"
lac_result = lac.run(text)

# 批量样本输入, 输入为多个句子组成的list,平均速率更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"]
lac_result = lac.run(texts)
print(lac_result)
texts = [u"豆豆很帅", u"豆豆爸爸是一名工程师"]
seg_result = lac.run(texts)
print(seg_result)

运行结果:

词语重要性各类别标签集合如下表,我们使用4-Level梯度进行分类:

关于F1指标

细心的你应该注意到,上面提到的性能指标中有一项F1指标,F1是综合考量召回率和精确率得到的一个统计维度,经过查找资料,它的定义为:

 所以,精确率越高F1越好,召回率越高F1也越好。

当F1为1的时候,说明:

F1=\frac{2\cdot precision\cdot recall}{precision+recall}=1

令x=precision,y=recall,所以:

\frac{2xy}{x+y}=1=>x+y=2xy=>y=\frac{x}{2x-1}(0\leq x\leq 1 ,0\leq x\leq 1 )

函数图形为:

可以看到,在X,Y的值域范围内,只有一个点满足F1=1的要求,那就是:

召回率==精确率==1

这个条件意味着什么呢,通俗点说,就是所有的正样本都被找到了,并且找到的都是正样本。没有出错。

以新冠筛查为例,如果某次的普查F1为1,那说明,精准防疫的目标已经达到,范围内的所有新冠阳性都被找到,并且找到的都是阳性患者,召回律100%,精确率100%,显然,要达到F1指标为1的程度,是非常不容易的。


结束

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值