---
url: /tools/aistudio.md
description: 使用aistudio体验PaddleNLP信息抽取
---

# aistudio再升级：我愿称aistudio为jupyter最佳魔改版本

## 基于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应用创建入口，如下图：

![](https://ai-studio-static-online.cdn.bcebos.com/2feac194a36642f7bafbe3f6d45af0f57c545f2b3b074f60acab485b958c7206)

在百度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()
```

快速创建-部署应用，如图：
![应用](https://ai-studio-static-online.cdn.bcebos.com/594711658e6c4a3cb52a1364e47fb14f3e01d2490f7446149cf1552520ccb150)

## 总结：

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

本文写于2023年3月25日下午。
