【人人都是深度学习师】5行代码实现一个基于深度学习迁移学习的分词、词性标注功能

基础环境

基础环境安装见:PaddleHub安装教程

代码

只需要5行核心代码:

import paddlehub as hub
lac = hub.Module(name="lac")
test_text = ["今天是个好天气。"]
results = lac.cut(text=test_text, use_gpu=False, batch_size=1, return_tag=True)
print(results)

 分析

(paddle) root@0e2459f200d3:/# python
Python 3.7.10 (default, Feb 26 2021, 18:47:35) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import paddlehub as hub
/root/miniconda3/envs/paddle/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:26: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  def convert_to_list(value, n, name, dtype=np.int):
>>> lac = hub.Module(name="lac")
/root/miniconda3/envs/paddle/lib/python3.7/site-packages/pip/_vendor/packaging/version.py:130: DeprecationWarning: Creating a LegacyVersion has been deprecated and will be removed in the next major release
  DeprecationWarning,
/root/miniconda3/envs/paddle/lib/python3.7/site-packages/pip/_vendor/packaging/version.py:130: DeprecationWarning: Creating a LegacyVersion has been deprecated and will be removed in the next major release
  DeprecationWarning,
2021-03-09 16:59:16,186 - INFO - Lock 140416018468688 acquired on /root/.paddlehub/tmp/lac
[INFO 2021-03-09 16:59:16,186 filelock.py:274] Lock 140416018468688 acquired on /root/.paddlehub/tmp/lac

Download https://bj.bcebos.com/paddlehub/paddlehub_dev/lac_2.2.0.tar.gz

