PaddleNLP一键预测功能:Taskflow API

QuickStart | 社区交流 | 一键预测&定制训练 | FAQ


特性

PaddleNLP提供开箱即用的产业级NLP预置任务能力,无需训练,一键预测。

  • 最全的中文任务:覆盖自然语言理解与自然语言生成两大核心应用;

  • 极致的产业级效果:在多个中文场景上提供产业级的精度与预测性能;

  • 统一的应用范式:通过paddlenlp.Taskflow调用,简捷易用。

任务名称 调用方式 一键预测 单条输入 多条输入 文档级输入 定制化训练 其它特性
中文分词 Taskflow("word_segmentation") 多种分词模式,满足快速切分和实体粒度精准切分
词性标注 Taskflow("pos_tagging") 基于百度前沿词法分析工具LAC
命名实体识别 Taskflow("ner") 覆盖最全中文实体标签
依存句法分析 Taskflow("dependency_parsing") 基于最大规模中文依存句法树库研发的DDParser
信息抽取 Taskflow("information_extraction") 适配多场景的开放域通用信息抽取工具
『解语』-知识标注 Taskflow("knowledge_mining") 覆盖所有中文词汇的知识标注工具
文本纠错 Taskflow("text_correction") 融合拼音特征的端到端文本纠错模型ERNIE-CSC
文本相似度 Taskflow("text_similarity") 基于百万量级Dureader Retrieval数据集训练RocketQA并达到前沿文本相似效果
情感倾向分析 Taskflow("sentiment_analysis") 基于情感知识增强预训练模型SKEP达到业界SOTA
生成式问答 Taskflow("question_answering") 使用最大中文开源CPM模型完成问答
智能写诗 Taskflow("poetry_generation") 使用最大中文开源CPM模型完成写诗
开放域对话 Taskflow("dialogue") 十亿级语料训练最强中文闲聊模型PLATO-Mini,支持多轮对话
代码生成 Taskflow("code_generation") 代码生成大模型
文图生成 Taskflow("text_to_image") 文图生成大模型
文本摘要 Taskflow("text_summarization") 文本摘要大模型

QuickStart

环境依赖

  • python >= 3.6

  • paddlepaddle >= 2.3.0

  • paddlenlp >= 2.3.4

https://user-images.githubusercontent.com/11793384/159693816-fda35221-9751-43bb-b05c-7fc77571dd76.giftaskflow1

可进入 Jupyter Notebook 环境,在线体验 👉🏻 进入在线运行环境

PaddleNLP Taskflow API 支持任务持续丰富中,我们将根据开发者反馈,灵活调整功能建设优先级,可通过Issue或问卷反馈给我们。

社区交流👬

  • 微信扫描二维码并填写问卷之后,加入交流群领取福利

    • 获取5月18-19日每晚20:30《产业级通用信息抽取技术UIE+ERNIE轻量级模型》直播课链接

    • 10G重磅NLP学习大礼包:

详细使用

PART Ⅰ   一键预测

中文分词

 (可展开详情)多种分词模式,满足快速切分和实体粒度精准切分

三种分词模式,满足各类分词需求

from paddlenlp import Taskflow

# 默认模式————实体粒度分词,在精度和速度上的权衡,基于百度LAC
>>> seg = Taskflow("word_segmentation")
>>> seg("近日国家卫健委发布第九版新型冠状病毒肺炎诊疗方案")
['近日', '国家卫健委', '发布', '第九版', '新型', '冠状病毒肺炎', '诊疗', '方案']

# 快速模式————最快:实现文本快速切分,基于jieba中文分词工具
>>> seg_fast = Taskflow("word_segmentation", mode="fast")
>>> seg_fast("近日国家卫健委发布第九版新型冠状病毒肺炎诊疗方案")
['近日', '国家', '卫健委', '发布', '第九版', '新型', '冠状病毒', '肺炎', '诊疗', '方案']

