【人人都是深度學(xué)習(xí)師】5行代碼實(shí)現(xiàn)一個(gè)基于深度學(xué)習(xí)遷移學(xué)習(xí)的分詞、詞性標(biāo)注功能
基礎(chǔ)環(huán)境
基礎(chǔ)環(huán)境安裝見:PaddleHub安裝教程
代碼
只需要5行核心代碼:
import paddlehub as hub
lac = hub.Module(name="lac")
test_text = ["今天是個(gè)好天氣。"]
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 = ["今天是個(gè)好天氣。"]
>>>?
>>> results = lac.cut(text=test_text, use_gpu=False, batch_size=1, return_tag=True)
>>> print(results)
[{'word': ['今天', '是', '個(gè)', '好天氣', '。'], 'tag': ['TIME', 'v', 'q', 'n', 'w']}]
>>> test_text = ["經(jīng)過(guò)近1個(gè)月的大幅下跌后,螺紋鋼期貨上周五出現(xiàn)了小幅反彈,一根小陽(yáng)線成功突破60分鐘MA20均線的壓制,并在隨后出現(xiàn)了回抽確認(rèn)。技術(shù)面來(lái)看,該均線為本輪下跌的主要壓力線,鑒于基本面暫不具備大幅反彈的條件,若近期螺紋鋼能站穩(wěn)60 分鐘MA20均線上方,后期將出現(xiàn)止跌企穩(wěn),并將圍繞3500步入振蕩整理走勢(shì)。若期價(jià)短期再度跌破60分鐘MA20均線,后期將再創(chuàng)本輪新低。"]
>>> results = lac.cut(text=test_text, use_gpu=False, batch_size=1, return_tag=True)
>>> print(results)
[{'word': ['經(jīng)過(guò)', '近1個(gè)月', '的', '大幅', '下跌', '后', ',', '螺紋鋼', '期貨', '上周五', '出現(xiàn)', '了', '小幅', '反彈', ',', '一根', '小陽(yáng)線', '成功', '突破', '60分鐘', 'MA20', '均線', '的', '壓制', ',', '并', '在', '隨后', '出現(xiàn)', '了', '回', '抽', '確認(rèn)', '。', '技術(shù)', '面', '來(lái)看', ',', '該', '均線', '為', '本輪', '下跌', '的', '主要', '壓力線', ',', '鑒于', '基本面', '暫', '不具備', '大幅', '反彈', '的', '條件', ',', '若', '近期', '螺紋鋼', '能', '站穩(wěn)', '60分鐘', 'MA20', '均線', '上方', ',', '后期', '將', '出現(xiàn)', '止跌', '企穩(wěn)', ',', '并', '將', '圍繞', '3500步', '入', '振蕩', '整理', '走勢(shì)', '。', '若', '期價(jià)', '短期', '再度', '跌破', '60分鐘', 'MA20', '均線', ',', '后期', '將', '再 創(chuàng)', '本輪', '新低', '。'], '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']}]
>>>
代碼執(zhí)行過(guò)程中自動(dòng)下載了預(yù)訓(xùn)練模型:lac_2.2.0.tar.gz 大概20MB大小,下載地址:https://bj.bcebos.com/paddlehub/paddlehub_dev/lac_2.2.0.tar.gz
該文件里模型文件,,里面包含了模型文件,推理代碼,字典等。lac模型介紹:為了能讓用戶快速體驗(yàn)飛槳的模型推理效果,PaddleHub支持了使用命令行實(shí)現(xiàn)快速推理的功能。例如用戶可以執(zhí)行如下命令使用詞法分析模型LAC(Lexical Analysis of Chinese)實(shí)現(xiàn)分詞功能。 說(shuō)明: LAC是一個(gè)聯(lián)合的詞法分析模型,能整體性地完成中文分詞、詞性標(biāo)注、專名識(shí)別任務(wù)(https://www.paddlepaddle.org.cn/tutorials/projectdetail/520792)。
從這里http://futures.cngold.org/c/2014-01-13/c2369007.html 復(fù)制了第一段的文本,分詞效果還可以。
"經(jīng)過(guò)近1個(gè)月的大幅下跌后,螺紋鋼期貨上周五出現(xiàn)了小幅反彈,一根小陽(yáng)線成功突破60分鐘MA20均線的壓制,并在隨后出現(xiàn)了回抽確認(rèn)。技術(shù)面來(lái)看,該均線為本輪下跌的主要壓力線,鑒于基本面暫不具備大幅反彈的條件,若近期螺紋鋼能站穩(wěn)60分鐘MA20均線上方,后期將出現(xiàn)止跌企穩(wěn),并將圍繞3500步入振蕩整理走勢(shì)。若期價(jià)短期再度跌破60分鐘MA20均線,后期將再創(chuàng)本輪新低。"
->
[{'word': ['經(jīng)過(guò)', '近1個(gè)月', '的', '大幅', '下跌', '后', ',', '螺紋鋼', '期貨', '上周五', '出現(xiàn)', '了', '小幅', '反彈', ',', '一根', '小陽(yáng)線', '成功', '突破', '60分鐘', 'MA20', '均線', '的', '壓制', ',', '并', '在', '隨后', '出現(xiàn)', '了', '回', '抽', '確認(rèn)', '。', '技術(shù)', '面', '來(lái)看', ',', '該', '均線', '為', '本輪', '下跌', '的', '主要', '壓力線', ',', '鑒于', '基本面', '暫', '不具備', '大幅', '反彈', '的', '條件', ',', '若', '近期', '螺紋鋼', '能', '站穩(wěn)', '60分鐘', 'MA20', '均線', '上方', ',', '后期', '將', '出現(xiàn)', '止跌', '企穩(wěn)', ',', '并', '將', '圍繞', '3500步', '入', '振蕩', '整理', '走勢(shì)', '。', '若', '期價(jià)', '短期', '再度', '跌破', '60分鐘', 'MA20', '均線', ',', '后期', '將', '再 創(chuàng)', '本輪', '新低', '。'], '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']}]
字典數(shù)組中字典的key“tag”中的內(nèi)容是詞性和專名類別標(biāo)簽。
詞性和專名類別標(biāo)簽集合如下表,其中詞性標(biāo)簽 24 個(gè)(小寫字母),專名類別標(biāo)簽 4 個(gè)(大寫字母)。這里需要說(shuō)明的是,人名、地名、機(jī)構(gòu)名和時(shí)間四個(gè)類別,在上表中存在兩套標(biāo)簽(PER / LOC / ORG / TIME 和 nr / ns / nt / t),被標(biāo)注為第二套標(biāo)簽的詞,是模型判斷為低置信度的人名、地名、機(jī)構(gòu)名和時(shí)間詞。開發(fā)者可以基于這兩套標(biāo)簽,在四個(gè)類別的準(zhǔn)確、召回之間做出自己的權(quán)衡。
標(biāo)簽 含義 標(biāo)簽 含義 標(biāo)簽 含義 標(biāo)簽 含義
n 普通名詞 f 方位名詞 s 處所名詞 t 時(shí)間
nr 人名 ns 地名 nt 機(jī)構(gòu)名 nw 作品名
nz 其他專名 v 普通動(dòng)詞 vd 動(dòng)副詞 vn 名動(dòng)詞
a 形容詞 ad 副形詞 an 名形詞 d 副詞
m 數(shù)量詞 q 量詞 r 代詞 p 介詞
c 連詞 u 助詞 xc 其他虛詞 w 標(biāo)點(diǎn)符號(hào)
PER 人名 LOC 地名 ORG 機(jī)構(gòu)名 TIME 時(shí)間
參考
https://aistudio.baidu.com/aistudio/projectdetail/215711
https://www.paddlepaddle.org.cn/tutorials/projectdetail/520792
https://www.paddlepaddle.org.cn/hub
————————————————
版權(quán)聲明:本文為CSDN博主「機(jī)器愛智能」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jrckkyy/article/details/114590430