Skip to content

飞桨是文心一言的底座。

基于Gradio体验PaddleNLP信息抽取

aistudio再一次推出重磅更新,可以直接创建​Gradio应用了。创建​-部署一键搞定。

本教程是入门级教程,主要用于体验两个产品:PaddleNLP和Gradio。

PaddleNLP

PaddleNLP是一款简单易用且功能强大的自然语言处理开发库。聚合业界优质预训练模型并提供开箱即用的开发体验,覆盖NLP多场景的模型库,搭配产业实践范例,提供极致的训练与推理性能,可满足灵活定制的开发需求。注:来源于飞桨官网介绍

本教程基于一个案例上手PaddleNLP Taskflow API实现信息的抽取。

Gradio

Build & Share Delightful Machine Learning Apps

Gradio is the fastest way to demo your machine learning model with a friendly web interface so that anyone can use it, anywhere!

aistudio已经集成了Gradio,我们可以方便快速地将自己的模型生成应用,供其他人上手体验。

在启动页,可以看到Gridio应用创建入口,如下图:

在百度aistudio上体验:

python
# 从paddlenlp引入taskflow
from paddlenlp import Taskflow

# 定义需要抽取信息的结构
# 例如从新闻文本中需要抽取出时间、选手、赛事名称等
# 则可以定义scheme = ['时间', '选手', '赛事名称']
scheme = ['年级', '考研年份', '本科院校', '本科专业', '目标院校', '目标专业']

# 初始化对象
tf = Taskflow('information_extraction', schema = scheme)

# 输入文本,输出结果
rep = tf("身份: 曾 大三 在校 24考研 学习经历:机械 二类本科 目标:机械 院校需要专业的院校规划老师分析 考研目的:学历提升发展")
rep

out:
[{'年级': [{'text': '大三',
    'start': 6,
    'end': 8,
    'probability': 0.3902969759570496}],
  '考研年份': [{'text': '24',
    'start': 12,
    'end': 14,
    'probability': 0.792130002729678}],
  '本科院校': [{'text': '机械 院校',
    'start': 33,
    'end': 38,
    'probability': 0.5170489458024008}],
  '本科专业': [{'text': '机械',
    'start': 22,
    'end': 24,
    'probability': 0.5408178337555043}],
  '目标院校': [{'text': '机械 院校',
    'start': 33,
    'end': 38,
    'probability': 0.9560203380534773}]}]

# 对输出结果按照要求展示
for rr in rep:
    ss = []
    for item in rr.items():
        s = '{}:{}'.format(item[0], item[1][0]['text'])
        ss.append(s)
    print('\n'.join(ss))
    
out:
年级:大三
考研年份:24
本科院校:机械 院校
本科专业:机械
目标院校:机械 院校

Gradio应用

创建untitled.gradio.py文件

python
import gradio as gr
from paddlenlp import Taskflow

def quickstart(info1, info2, info3, content):
    schema = []
    for info in [info1, info2, info3]:
        if info.strip():
            schema.append(info)
    ie = Taskflow('information_extraction', schema = schema)
    rep = ie(content)
    texts = []
    for r in rep:
        for item in r.items():
            text = '{}:{}'.format(item[0], item[1][0]['text'])
            texts.append(text)
    return '\n'.join(texts)
demo = gr.Interface(fn=quickstart, inputs=[gr.Text(label='提取信息1', value="时间"), gr.Text(label='提取信息2', value='选手'),gr.Text(label='提取信息3', value='赛事名称'),gr.Text(label='请输入文本内容', value='2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!')], outputs="text")

demo.launch()

快速创建-部署应用,如图: 应用

总结:

  • PaddleNLP除信息抽取外,还包含分词、词法分析、句法分析、知识挖掘、文本纠错等任务,有需要的同学可以根据自己的应用场景深入体验。
  • 本教程untitled.gradio.py中实现了gradio应用的生成demo,大家可以参考。更多详情功能可以参考Gradio官方文档

飞桨PPDB——深度学习社区