# 精确模式————最准:实体粒度切分准确度最高,基于百度解语
# 精确模式基于预训练模型,更适合实体粒度分词需求,适用于知识图谱构建、企业搜索Query分析等场景中
>>> seg_accurate = Taskflow("word_segmentation", mode="accurate")
>>> seg_accurate("近日国家卫健委发布第九版新型冠状病毒肺炎诊疗方案")
['近日', '国家卫健委', '发布', '第九版', '新型冠状病毒肺炎', '诊疗', '方案']

批量样本输入,平均速度更快

输入为多个句子组成的list,平均速度会更快。

>>> from paddlenlp import Taskflow
>>> seg = Taskflow("word_segmentation")
>>> seg(["第十四届全运会在西安举办", "三亚是一个美丽的城市"])
[['第十四届', '全运会', '在', '西安', '举办'], ['三亚', '是', '一个', '美丽', '的', '城市']]

自定义词典

你可以通过传入user_dict参数,装载自定义词典来定制分词结果。 在默认模式和精确模式下,词典文件每一行由一个或多个自定义item组成。词典文件user_dict.txt示例:

平原上的火焰
上 映

在快速模式下,词典文件每一行为一个自定义item+"\t"+词频(词频可省略,词频省略则自动计算能保证分出该词的词频),暂时不支持黑名单词典(即通过设置”年“、”末“,以达到切分”年末“的目的)。词典文件user_dict.txt示例:

平原上的火焰  10

加载自定义词典及输出结果示例:

>>> from paddlenlp import Taskflow
>>> seg = Taskflow("word_segmentation")
>>> seg("平原上的火焰宣布延期上映")
['平原', '上', '的', '火焰', '宣布', '延期', '上映']
>>> seg = Taskflow("word_segmentation", user_dict="user_dict.txt")
>>> seg("平原上的火焰宣布延期上映")
['平原上的火焰', '宣布', '延期', '上', '映']

参数说明

  • mode:指定分词模式,默认为None。

  • batch_size:批处理大小,请结合机器情况进行调整,默认为1。

  • user_dict:自定义词典文件路径,默认为None。

  • task_path:自定义任务路径,默认为None。

词性标注

 基于百度词法分析工具LAC

支持单条和批量预测

