Python LAC使用

使用lac分词

1、需求

目前有一系列带有人名、机构的信息,需要将人名和机构名剥离梳理。python lac库可以实现精准定位分词。

2、参考文档

安装lac前的一些依赖关系解决,需要python版本3.7

https://www.freesion.com/article/4512610119/书签:成功解决问题:ModuleNotFoundError: No module named 'paddle'或者 No module named 'paddle.fluid' - 灰信网(软件开发博客聚合)

github lac项目文档

https://github.com/baidu/lac书签:GitHub - baidu/lac: 百度NLP:分词,词性标注,命名实体识别,词重要性

3、安装LAC

直接安装lac会出现报错,且该报错的setup.py文件无法找到,想通过修改字符集去解决无法实现

先安装lac需要的依赖环境,这里使用3.10版本python直接报错版本问题

.\pip.exe install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple
.\pip.exe install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple
Batch

降低python版本为3.7,重新尝试安装,这里会报出很多缺少module的错误,依次安装就行

总结一下安装需要的依赖环境包含:

common、dual、tight 、data、prox、paddle、paddlepaddle。最后安装LAC即可正常安装

4、LAC说明

参考GitHub项目文档:行内引用

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

  • 效果好:通过深度学习模型联合学习分词、词性标注、专名识别任务,词语重要性,整体效果F1值超过0.91,词性标注F1值超过0.94,专名识别F1值超过0.85,效果业内领先。
  • 效率高:精简模型参数,结合Paddle预测库的性能优化,CPU单线程性能达800QPS,效率业内领先。
  • 可定制:实现简单可控的干预机制,精准匹配用户词典对模型进行干预。词典支持长片段形式,使得干预更为精准。(在模型输出的基础上,LAC还支持用户配置定制化的切分结果和专名类型输出。当模型预测匹配到词典的中的item时,会用定制化的结果替代原有结果。为了实现更加精确的匹配,我们支持以由多个单词组成的长片段作为一个item。通过装载词典文件的形式实现该功能,词典文件每行表示一个定制化的item,由一个单词或多个连续的单词组成,每个单词后使用'/'表示标签,如果没有'/'标签则会使用模型默认的标签。每个item单词数越多,干预效果会越精准。)
  • 调用便捷支持一键安装,同时提供了Python、Java和C++调用接口与调用示例,实现快速调用和集成。
  • 支持移动端: 定制超轻量级模型,体积仅为2M,主流千元手机单线程性能达200QPS,满足大多数移动端应用的需求,同等体积量级效果业内领先。

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

标签

含义

标签

含义

标签

含义

标签

含义

n

普通名词

f

方位名词

s

处所名词

nw

作品名

nz

其他专名

v

普通动词

vd

动副词

vn

名动词

a

形容词

ad

副形词

an

名形词

d

副词

m

数量词

q

量词

r

代词

p

介词

c

连词

u

助词

xc

其他虚词

w

标点符号

PER

人名

LOC

地名

ORG

机构名

TIME

时间

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

标签

含义

常见于词性

0

query中表述的冗余词

p, w, xc ...

1

query中限定较弱的词

r, c, u ...

2

query中强限定的词

n, s, v ...

3

query中的核心词

nz, nw, LOC ...

示例:

带有词性标注和实体识别,装载LAC模型时模式选择为lac

单纯分词,在装载LAC模型时模式修改为seg

 

按词语重要性梯度分类(4-Level)

5、测试代码

# Date: 2022-03-30 16:58:06
# LastEditors: ZL
# LastEditTime: 2022-03-30 16:58:07
# FilePath: \pythonProjectc:\Users\ahs\Desktop\PycharmProjects\Scripts\PythonProject\人名识别1.py
# Description:
# coding=utf-8
from LAC import LAC
def lac_username(sentences: str) -> list:
    # 装载LAC模型
    user_name_list = []
    lac = LAC(mode="lac")
    lac_result = lac.run(sentences)
    for index, lac_label in enumerate(lac_result[1]):
        if lac_label == "ORG":
            user_name_list.append(lac_result[0][index])
    return user_name_lis
if __name__ == '__main__':
    text = "2021年4月 兰州商学院 158 李志斌 1213 朱广 西北大学"
    lac_user = lac_username(text)
    print("LAC:", lac_user)

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值