基础环境
基础环境安装见: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