[##################################################] 100.00%
Decompress /root/.paddlehub/tmp/tmp8cg9egfq/lac_2.2.0.tar.gz
[##################################################] 100.00%
[2021-03-09 16:59:21,071] [    INFO] - Successfully installed lac-2.2.0
2021-03-09 16:59:21,090 - INFO - Lock 140416018468688 released on /root/.paddlehub/tmp/lac
[INFO 2021-03-09 16:59:21,090 filelock.py:318] Lock 140416018468688 released on /root/.paddlehub/tmp/lac
[2021-03-09 16:59:21,090] [ WARNING] - The _initialize method in HubModule will soon be deprecated, you can use the __init__() to handle the initialization of the object
W0309 16:59:21.160986  2164 analysis_predictor.cc:1145] Deprecated. Please use CreatePredictor instead.
>>> test_text = ["今天是个好天气。"]
>>> 
>>> results = lac.cut(text=test_text, use_gpu=False, batch_size=1, return_tag=True)
>>> print(results)
[{'word': ['今天', '是', '个', '好天气', '。'], 'tag': ['TIME', 'v', 'q', 'n', 'w']}]
>>> test_text = ["经过近1个月的大幅下跌后,螺纹钢期货上周五出现了小幅反弹,一根小阳线成功突破60分钟MA20均线的压制,并在随后出现了回抽确认。技术面来看,该均线为本轮下跌的主要压力线,鉴于基本面暂不具备大幅反弹的条件,若近期螺纹钢能站稳60 分钟MA20均线上方,后期将出现止跌企稳,并将围绕3500步入振荡整理走势。若期价短期再度跌破60分钟MA20均线,后期将再创本轮新低。"]
>>> results = lac.cut(text=test_text, use_gpu=False, batch_size=1, return_tag=True)
>>> print(results)
[{'word': ['经过', '近1个月', '的', '大幅', '下跌', '后', ',', '螺纹钢', '期货', '上周五', '出现', '了', '小幅', '反弹', ',', '一根', '小阳线', '成功', '突破', '60分钟', 'MA20', '均线', '的', '压制', ',', '并', '在', '随后', '出现', '了', '回', '抽', '确认', '。', '技术', '面', '来看', ',', '该', '均线', '为', '本轮', '下跌', '的', '主要', '压力线', ',', '鉴于', '基本面', '暂', '不具备', '大幅', '反弹', '的', '条件', ',', '若', '近期', '螺纹钢', '能', '站稳', '60分钟', 'MA20', '均线', '上方', ',', '后期', '将', '出现', '止跌', '企稳', ',', '并', '将', '围绕', '3500步', '入', '振荡', '整理', '走势', '。', '若', '期价', '短期', '再度', '跌破', '60分钟', 'MA20', '均线', ',', '后期', '将', '再 创', '本轮', '新低', '。'], 'tag': ['p', 'TIME', 'u', 'd', 'v', 'f', 'w', 'nz', 'n', 'TIME', 'v', 'u', 'd', 'v', 'w', 'm', 'n', 'ad', 'v', 'TIME', 'nz', 'n', 'u', 'vn', 'w', 'c', 'p', 'd', 'v', 'u', 'v', 'v', 'v', 'w', 'n', 'n', 'v', 'w', 'r', 'n', 'v', 'r', 'v', 'u', 'a', 'n', 'w', 'p', 'n', 'd', 'v', 'd', 'v', 'u', 'n', 'w', 'c', 't', 'nz', 'v', 'v', 'TIME', 'nz', 'n', 'f', 'w', 't', 'd', 'v', 'vn', 'vn', 'w', 'c', 'd', 'v', 'm', 'v', 'vn', 'vn', 'n', 'w', 'c', 'n', 'n', 'd', 'v', 'TIME', 'nz', 'n', 'w', 't', 'd', 'v', 'r', 'n', 'w']}]
>>>

代码执行过程中自动下载了预训练模型:lac_2.2.0.tar.gz 大概20MB大小,下载地址:https://bj.bcebos.com/paddlehub/paddlehub_dev/lac_2.2.0.tar.gz

该文件里模型文件,,里面包含了模型文件,推理代码,字典等。lac模型介绍:为了能让用户快速体验飞桨的模型推理效果,PaddleHub支持了使用命令行实现快速推理的功能。例如用户可以执行如下命令使用词法分析模型LAC(Lexical Analysis of Chinese)实现分词功能。 说明: LAC是一个联合的词法分析模型,能整体性地完成中文分词、词性标注、专名识别任务(https://www.paddlepaddle.org.cn/tutorials/projectdetail/520792)。

从这里http://futures.cngold.org/c/2014-01-13/c2369007.html 复制了第一段的文本,分词效果还可以。

"经过近1个月的大幅下跌后,螺纹钢期货上周五出现了小幅反弹,一根小阳线成功突破60分钟MA20均线的压制,并在随后出现了回抽确认。技术面来看,该均线为本轮下跌的主要压力线,鉴于基本面暂不具备大幅反弹的条件,若近期螺纹钢能站稳60分钟MA20均线上方,后期将出现止跌企稳,并将围绕3500步入振荡整理走势。若期价短期再度跌破60分钟MA20均线,后期将再创本轮新低。"

->

[{'word': ['经过', '近1个月', '的', '大幅', '下跌', '后', ',', '螺纹钢', '期货', '上周五', '出现', '了', '小幅', '反弹', ',', '一根', '小阳线', '成功', '突破', '60分钟', 'MA20', '均线', '的', '压制', ',', '并', '在', '随后', '出现', '了', '回', '抽', '确认', '。', '技术', '面', '来看', ',', '该', '均线', '为', '本轮', '下跌', '的', '主要', '压力线', ',', '鉴于', '基本面', '暂', '不具备', '大幅', '反弹', '的', '条件', ',', '若', '近期', '螺纹钢', '能', '站稳', '60分钟', 'MA20', '均线', '上方', ',', '后期', '将', '出现', '止跌', '企稳', ',', '并', '将', '围绕', '3500步', '入', '振荡', '整理', '走势', '。', '若', '期价', '短期', '再度', '跌破', '60分钟', 'MA20', '均线', ',', '后期', '将', '再 创', '本轮', '新低', '。'], 'tag': ['p', 'TIME', 'u', 'd', 'v', 'f', 'w', 'nz', 'n', 'TIME', 'v', 'u', 'd', 'v', 'w', 'm', 'n', 'ad', 'v', 'TIME', 'nz', 'n', 'u', 'vn', 'w', 'c', 'p', 'd', 'v', 'u', 'v', 'v', 'v', 'w', 'n', 'n', 'v', 'w', 'r', 'n', 'v', 'r', 'v', 'u', 'a', 'n', 'w', 'p', 'n', 'd', 'v', 'd', 'v', 'u', 'n', 'w', 'c', 't', 'nz', 'v', 'v', 'TIME', 'nz', 'n', 'f', 'w', 't', 'd', 'v', 'vn', 'vn', 'w', 'c', 'd', 'v', 'm', 'v', 'vn', 'vn', 'n', 'w', 'c', 'n', 'n', 'd', 'v', 'TIME', 'nz', 'n', 'w', 't', 'd', 'v', 'r', 'n', 'w']}]

字典数组中字典的key“tag”中的内容是词性和专名类别标签。

词性和专名类别标签集合如下表,其中词性标签 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时间

参考

https://aistudio.baidu.com/aistudio/projectdetail/215711

https://www.paddlepaddle.org.cn/tutorials/projectdetail/520792

https://www.paddlepaddle.org.cn/hub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zda天天爱打卡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值