PaddleHub预训练模型LAC完成词法分析
LAC
Lexical Analysis of Chinese,简称 LAC,是一个联合的词法分析模型,能整体性地完成中文分词、词性标注、专名识别任务。在百度自建数据集上评测,LAC效果:Precision=88.0%,Recall=88.7%,F1-Score=88.4%。该PaddleHub Module支持预测。
NOTE: 如果您在本地运行该项目示例,需要首先安装PaddleHub。如果您在线运行,需要首先fork该项目示例。之后按照该示例操作即可。
lac
模型链接:https://www.paddlepaddle.org.cn/hubdetail?name=lac&en_category=LexicalAnalysis
环境:PaddlePaddle2.0.0rc PaddleHub2.0.0b1 lac 2.2.0(最新版)
一、安装新版Hub
!pip install paddlehub==2.0.0b1 -i https://pypi.tuna.tsinghua.edu.cn/simple
二、定义待预测数据
以“今天是个好日子”,“今天天气晴朗”,"下一班地铁马上就要到了"为例,展示如何使用LAC进行切词。
实现效果
['今天', '是', '个', '好日子']
['TIME', 'v', 'q', 'n']
['天气预报', '说', '今天', '要', '下雨']
['n', 'v', 'TIME', 'v', 'v']
['下', '一班', '地铁', '马上', '就要', '到', '了']
['f', 'm', 'n', 'd', 'v', 'v', 'xc']
test_text = ["今天是个好日子", "天气预报说今天要下雨", "下一班地铁马上就要到了"]
三、API预测
cut(text, use_gpu=False, batch_size=1, return_tag=True)
lac预测接口,预测输入句子的分词结果
参数
-
text(str or list): 待预测数据,单句预测数据(str类型)或者批量预测(list,每个元素为str
-
use_gpu(bool): 是否使用GPU预测,如果使用GPU预测,则在预测之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置
-
batch_size(int): 批处理大小
-
return_tag(bool): 预测结果是否需要返回分词标签结果
返回
- results(list): 分词结果
四、加载预训练模型并预测
LAC网络框架为BiGRU+CRF,整体框架图如下:
LAC模型框架图
更多详情可以参考PaddleHub官网module介绍
import paddlehub as hub
lac = hub.Module(name="lac")
results = lac.cut(text=test_text, use_gpu=False, batch_size=1, return_tag=True)
for result in results:
print(result['word'])
print(result['tag'])
五、命令行预测示例
!hub run lac --input_text "今天是个好日子"
!hub run lac --input_file test.txt
词性和专名类别标签集合如下表,其中词性标签 24 个(小写字母),专名类别标签 4 个(大写字母)。这里需要说明的是,人名、地名、机构名和时间四个类别,在上表中存在两套标签(PER / LOC / ORG / TIME 和 nr / ns / nt / t),被标注为第二套标签的词,是模型判断为低置信度的人名、地名、机构名和时间词。开发者可以基于这两套标签,在四个类别的准确、召回之间做出自己的权衡。
标签 | 含义 | 标签 | 含义 | 标签 | 含义 | 标签 | 含义 |
---|---|---|---|---|---|---|---|
n | 普通名词 | f | 方位名词 | s | 处所名词 | t | 时间 |
nr | 人名 | ns | 地名 | nt | 机构名 | nw | 作品名 |
nz | 其他专名 | v | 普通动词 | vd | 动副词 | vn | 名动词 |
a | 形容词 | ad | 副形词 | an | 名形词 | d | 副词 |
m | 数量词 | q | 量词 | r | 代词 | p | 介词 |
c | 连词 | u | 助词 | xc | 其他虚词 | w | 标点符号 |
PER | 人名 | LOC | 地名 | ORG | 机构名 | TIME | 时间 |