相关文章:
1.快递单中抽取关键信息【一】----基于BiGRU+CR+预训练的词向量优化
2.快递单信息抽取【二】基于ERNIE1.0至ErnieGram + CRF预训练模型
3.快递单信息抽取【三】--五条标注数据提高准确率,仅需五条标注样本,快速完成快递单信息任务
1)PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练
2)PaddleNLP--UIE(二)--小样本快速提升性能(含doccona标注)
!强烈推荐:数据标注平台doccano----简介、安装、使用、踩坑记录
项目连接:https://aistudio.baidu.com/aistudio/projectdetail/4180615?contributionType=1
+ 全场景支持:覆盖**NLU**和**NLG**领域十一大经典任务。
+ 文档级输入:支持**文档级输入**,解决预训练模型对输入文本的长度限制问题,大大节省用户输入长文本时的**代码开发量**。
+ 定制化训练:支持用户使用自己的数据集进行定制化训练,通过自定义路径**一键使用定制化训练好的模型**。
+ 开箱即用,学习成本低,几行代码便可完成调用。
+ 聚合众多百度自然语言处理领域自研算法以及社区优秀开源模型,模型效果领先。
!pip install --upgrade paddlenlp
!pip install pypinyin
!pip install LAC
这一章节将会学到的Taskflow技能:
PaddleNLP Taskflow
提取句子中的语言学特征:中文分词、词性识别,依存关系,命名实体识别、关系抽取、事件抽取等。PaddleNLP 5.16新发开放域信息抽取能力,只有你想不到的schema,没有UIE抽取不到的结果哦!
详情可参考:信息抽取一键预测能力
如需定制化训练,全套代码在此:传送门
from pprint import pprint
from paddlenlp import Taskflow
schema = ['时间', '选手', '赛事名称'] # Define the schema for entity extraction
ie = Taskflow('information_extraction', schema=schema)
pprint(ie("2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!")) # Better print results using pprint
[{'时间': [{'end': 6,
'probability': 0.9857378532473966,
'start': 0,
'text': '2月8日上午'}],
'赛事名称': [{'end': 23,
'probability': 0.8503082243989795,
'start': 6,
'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
'选手': [{'end': 31,
'probability': 0.8981535684051067,
'start': 28,
'text': '谷爱凌'}]}]
#
schema = {'歌曲名称': ['歌手', '所属专辑']} # Define the schema for relation extraction
ie.set_schema(schema) # Reset schema
ie('《告别了》是孙耀威在专辑爱的故事里面的歌曲')
[{'歌曲名称': [{'text': '告别了',
'start': 1,
'end': 4,
'probability': 0.6296147448952354,
'relations': {'歌手': [{'text': '孙耀威',
'start': 6,
'end': 9,
'probability': 0.9988380409852198}],
'所属专辑': [{'text': '爱的故事',
'start': 12,
'end': 16,
'probability': 0.9968462078543183}]}},
{'text': '爱的故事',
'start': 12,
'end': 16,
'probability': 0.28168534139751955,
'relations': {'歌手': [{'text': '孙耀威',
'start': 6,
'end': 9,
'probability': 0.9951413914998}]}}]}]
schema = {'地震触发词': ['地震强度', '时间', '震中位置', '震源深度']} # Define the schema for event extraction
ie.set_schema(schema) # Reset schema
ie('中国地震台网正式测定:5月16日06时08分在云南临沧市凤庆县(北纬24.34度,东经99.98度)发生3.5级地震,震源深度10千米。')
[{'地震触发词': [{'text': '地震',
'start': 56,
'end': 58,
'probability': 0.9977425555988333,
'relations': {'地震强度': [{'text': '3.5级',
'start': 52,
'end': 56,
'probability': 0.998080158269417}],
'时间': [{'text': '5月16日06时08分',
'start': 11,
'end': 22,
'probability': 0.9853299181377793}],
'震中位置': [{'text': '云南临沧市凤庆县(北纬24.34度,东经99.98度)',
'start': 23,
'end': 50,
'probability': 0.7874013050677604}],
'震源深度': [{'text': '10千米',
'start': 63,
'end': 67,
'probability': 0.9937973233053299}]}}]}]
schema = '情感倾向[正向,负向]' # Define the schema for sentence-level sentiment classification
ie.set_schema(schema) # Reset schema
ie('这个产品用起来真的很流畅,我非常喜欢')
[{'情感倾向[正向,负向]': [{'text': '正向', 'probability': 0.9990024058203417}]}]
schema = {'评价维度': ['观点词', '情感倾向[正向,负向]']} # Define the schema for opinion extraction
ie.set_schema(schema) # Reset schema
pprint(ie("地址不错,服务一般,设施陈旧")) # Better print results using pprint
[{'评价维度': [{'end': 2,
'probability': 0.9888138676472664,
'relations': {'情感倾向[正向,负向]': [{'probability': 0.998228967796706,
'text': '正向'}],
'观点词': [{'end': 4,
'probability': 0.9927846479537372,
'start': 2,
'text': '不错'}]},
'start': 0,
'text': '地址'},
{'end': 12,
'probability': 0.9588297379365116,
'relations': {'情感倾向[正向,负向]': [{'probability': 0.9949388606013692,
'text': '负向'}],
'观点词': [{'end': 14,
'probability': 0.9286749937276362,
'start': 12,
'text': '陈旧'}]},
'start': 10,
'text': '设施'},
{'end': 7,
'probability': 0.959285414999755,
'relations': {'情感倾向[正向,负向]': [{'probability': 0.9952498258302498,
'text': '负向'}],
'观点词': [{'end': 9,
'probability': 0.9949358587838901,
'start': 7,
'text': '一般'}]},
'start': 5,
'text': '服务'}]}]
schema = ['寺庙', {'丈夫': '妻子'}]
ie.set_schema(schema)
pprint(ie('李治即位后,让身在感业寺的武则天续起头发,重新纳入后宫。'))
[{'丈夫': [{'end': 2,
'probability': 0.989690572797457,
'relations': {'妻子': [{'end': 16,
'probability': 0.9987625986569526,
'start': 13,
'text': '武则天'}]},
'start': 0,
'text': '李治'}],
'寺庙': [{'end': 12,
'probability': 0.9888578809890554,
'start': 9,
'text': '感业寺'}]}]
分词作为许多NLP任务的第一道工序,如何在不同场景中『用好』、『用对』尤为重要。
Taskflow提供了多种中文分词模式供大家选择,我们列举了几种不同的场景,来示例不同使用方式。
# 首次调用会有模型下载的额外时间开销
seg = Taskflow("word_segmentation")
doc = "苏锦一直记得那个午后,明晃晃的光线穿过教室的窗玻璃洒到自己脸上,有种特别暖和的感觉。那阳光仿佛是能够钻进人的心里,继而延展到身体全部的毛孔中,然后以一种温柔的霸道占据体内各个淋巴细胞。苏锦觉得连自己的每一个气息里都似乎是能流窜出明亮的光。她坐着有些微醉于这份上帝恩赐的福祉当中。是在这样一个午后。她记住了段见城的脸。轮廓俊朗的少年。有着羁傲的眼神和清晰的声线。怎么看这都是少女漫画里必经的情节。教语文的老太太此刻正兀自在讲台上口若悬河的讲解着《孔雀东南飞》,毕竟是已经年过半百的老教师,经历的学生多了,倒也不在乎讲台下那一张张脸上是否挂着的无精打采,昏昏欲睡的表情,按着自己的性子眉飞色舞的描绘着千年前的那段爱情传奇。苏锦一边数着从老太太口里横飞出来的唾沫星子,一边念想着,让理科班这群脑子里已全被物理公式填充了的家伙,去对几千年前焦仲卿和刘兰芝的爱情产生兴趣未免是件太困难的事情了。老太太讲到焦仲卿和刘兰芝双双殉情而死之时咳嗽了一声,提醒底下那群不知已经神游到何方的学生们是时候为文章的主旨做笔记了。苏锦把课文翻到最后,快速扫过大致内容,目光却在那句:府吏闻此事,心知长别离。徘徊庭树下,自挂东南枝上硬生生地停了下来。思绪仿若戛然而止,被某种莫名的感怀而包围,心中有些钝痛,却不知从何而来。“懦弱。”一个略带鄙夷的声音传入苏锦的耳,拦截住了她空白的思绪。苏锦转过头,瞥见后桌的段见城。恍然间有种错觉,这个男生好似是被光线包裹着一般。段见城淡淡说。若他是焦仲卿,定不会让自己和深爱的女子走到这步田地,若是真走到山穷水尽的地步,定是决然赴死。何来徘徊。那清淡口气带着些不屑,却是这般笃定至极。他说,平生最鄙夷懦弱的男子。苏锦静默的注视着这个男生。终究是没有说出话来。苏锦莫名其妙的做了段见城的女友是一年以后的事情。全班在KTV里唱歌,美名曰:升高三前最后的狂欢。包厢里都是拥挤的人,但苏锦却还是能够感受到空调的温度调得异常的低,她躲在冷风吹不到的角落,捧着大杯的雪花啤酒像是喝水一样没有节制,她觉得心里有所郁结并且心思混乱,恍恍惚惚的注视着麦克风被传了一轮又一轮,听着音像里传出或高或低的杂乱音符,而自己却似是置身于别处,与此间的喧嚣起伏无关,只觉得空荡荡。苏锦记得自己与同桌曾谈及过自己这种从暑假开始无法摆脱的混沌状态,同桌是一副了然于胸的模样,义正言辞的对苏锦说,这是高三前期综合症。她说,苏锦你别太看重所谓的高三,高考和大学都只是一个过程而并非最终的意义,我们要以平常心去对待这些。苏锦想,其实自己并非执著什么,而是自幼便对于那些未知的一切充满恐惧。因为无法掌控,所以感到束手无策,身不由己。仿佛有种被命运捏在手里随意摆弄的感觉,特别难受正当苏锦失足于自己庞大的幻觉之时,身边的朋友开始玩起了真心话大冒险之类的游戏。在一边起哄的女生提议游戏从今晚没有唱歌过的人开始,于是因为忙着在沙发上的打牌的段见城那拨人便是首先被开刷的对象,而作为聚众赌博的头子,段见城自然是第一个被逮到。几个暗自对段见城有好感的姑娘早就揣摩好了问题,苏锦被旁边兴奋过头的女生推攘着,神志也渐渐清明起来。不知是谁直白的问出了那句:阿城,你有意中人么?KTV中的嘈杂如同顿时沉淀了一般,纵然空气里似乎还遗留着些噪音过境的痕迹,更多的却是一种屏气凝神的静。段见城沉默的捏着手中那张还没打出去扑克牌,几乎是在所有人的耐心倒塌的前一秒,清晰地说出了苏锦的名字。"
print("1. 输入长度:", len(doc))
print("2. 分词结果:", seg(doc))
1. 输入长度: 1413
2. 分词结果: ['苏锦', '一直', '记得', '那个', '午后', ',', '明晃晃', '的', '光线', '穿过', '教室', '的', '窗', '玻璃', '洒', '到', '自己', '脸上', ',', '有种', '特别', '暖和', '的', '感觉', '。', '那', '阳光', '仿佛', '是', '能够', '钻进', '人', '的', '心里', ',', '继而', '延展', '到', '身体', '全部', '的', '毛孔', '中', ',', '然后', '以', '一种', '温柔', '的', '霸道', '占据', '体内', '各', '个', '淋巴细胞', '。', '苏锦', '觉得', '连', '自己', '的', '每一个', '气息', '里', '都', '似乎', '是', '能', '流窜', '出', ...........
import time
from collections import defaultdict
from paddlenlp.datasets import load_dataset
from paddlenlp import Taskflow
seg_fast = Taskflow("word_segmentation", mode="fast")
# 加载ChnSentiCorp数据集
train_ds, dev_ds = load_dataset("chnsenticorp", splits=["train", "dev"])
texts = []
for data in train_ds:
texts.append(data["text"])
for data in dev_ds:
texts.append(data["text"])
inputs_length = len(texts)
print("1. 句子数量:", inputs_length)
tic_seg = time.time()
# 快速分词
results = seg_fast(texts)
time_diff = time.time() - tic_seg
print("2. 平均速率:%.2f句/s" % (inputs_length/time_diff))
# 词频统计
word_counts = defaultdict(int)
for result in results:
for word in result:
word_counts[word] += 1
# 打印频次最高的前20个单词及其对应词频
print("3. Top 20 Words:", sorted(word_counts.items(), key=lambda d: d[1], reverse=True)[:20])
100%|██████████| 1909/1909 [00:00<00:00, 7614.49it/s]
1. 句子数量: 10800
Building prefix dict from the default dictionary ...
Dumping model to file cache /tmp/jieba.cache
Loading model cost 0.995 seconds.
Prefix dict has been built successfully.
2. 平均速率:1429.74句/s
3. Top 20 Words: [(',', 59389), ('的', 41468), ('。', 23207), ('了', 15048), (' ', 11426), ('是', 10479), (',', 9204), ('我', 9167), ('很', 6881), ('!', 6169), ('也', 5793), ('在', 5180), ('酒店', 4829), ('不', 4784), ('都', 4604), ('有', 4589), ('就', 4169), ('.', 4099), ('没有', 3594), ('还', 3455)]
from paddlenlp import Taskflow
# 精确模式模型体积较大,可结合机器情况适当调整batch_size,采用批量样本输入的方式。
seg_accurate = Taskflow("word_segmentation", mode="accurate", batch_size=32)
# 批量样本输入,输入为多个句子组成的list,平均速率更快
texts = ["李伟拿出具有科学性、可操作性的《陕西省高校管理体制改革实施方案》", "诺戴商务咨询(上海)有限公司于2016年08月22日成立"]
print(seg_accurate(texts))
[['李伟', '拿出', '具有', '科学性', '、', '可操作性', '的', '《', '陕西省高校管理体制改革实施方案', '》'], ['诺戴商务咨询(上海)有限公司', '于', '2016年08月22日', '成立']]
from paddlenlp import Taskflow
seg = Taskflow("word_segmentation")
print(seg("平原上的火焰宣布延期上映"))`
'平原', '上', '的', '火焰', '宣布', '延期', '上映'
user_dict.txt
平原上的火焰
上 映
user_dict
一键装载在这里插入代码片
seg = Taskflow("word_segmentation", user_dict="/home/aistudio/user_dict.txt")
print(seg("平原上的火焰宣布延期上映"))
'平原上的火焰', '宣布', '延期', '上', '映'
from paddlenlp import Taskflow
tag = Taskflow("pos_tagging")
print(tag("第十四届全运会在西安举办"))
('第十四届', 'm'), ('全运会', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('举办', 'v')
from paddlenlp import Taskflow
ner = Taskflow("ner")
print(ner(["李伟拿出具有科学性、可操作性的《陕西省高校管理体制改革实施方案》", "诺戴商务咨询(上海)有限公司于2016年08月22日成立"]))
[[('李伟', '人物类_实体'), ('拿出', '场景事件'), ('具有', '肯定词'), ('科学性', '修饰词_性质'), ('、', 'w'), ('可操作性', '修饰词_性质'), ('的', '助词'), ('《', 'w'), ('陕西省高校管理体制改革实施方案', '作品类_实体'), ('》', 'w')], [('诺戴商务咨询(上海)有限公司', '组织机构类_企事业单位'), ('于', '介词'), ('2016年08月22日', '时间类_具体时间'), ('成立', '场景事件')]]`在这里插入代码片`
<table>
<tr><td>人物类_实体<td>物体类<td>生物类_动物<td>医学术语类
<tr><td>人物类_概念<td>物体类_兵器<td>品牌名<td>术语类_生物体
<tr><td>作品类_实体<td>物体类_化学物质<td>场所类<td>疾病损伤类
<tr><td>作品类_概念<td>其他角色类<td>场所类_交通场所<td>疾病损伤类_植物病虫害
<tr><td>组织机构类<td>文化类<td>位置方位<td>宇宙类
<tr><td>组织机构类_企事业单位<td>文化类_语言文字<td>世界地区类<td>事件类
<tr><td>组织机构类_医疗卫生机构<td>文化类_奖项赛事活动<td>饮食类<td>时间类
<tr><td>组织机构类_国家机关<td>文化类_制度政策协议<td>饮食类_菜品<td>时间类_特殊日
<tr><td>组织机构类_体育组织机构<td>文化类_姓氏与人名<td>饮食类_饮品<td>术语类
<tr><td>组织机构类_教育组织机构<td>生物类<td>药物类<td>术语类_符号指标类
<tr><td>组织机构类_军事组织机构<td>生物类_植物<td>药物类_中药<td>信息资料
<tr><td>链接地址<td>肯定词<td>个性特征<td>否定词
<tr><td>感官特征<td>数量词<td>场景事件<td>叹词
<tr><td>介词<td>拟声词<td>介词_方位介词<td>修饰词
<tr><td>助词<td>外语单词<td>代词<td>英语单词
<tr><td>连词<td>汉语拼音<td>副词<td>词汇用语
<tr><td>疑问词<td>w(标点)<td><td>
</table>
精准模式对部分类目(如组织机构等),做了更细的划分识别(如,医疗卫生机构、体育组织机构)。
from paddlenlp import Taskflow
ner_fast = Taskflow("ner", mode="fast")
print(ner_fast("三亚是一个美丽的城市"))
('三亚', 'LOC'), ('是', 'v'), ('一个', 'm'), ('美丽', 'a'), ('的', 'u'), ('城市', 'n')
标签 | 含义 | 标签 | 含义 | 标签 | 含义 | 标签 | 含义 |
---|---|---|---|---|---|---|---|
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 | 时间 |
from paddlenlp import Taskflow
# 使用BiLSTM作为编码器,速度最快
ddp = Taskflow("dependency_parsing")
print(ddp("2月8日谷爱凌夺得北京冬奥会第三金"))
[{'word': '2月8日', '谷爱凌', '夺得', '北京冬奥会', '第三金', 'head': 3, 3, 0, 5, 3, 'deprel': 'ADV', 'SBV', 'HED', 'ATT', 'VOB'}]
# 编码器部分将BiLSTM替换为ERNIE,模型准确率更高!
ddp = Taskflow("dependency_parsing", model="ddparser-ernie-1.0")
print(ddp("2月8日谷爱凌夺得北京冬奥会第三金"))
# 输出概率值和词性标签
ddp = Taskflow("dependency_parsing", prob=True, use_pos=True)
print(ddp("2月8日谷爱凌夺得北京冬奥会第三金"))
Label | 关系类型 | 说明 | 示例 |
---|---|---|---|
SBV | 主谓关系 | 主语与谓词间的关系 | 他送了一本书(他<--送) |
VOB | 动宾关系 | 宾语与谓词间的关系 | 他送了一本书(送-->书) |
POB | 介宾关系 | 介词与宾语间的关系 | 我把书卖了(把-->书) |
ADV | 状中关系 | 状语与中心词间的关系 | 我昨天买书了(昨天<--买) |
CMP | 动补关系 | 补语与中心词间的关系 | 我都吃完了(吃-->完) |
ATT | 定中关系 | 定语与中心词间的关系 | 他送了一本书(一本<--书) |
F | 方位关系 | 方位词与中心词的关系 | 在公园里玩耍(公园-->里) |
COO | 并列关系 | 同类型词语间关系 | 叔叔阿姨(叔叔-->阿姨) |
DBL | 兼语结构 | 主谓短语做宾语的结构 | 他请我吃饭(请-->我,请-->吃饭) |
DOB | 双宾语结构 | 谓语后出现两个宾语 | 他送我一本书(送-->我,送-->书) |
VV | 连谓结构 | 同主语的多个谓词间关系 | 他外出吃饭(外出-->吃饭) |
IC | 子句结构 | 两个结构独立或关联的单句 | 你好,书店怎么走?(你好<--走) |
MT | 虚词成分 | 虚词与中心词间的关系 | 他送了一本书(送-->了) |
HED | 核心关系 | 指整个句子的核心 |
主谓宾结构信息
from paddlenlp import Taskflow
ddp = Taskflow("dependency_parsing")
print(ddp("9月9日上午纳达尔在亚瑟·阿什球场击败俄罗斯球员梅德韦杰夫"))
<img src="https://user-images.githubusercontent.com/40840292/160275877-ea2827d0-831f-4d89-b676-57882922d294.png" width="600" height="700" align="middle" />
from utils import SVOInfo
texts = ["9月9日上午纳达尔在亚瑟·阿什球场击败俄罗斯球员梅德韦杰夫", "2月8日谷爱凌夺得北京冬奥会第三金"]
results = ddp(texts)
# 抽取句子中的SVO(主谓宾)结构化信息
svo_info = []
for result in results:
svo_info.append(SVOInfo(result).parse())
for i in range(len(texts)):
print("原文本:", texts[i])
print("包含的主谓宾结构:", svo_info[i])
这一章节将会学到的Taskflow技能:
BiLSTM
。from paddlenlp import Taskflow
senta = Taskflow("sentiment_analysis")
print(senta("这个产品用起来真的很流畅,我非常喜欢"))
[{'text': '这个产品用起来真的很流畅,我非常喜欢', 'label': 'positive', 'score': 0.993867814540863}]
<img src="https://bj.bcebos.com/paddlenlp/models/transformers/skep/skep.png" width="750" height="600" align="middle" />
任务 | 数据集合 | 语言 | 指标 | SKEP |
---|---|---|---|---|
句子级情感分类 | SST-2 | 英文 | ACC | 97.60 |
ChnSentiCorp | 中文 | ACC | 96.08 | |
评价对象级的情感分类 | SE-ABSA16_PHNS | 中文 | ACC | 65.22 |
观点抽取 | COTE_DP | 中文 | F1 | 86.30 |
from paddlenlp import Taskflow
senta = Taskflow("sentiment_analysis", model="skep_ernie_1.0_large_ch")
print(senta("作为老的四星酒店,房间依然很整洁,相当不错。机场接机服务很好,可以在车上办理入住手续,节省时间。"))
[{'text': '作为老的四星酒店,房间依然很整洁,相当不错。机场接机服务很好,可以在车上办理入住手续,节省时间。', 'label': 'positive', 'score': 0.9843240976333618}]
<img src="https://user-images.githubusercontent.com/10826371/131974040-fc84ec04-566f-4310-9839-862bfb27172e.png" width="400" height="550" align="middle" />
Metric | SIGHAN 13 | SIGHAN 14 | SIGHAN 15 |
---|---|---|---|
Detection F1 | 0.8348 | 0.6534 | 0.7464 |
Correction F1 | 0.8217 | 0.6302 | 0.7296 |
from paddlenlp import Taskflow
corrector = Taskflow("text_correction")
print(corrector('遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇。'))
[{'source': '遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇。', 'target': '遇到逆境时,我们必须勇于面对,而且要愈挫愈勇。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}]
from paddlenlp import Taskflow
similarity = Taskflow("text_similarity")
print(similarity([["春天适合种什么花?", "春天适合种什么菜?"], ["小蝌蚪找妈妈怎么样", "小蝌蚪找妈妈是谁画的"]]))
[{'text1': '春天适合种什么花?', 'text2': '春天适合种什么菜?', 'similarity': 0.83395267}, {'text1': '小蝌蚪找妈妈怎么样', 'text2': '小蝌蚪找妈妈是谁画的', 'similarity': 0.81923723}]
from paddlenlp import Taskflow
wordtag = Taskflow("knowledge_mining")
# 结果会与TermTree进行绑定,输出termid
print(wordtag("第24届冬季奥林匹克运动会在北京举办"))
[{'text': '第24届冬季奥林匹克运动会在北京举办', 'items': [{'item': '第24届冬季奥林匹克运动会', 'offset': 0, 'wordtag_label': '事件类', 'length': 13}, {'item': '在', 'offset': 13,
'wordtag_label': '介词', 'length': 1, 'termid': '介词_cb_在'}, {'item': '北京', 'offset': 14,
'wordtag_label': '世界地区类', 'length': 2, 'termid': '中国地区_cb_北京市'}, {'item': '举办', 'offset': 16, 'wordtag_label': '场景事件', 'length': 2, 'termid': '场景事件_cb_举办'}]}]
from termtree import TermTree
# 加载百科知识树
termtree = TermTree.from_dir("termtree_type.csv", "TermTree.V1.0")
# 通过termid获取别名
print(termtree._nodes["奖项赛事活动_eb_冬季奥林匹克运动会"]._data['alias'])
# 通过termid获取百度百科链接
print(termtree._nodes['奖项赛事活动_eb_冬季奥林匹克运动会']._data['links'][0]['bdbkUrl'])
'冬奥会', '冬奥', '冬季奥运会'
这一章节将会学到的Taskflow技能:
from paddlenlp import Taskflow
dialogue = Taskflow("dialogue")
print(dialogue(["你好"]))
(推荐使用终端terminal进入python解释器进行体验):
<img src="https://user-images.githubusercontent.com/40840292/160269082-35017f54-a13b-46a5-aa22-d022e1f5c9b6.png" width="350" height="300" align="middle" />
<img src="https://user-images.githubusercontent.com/40840292/160269161-91605a4e-5069-40a4-8ccf-996066c1b760.png" width="750" height="280" align="middle" />
<img src="https://user-images.githubusercontent.com/40840292/160269203-202ea28b-5b91-437a-9568-983265618f62.png" width="650" height="250" align="middle" />
这一章节将会学到的Taskflow技能:
# 训练步骤省略,提供了训练好的模型权重文件
# 直接下载并保存到/home/aistudio/custom_model路径
!wget https://bj.bcebos.com/paddlenlp/taskflow/demo/model_state.pdparams -P /home/aistudio/custom_model
!wget https://bj.bcebos.com/paddlenlp/taskflow/demo/model_config.json -P /home/aistudio/custom_model
task_path
指定自定义模型路径一键加载即可。from paddlenlp import Taskflow
my_senta = Taskflow("sentiment_analysis", model="skep_ernie_1.0_large_ch", task_path="/home/aistudio/custom_model")
print(my_senta("不错的酒店,服务还可以,下次还会入住的~"))
{'text': '不错的酒店,服务还可以,下次还会入住的~', 'label': 'positive', 'score': 0.9968485236167908}
项目连接:https://aistudio.baidu.com/aistudio/projectdetail/4180615?contributionType=1
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。