ModelScope体验:自然语言推理模型应用

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 自然语言推理,即输入形如(前提句,假设句)的句子对数据,模型会给出该句子对应的自然语言推理标签(contradiction、entailment、neutral)以及相应的概率,从而反映出句子对之间的关系。本文以“达摩自然语言推理”模型为例,展示了如果调用ModelScope工具,并通过gradio将该功能部署为小程序的过程。

操作步骤

参考模型文档快速开始


环境准备

ModelScope提供了本地(参考环境配置模型下载)和远程环境两种模式,这里选择了使用ModelScope提供的远程环境,即Notebook进行开发,更加便捷。

通过个人中心进入到实例启动页面,这里选择CPU环境启动Notebook:

进入到如图所示的交互页面,选择以Notebook方式运行

即可进入正常的Notebook页面:


模型调试

通过如下命令,即可在Notebook环境下自动下载所需推理模型。这里通过pipeline()函数,以一行代码实现了模型定义,其中第一个参数为任务名称,第二个参数为模型地址,这里选用了达摩自然语言推理模型(base),该模型为在structbert-base-chinese预训练模型的基础上,用CMNLI、OCNLI两个数据集(45.8w条数据)微调训练出来的自然语言推理模型。。

frommodelscope.pipelinesimportpipelinefrommodelscope.utils.constantimportTaskssemantic_cls=pipeline(Tasks.nli, 'damo/nlp_structbert_nli_chinese-base')

在定义好模型调用函数后,即可输入句子对实现模型调用:

semantic_cls(input=[('商务职业学院和财经职业学院哪个好?', '商务职业学院商务管理在哪个校区?')])

得到返回结果:

返回输入句子对可能的三种关系contradiction, entailment和neutral的概率,如上所示,该输入句子对之间最有可能为neutral关系,基本符合我们的人工判断,说明模型效果还是不错的。

除了输入单对句子,也可以将多对句子作为模型输入,以列表输入为例:

sen_list1= ['商务职业学院和财经职业学院哪个好?', '我爱中国']
sen_list2= ['商务职业学院商务管理在哪个校区?', '我很爱中国']
sen_pairs= []
forkinrange(len(sen_list1)):
sen_pairs.append((sen_list1[k], sen_list2[k]))
semantic_cls(input=(sen_pairs))

从而得到如下的两组返回结果,可见第一个句子对结果与上述相同,第二个句子对则更有可能为entailment关系,也基本符合我们的判断。

下面,我们展示如何通过一个web ui将该功能封装起来,形成一个小的app。


引入web ui

安装gradio:pip install gradio

运行以下代码:

importgradioasgrsemantic_cls=pipeline(Tasks.nli, 'damo/nlp_structbert_nli_chinese-base')
defnatural_language_inference(text1, text2):
res=semantic_cls(input=(text1, text2))
returnresserver=gr.Interface(
fn=natural_language_inference, 
inputs=[
gr.Textbox(lines=1, placeholder="请输入文本1"),
gr.Textbox(lines=2, placeholder="请输入文本2")
    ], 
outputs="text")
server.launch(share="true")

注意,最后server.launch的参数share=“true”表示该应用可以在Public URL上访问,否则只能在Local URL上访问。


最终,该应用呈现如下:


体验优化建议

  • 当前模型文档还比较简单,仅有单句子对输入示例,可以考虑加入多句子对和数据文件作为输入的示例,以提高用户使用效率。
  • 当前结果输出为按候选类别概率从小到大排列,可以考虑按照从大到小排列,更符合阅读习惯。
相关文章
|
15天前
|
机器学习/深度学习 自然语言处理 PyTorch
从零开始构建nlp情感分析模型!
本教程介绍了如何使用PyTorch和Hugging Face的Transformers库构建一个情感分析模型。主要内容包括导入所需库、读取训练数据集、加载预训练的BERT模型和分词器、定义情感数据集类、划分训练集和验证集、创建数据加载器、设置训练参数、训练模型、评估模型性能以及定义和测试预测函数。通过这些步骤,可以实现一个简单而有效的情感分析模型。
45 2
|
1月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
69 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
探索深度学习中的Transformer模型及其在自然语言处理中的应用
【10月更文挑战第6天】探索深度学习中的Transformer模型及其在自然语言处理中的应用
98 0
|
1月前
|
机器学习/深度学习 自然语言处理 异构计算
【NLP自然语言处理】初识深度学习模型Transformer
【NLP自然语言处理】初识深度学习模型Transformer
|
1月前
|
机器学习/深度学习 自然语言处理 算法
【NPL自然语言处理】带你迅速了解传统RNN模型
【NPL自然语言处理】带你迅速了解传统RNN模型
|
3月前
|
自然语言处理
【NLP】from glove import Glove的使用、模型保存和加载
使用 from glove import Glove 进行词向量训练、保存和加载的基本示例。
52 2
【NLP】from glove import Glove的使用、模型保存和加载
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch与Hugging Face Transformers:快速构建先进的NLP模型
【8月更文第27天】随着自然语言处理(NLP)技术的快速发展,深度学习模型已经成为了构建高质量NLP应用程序的关键。PyTorch 作为一种强大的深度学习框架,提供了灵活的 API 和高效的性能,非常适合于构建复杂的 NLP 模型。Hugging Face Transformers 库则是目前最流行的预训练模型库之一,它为 PyTorch 提供了大量的预训练模型和工具,极大地简化了模型训练和部署的过程。
175 2
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】探讨最新的深度学习算法、模型创新以及在图像识别、自然语言处理等领域的应用进展
深度学习作为人工智能领域的重要分支,近年来在算法、模型以及应用领域都取得了显著的进展。以下将探讨最新的深度学习算法与模型创新,以及它们在图像识别、自然语言处理(NLP)等领域的应用进展。
125 6
|
3月前
|
机器学习/深度学习 自然语言处理 数据处理
|
3月前
|
人工智能 开发框架 物联网
赢万元奖金 | 第七届CCF开源创新大赛ModelScope开源模型应用挑战赛开启报名!
第七届CCF开源创新大赛(后简称“大赛”) 由中国计算机学会(CCF)主办,长沙理工大学、CCF开源发展委员会联合承办。

热门文章

最新文章

相关产品

  • 自然语言处理