>>> from paddlenlp import Taskflow
# 单条预测
>>> tag = Taskflow("pos_tagging")
>>> tag("第十四届全运会在西安举办")
[('第十四届', 'm'), ('全运会', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('举办', 'v')]

# 批量样本输入,平均速度更快
>>> tag(["第十四届全运会在西安举办", "三亚是一个美丽的城市"])
[[('第十四届', 'm'), ('全运会', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('举办', 'v')], [('三亚', '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 时间

自定义词典

你可以通过装载自定义词典来定制化分词和词性标注结果。词典文件每一行表示一个自定义item,可以由一个单词或者多个单词组成,单词后面可以添加自定义标签,格式为item/tag,如果不添加自定义标签,则使用模型默认标签n

词典文件user_dict.txt示例:

赛里木湖/LAKE
高/a 山/n
海拔最高

装载自定义词典及输出结果示例:

>>> from paddlenlp import Taskflow
>>> tag = Taskflow("pos_tagging")
>>> tag("赛里木湖是新疆海拔最高的高山湖泊")
[('赛里木湖', 'LOC'), ('是', 'v'), ('新疆', 'LOC'), ('海拔', 'n'), ('最高', 'a'), ('的', 'u'), ('高山', 'n'), ('湖泊', 'n')]
>>> my_tag = Taskflow("pos_tagging", user_dict="user_dict.txt")
>>> my_tag("赛里木湖是新疆海拔最高的高山湖泊")
[('赛里木湖', 'LAKE'), ('是', 'v'), ('新疆', 'LOC'), ('海拔最高', 'n'), ('的', 'u'), ('高', 'a'), ('山', 'n'), ('湖泊', 'n')]

可配置参数说明

  • batch_size:批处理大小,请结合机器情况进行调整,默认为1。

  • user_dict:用户自定义词典文件,默认为None。

  • task_path:自定义任务路径,默认为None。

命名实体识别

 最全中文实体标签

支持两种模式

# 精确模式(默认),基于百度解语,内置91种词性及专名类别标签
>>> from paddlenlp import Taskflow
>>> ner = Taskflow("ner")
>>> ner("《孤女》是2010年九州出版社出版的小说,作者是余兼羽")
[('《', 'w'), ('孤女', '作品类_实体'), ('》', 'w'), ('是', '肯定词'), ('2010年', '时间类'), ('九州出版社', '组织机构类'), ('出版', '场景事件'), ('的', '助词'), ('小说', '作品类_概念'), (',', 'w'), ('作者', '人物类_概念'), ('是', '肯定词'), ('余兼羽', '人物类_实体')]

>>> ner = Taskflow("ner", entity_only=True)  # 只返回实体/概念词
>>> ner("《孤女》是2010年九州出版社出版的小说,作者是余兼羽")
[('孤女', '作品类_实体'), ('2010年', '时间类'), ('九州出版社', '组织机构类'), ('出版', '场景事件'), ('小说', '作品类_概念'), ('作者', '人物类_概念'), ('余兼羽', '人物类_实体')]

# 快速模式,基于百度LAC,内置24种词性和专名类别标签
>>> from paddlenlp import Taskflow
>>> ner = Taskflow("ner", mode="fast")
>>> ner("三亚是一个美丽的城市")
[('三亚', 'LOC'), ('是', 'v'), ('一个', 'm'), ('美丽', 'a'), ('的', 'u'), ('城市', 'n')]

批量样本输入,平均速度更快

>>> from paddlenlp import Taskflow
>>> ner = Taskflow("ner")
>>> ner(["热梅茶是一道以梅子为主要原料制作的茶饮", "《孤女》是2010年九州出版社出版的小说,作者是余兼羽"])
[[('热梅茶', '饮食类_饮品'), ('是', '肯定词'), ('一道', '数量词'), ('以', '介词'), ('梅子', '饮食类'), ('为', '肯定词'), ('主要原料', '物体类'), ('制作', '场景事件'), ('的', '助词'), ('茶饮', '饮食类_饮品')], [('《', 'w'), ('孤女', '作品类_实体'), ('》', 'w'), ('是', '肯定词'), ('2010年', '时间类'), ('九州出版社', '组织机构类'), ('出版', '场景事件'), ('的', '助词'), ('小说', '作品类_概念'), (',', 'w'), ('作者', '人物类_概念'), ('是', '肯定词'), ('余兼羽', '人物类_实体')]]

实体标签说明

  • 精确模式采用的标签集合

包含91种词性及专名类别标签,标签集合如下表:

WordTag标签集合
人物类_实体 组织机构类_军事组织机构_概念 文化类_制度政策协议 位置方位 术语类_医药学术语 信息资料_性别 否定词
人物类_概念 组织机构类_医疗卫生机构 文化类_姓氏与人名 世界地区类 术语类_生物体 链接地址 数量词
作品类_实体 组织机构类_医疗卫生机构_概念 生物类 世界地区类_国家 疾病损伤类 个性特征 数量词_序数词
作品类_概念 组织机构类_教育组织机构 生物类_植物 世界地区类_区划概念 疾病损伤类_植物病虫害 感官特征 数量词_单位数量词
组织机构类 组织机构类_教育组织机构_概念 生物类_动物 世界地区类_地理概念 宇宙类 场景事件 叹词
组织机构类_概念 物体类 品牌名 饮食类 事件类 介词 拟声词
组织机构类_企事业单位 物体类_概念 品牌名_品牌类型 饮食类_菜品 时间类 介词_方位介词 修饰词
组织机构类_企事业单位_概念 物体类_兵器 场所类 饮食类_饮品 时间类_特殊日 助词 修饰词_性质
组织机构类_国家机关 物体类_化学物质 场所类_概念 药物类 时间类_朝代 代词 修饰词_类型
组织机构类_国家机关_概念 其他角色类 场所类_交通场所 药物类_中药 时间类_具体时间 连词 修饰词_化
组织机构类_体育组织机构 文化类 场所类_交通场所_概念 术语类 时间类_时长 副词 外语单词
组织机构类_体育组织机构_概念 文化类_语言文字 场所类_网上场所 术语类_术语类型 词汇用语 疑问词 汉语拼音
组织机构类_军事组织机构 文化类_奖项赛事活动 场所类_网上场所_概念 术语类_符号指标类 信息资料 肯定词 w(标点)
  • 快速模式采用的标签集合

标签 含义 标签 含义 标签 含义 标签 含义
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 时间

自定义词典

你可以通过装载自定义词典来定制化命名实体识别结果。词典文件每一行表示一个自定义item,可以由一个term或者多个term组成,term后面可以添加自定义标签,格式为item/tag,如果不添加自定义标签,则使用模型默认标签。

词典文件user_dict.txt示例:

长津湖/电影类_实体
收/词汇用语 尾/术语类
最 大
海外票仓

以"《长津湖》收尾,北美是最大海外票仓"为例,原本的输出结果为:

[('《', 'w'), ('长津湖', '作品类_实体'), ('》', 'w'), ('收尾', '场景事件'), (',', 'w'), ('北美', '世界地区类'), ('是', '肯定词'), ('最大', '修饰词'), ('海外', '场所类'), ('票仓', '词汇用语')]

装载自定义词典及输出结果示例:

>>> from paddlenlp import Taskflow

>>> my_ner = Taskflow("ner", user_dict="user_dict.txt")
>>> my_ner("《长津湖》收尾,北美是最大海外票仓")
[('《', 'w'), ('长津湖', '电影类_实体'), ('》', 'w'), ('收', '词汇用语'), ('尾', '术语类'), (',', 'w'), ('北美', '世界地区类'), ('是', '肯定词'), ('最', '修饰词'), ('大', '修饰词'), ('海外票仓', '场所类')]

可配置参数说明

  • batch_size:批处理大小,请结合机器情况进行调整,默认为1。

  • user_dict:用户自定义词典文件,默认为None。

  • task_path:自定义任务路径,默认为None。

  • entity_only:只返回实体/概念词及其对应标签。

依存句法分析

 基于最大规模中文依存句法树库研发的DDParser

支持多种形式输入

未分词输入:

>>> from paddlenlp import Taskflow
>>> ddp = Taskflow("dependency_parsing")
>>> ddp("2月8日谷爱凌夺得北京冬奥会第三金")
[{'word': ['2月8日', '谷爱凌', '夺得', '北京冬奥会', '第三金'], 'head': [3, 3, 0, 5, 3], 'deprel': ['ADV', 'SBV', 'HED', 'ATT', 'VOB']}]

使用分词结果来输入:

>>> ddp = Taskflow("dependency_parsing")
>>> ddp.from_segments([['2月8日', '谷爱凌', '夺得', '北京冬奥会', '第三金']])
[{'word': ['2月8日', '谷爱凌', '夺得', '北京冬奥会', '第三金'], 'head': [3, 3, 0, 5, 3], 'deprel': ['ADV', 'SBV', 'HED', 'ATT', 'VOB']}]

批量样本输入,平均速度更快

>>> from paddlenlp import Taskflow
>>> ddp(["2月8日谷爱凌夺得北京冬奥会第三金", "他送了一本书"])
[{'word': ['2月8日', '谷爱凌', '夺得', '北京冬奥会', '第三金'], 'head': [3, 3, 0, 5, 3], 'deprel': ['ADV', 'SBV', 'HED', 'ATT', 'VOB']}, {'word': ['他', '送', '了', '一本', '书'], 'head': [2, 0, 2, 5, 2], 'deprel': ['SBV', 'HED', 'MT', 'ATT', 'VOB']}]

多种模型选择,满足精度、速度需求

使用ERNIE 1.0进行预测

>>> ddp = Taskflow("dependency_parsing", model="ddparser-ernie-1.0")
>>> ddp("2月8日谷爱凌夺得北京冬奥会第三金")
[{'word': ['2月8日', '谷爱凌', '夺得', '北京冬奥会', '第三金'], 'head': [3, 3, 0, 5, 3], 'deprel': ['ADV', 'SBV', 'HED', 'ATT', 'VOB']}]

除ERNIE 1.0外,还可使用ERNIE-Gram预训练模型,其中model=ddparser(基于LSTM Encoder)速度最快,model=ddparser-ernie-gram-zhmodel=ddparser-ernie-1.0效果更优(两者效果相当)。

输出方式

输出概率值和词性标签:

>>> ddp = Taskflow("dependency_parsing", prob=True, use_pos=True)
>>> ddp("2月8日谷爱凌夺得北京冬奥会第三金")
[{'word': ['2月8日', '谷爱凌', '夺得', '北京冬奥会', '第三金'], 'head': [3, 3, 0, 5, 3], 'deprel': ['ADV', 'SBV', 'HED', 'ATT', 'VOB'], 'postag': ['TIME', 'PER', 'v', 'ORG', 'n'], 'prob': [0.97, 1.0, 1.0, 0.99, 0.99]}]

依存关系可视化

>>> from paddlenlp import Taskflow
>>> ddp = Taskflow("dependency_parsing", return_visual=True)
>>> result = ddp("2月8日谷爱凌夺得北京冬奥会第三金")[0]['visual']
>>> import cv2
>>> cv2.imwrite('test.png', result)

依存句法分析标注关系集合

Label 关系类型 说明 示例
SBV 主谓关系 主语与谓词间的关系 他送了一本书(他<--送)
VOB 动宾关系 宾语与谓词间的关系 他送了一本书(送-->书)
POB 介宾关系 介词与宾语间的关系 我把书卖了(把-->书)
ADV 状中关系 状语与中心词间的关系 我昨天买书了(昨天<--买)
CMP 动补关系 补语与中心词间的关系 我都吃完了(吃-->完)
ATT 定中关系 定语与中心词间的关系 他送了一本书(一本<--书)
F 方位关系 方位词与中心词的关系 在公园里玩耍(公园-->里)
COO 并列关系 同类型词语间关系 叔叔阿姨(叔叔-->阿姨)
DBL 兼语结构 主谓短语做宾语的结构 他请我吃饭(请-->我,请-->吃饭)
DOB 双宾语结构 谓语后出现两个宾语 他送我一本书(送-->我,送-->书)
VV 连谓结构 同主语的多个谓词间关系 他外出吃饭(外出-->吃饭)
IC 子句结构 两个结构独立或关联的单句 你好,书店怎么走?(你好<--走)
MT 虚词成分 虚词与中心词间的关系 他送了一本书(送-->了)
HED 核心关系 指整个句子的核心

可配置参数说明

  • batch_size:批处理大小,请结合机器情况进行调整,默认为1。

  • model:选择任务使用的模型,可选有ddparserddparser-ernie-1.0ddparser-ernie-gram-zh

  • tree:确保输出结果是正确的依存句法树,默认为True。

  • prob:是否输出每个弧对应的概率值,默认为False。

  • use_pos:是否返回词性标签,默认为False。

  • use_cuda:是否使用GPU进行切词,默认为False。

  • return_visual:是否返回句法树的可视化结果,默认为False。

  • task_path:自定义任务路径,默认为None。