huggingfacer QuestionAnswerig问答模型调用方式

2023-11-20

        huggingface网站提供了大量深度学习预训练模型及其调用方式。本文主要介绍问答模型调用方式,主要是针对问答结果输出完整上下文的问题。其现象在于问题答案为输入的上下文,而不是答案部分。出现该问题主要原因是transformers版本过低。

1 完整输出上下文

        下面示例程序采用transformers v2版本,输出结果是完整上下文,即不正确的问答结果。

#Transformers v2,
# -*- coding: utf-8 -*-
from transformers import AutoModelForQuestionAnswering,AutoTokenizer,pipeline
if __name__ == '__main__':
    context = '卡利亚·基拔(,)生于英国汉默史密斯,是一名英格兰籍职业足球员,于2010年夏季约满离开母会阿仙奴。直到2005/06年,基拔通常在阿仙奴的青年后备队效力。他在首次在2005年11月29日的联赛杯赛事上场,并于12月7日,在一个欧洲联赛冠军杯比赛对阿积士,作为替代左后卫,入替受伤的劳伦。2006年7月21日阿仙奴宣布,将基拔出借卡迪夫城整个2006-07赛季,其后转借给修安联。2008年1月3日返回阿仙奴授予46号码。2008年2月11日,阿仙奴的英超联赛比赛中对布莱克本作为后备球员。但2008年7月10日,基拔被出借莱斯特城的一个赛季之久。2009年3月3日主场对-{zh-hans:斯托克港;zh-hk:史托港}-,开赛后仅两分钟,基拔的传中球「挞Q」却直入网角,是他个人首个入球。基拔在外借期间成为常规正选,整季上阵达39场及射入1球,协助莱斯特城赢取英甲联赛冠军及重返英冠。2009/10年上半季仅于两场英格兰联赛杯及一场无关痛痒的欧联分组赛上阵,将于季后约满的基拔获外借到英冠榜末球会彼德堡直到球季结束,期间上阵10场。2010年夏季基拔约满阿仙奴成为自由球员,仅为母会合共上阵10场,英超「升班马」黑池有意罗致,其后前往-{zh-hans:谢菲尔德联; zh-hk:锡菲联;}-参加试训,惟未有获得录用。'
    mode_name = 'liam168/qa-roberta-base-chinese-extractive'
    model = AutoModelForQuestionAnswering.from_pretrained(mode_name)
    tokenizer = AutoTokenizer.from_pretrained(mode_name)
    QA = pipeline('question-answering', model=model, tokenizer=tokenizer)
    QA_input = {'question': "卡利亚·基拔的职业是什么?",'context': context}
    print(QA(QA_input))

      输出结果如下所示:

 {'score': 0.9999152439741863, 'start': 0, 'end': 535, 'answer': '卡利亚·基拔(,)生于英国汉默史密斯,是一名英格兰籍职业足球员,于2010年夏季约满离开母会阿仙奴。直到2005/06年,基拔通常在阿仙奴的青年后备队效力。他在首次在2005年11月29日的联赛杯赛事上场,并于12月7日,在一个欧洲联赛冠军杯比赛对阿积士,作为替代左后卫,入替受伤的劳伦。2006年7月21日阿仙奴宣布,将基拔出借卡迪夫城整个2006-07赛季,其后转借给修安联。2008年1月3日返回阿仙奴授予46号码。2008年2月11日,阿仙奴的英超联赛比赛中对布莱克本作为后备球员。但2008年7月10日,基拔被出借莱斯特城的一个赛季之久。2009年3月3日主场对-{zh-hans:斯托克港;zh-hk:史托港}-,开赛后仅两分钟,基拔的传中球「挞Q」却直入网角,是他个人首个入球。基拔在外借期间成为常规正选,整季上阵达39场及射入1球,协助莱斯特城赢取英甲联赛冠军及重返英冠。2009/10年上半季仅于两场英格兰联赛杯及一场无关痛痒的欧联分组赛上阵,将于季后约满的基拔获外借到英冠榜末球会彼德堡直到球季结束,期间上阵10场。2010年夏季基拔约满阿仙奴成为自由球员,仅为母会合共上阵10场,英超「升班马」黑池有意罗致,其后前往-{zh-hans:谢菲尔德联;'}

2 正确输出结果

        下面示例程序采用transformers v4版本,可以得到正确的问答结果。

#Transformers v4,
# -*- coding: utf-8 -*-
from transformers import AutoModelForQuestionAnswering,AutoTokenizer,pipeline
if __name__ == '__main__':
    context = '卡利亚·基拔(,)生于英国汉默史密斯,是一名英格兰籍职业足球员,于2010年夏季约满离开母会阿仙奴。直到2005/06年,基拔通常在阿仙奴的青年后备队效力。他在首次在2005年11月29日的联赛杯赛事上场,并于12月7日,在一个欧洲联赛冠军杯比赛对阿积士,作为替代左后卫,入替受伤的劳伦。2006年7月21日阿仙奴宣布,将基拔出借卡迪夫城整个2006-07赛季,其后转借给修安联。2008年1月3日返回阿仙奴授予46号码。2008年2月11日,阿仙奴的英超联赛比赛中对布莱克本作为后备球员。但2008年7月10日,基拔被出借莱斯特城的一个赛季之久。2009年3月3日主场对-{zh-hans:斯托克港;zh-hk:史托港}-,开赛后仅两分钟,基拔的传中球「挞Q」却直入网角,是他个人首个入球。基拔在外借期间成为常规正选,整季上阵达39场及射入1球,协助莱斯特城赢取英甲联赛冠军及重返英冠。2009/10年上半季仅于两场英格兰联赛杯及一场无关痛痒的欧联分组赛上阵,将于季后约满的基拔获外借到英冠榜末球会彼德堡直到球季结束,期间上阵10场。2010年夏季基拔约满阿仙奴成为自由球员,仅为母会合共上阵10场,英超「升班马」黑池有意罗致,其后前往-{zh-hans:谢菲尔德联; zh-hk:锡菲联;}-参加试训,惟未有获得录用。'
    mode_name = 'liam168/qa-roberta-base-chinese-extractive'
    model = AutoModelForQuestionAnswering.from_pretrained(mode_name)
    tokenizer = AutoTokenizer.from_pretrained(mode_name)
    QA = pipeline('question-answering', model=model, tokenizer=tokenizer)
    QA_input = {'question': "卡利亚·基拔的职业是什么?",'context': context}
    print(QA(QA_input))

        输出结果如下所示:

        {'score': 0.9999152421951294, 'start': 20, 'end': 31, 'answer': '一名英格兰籍职业足球员'}

3 另一种调用方式及其结果

# -*- coding: utf-8 -*-
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, QuestionAnsweringPipeline
if __name__ == '__main__':
    context = '卡利亚·基拔(,)生于英国汉默史密斯,是一名英格兰籍职业足球员,于2010年夏季约满离开母会阿仙奴。直到2005/06年,基拔通常在阿仙奴的青年后备队效力。他在首次在2005年11月29日的联赛杯赛事上场,并于12月7日,在一个欧洲联赛冠军杯比赛对阿积士,作为替代左后卫,入替受伤的劳伦。2006年7月21日阿仙奴宣布,将基拔出借卡迪夫城整个2006-07赛季,其后转借给修安联。2008年1月3日返回阿仙奴授予46号码。2008年2月11日,阿仙奴的英超联赛比赛中对布莱克本作为后备球员。但2008年7月10日,基拔被出借莱斯特城的一个赛季之久。2009年3月3日主场对-{zh-hans:斯托克港;zh-hk:史托港}-,开赛后仅两分钟,基拔的传中球「挞Q」却直入网角,是他个人首个入球。基拔在外借期间成为常规正选,整季上阵达39场及射入1球,协助莱斯特城赢取英甲联赛冠军及重返英冠。2009/10年上半季仅于两场英格兰联赛杯及一场无关痛痒的欧联分组赛上阵,将于季后约满的基拔获外借到英冠榜末球会彼德堡直到球季结束,期间上阵10场。2010年夏季基拔约满阿仙奴成为自由球员,仅为母会合共上阵10场,英超「升班马」黑池有意罗致,其后前往-{zh-hans:谢菲尔德联; zh-hk:锡菲联;}-参加试训,惟未有获得录用。'
    model_name = "chinese_pretrain_mrc_roberta_wwm_ext_large"
    tokenizer = AutoTokenizer.from_pretrained(f"luhua/{model_name}")
    model = AutoModelForQuestionAnswering.from_pretrained(f"luhua/{model_name}")
    QA = QuestionAnsweringPipeline(model,tokenizer)
    QA_input = {'question': "卡利亚·基拔的职业是什么?",'context': context}
    print(QA(QA_input))
#输出结果:{'score': 0.5592695474624634, 'start': 26, 'end': 31, 'answer': '职业足球员'}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

huggingfacer QuestionAnswerig问答模型调用方式 的相关文章

  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • SQLALchemy .query:类“Car”的未解析属性引用“query”

    我有一个这里已经提到的问题https youtrack jetbrains com issue PY 44557 https youtrack jetbrains com issue PY 44557 但我还没有找到解决方案 我使用 Pyt
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate

随机推荐

  • 三面美团被问:MySQL的B+Tree索引到底是咋回事?聚簇索引到底是如何长高的?这不是必过?

    你肯定知道MySQL进行CRUD是在内存中进行的 也就是在Buffer Pool中 然后你也知道了当内存中没有MySQL需要的数据时 MySQL会从Disk中通过IO操作将数据读入内存中 读取的单位呢就是 数据页 一般数据页长下面这样 没错
  • 17.清晰架构(01): 融合 DDD、洋葱架构、整洁架构、CQRS...(译)

    17 清晰架构 01 融合 DDD 洋葱架构 整洁架构 CQRS 译 原文 https herbertograca com 2017 11 16 explicit architecture 01 ddd hexagonal onion cl
  • 作物产量常用的单位换算公式

    作物产量常用的单位换算公式 一 产量的定义 Agronomic Yields 1 Abstrct 2 Protocol 2 1 Grain Harvest of Annual Row crops 标准含水量 For corn the sta
  • Python人工智能,13天快速入门机器学习教程,含14大案例(NBA球员数据分析,北京租房数据,疾病数据预测等)

    40h小时入门人工智能 带你了解人工智能的前世今生 带你掌握人工智能经典算法 可掌握核心能力 1 掌握机器学习中处理数据的方法 2 理解经典的机器学习算法原理 3 掌握机器学习中工作的具体流程 Python人工智能13天快速入门机器学习教程
  • Android studio Mac快捷键连续选择相同内容和选中当前光标位置内容

    刚从Windows换到Mac第一件事绝对是先熟悉AS的快捷键 有两个很好用的快捷键找了很久都没找到 这里放出来 连续选择相同内容 Windows Alt j Control G Mac接Windows键盘是 Ctrl G 效果如下 选中当前
  • 面试之MySQL调优问题

    文章目录 前言 一 MySQL的底层原理粗解 1 1 MySQL的底层运作 1 2 MySQL的存储方式 二 索引 重点内容 2 1 索引是什么 2 2 MySQL调优到底是调啥的 2 3 如何创建一个索引 2 3 1在创建表的时候创建索引
  • Linux 上传删除文件命令

    rm 文件名 删除 rz Enter 上传文件 Ctrl z 退出
  • 枚举基础问题

    枚举问题 与7无关的数为例 枚举问题 这类问题并不复杂 对于题目本身只需要通过循环去遍历 列举出所有可能满足条件的情况 一个一个罗列出来 称为枚举问题 例如下面的题目 与7无关的数 这就是一类枚举问题 将所有可能满足 与7无关的数 罗列出来
  • POC - Adobe ColdFusion 反序列化漏洞(CVE-2017-3066)

    安装010Editer 下载链接 http www pc6 com softview SoftView 55129 html 复制POC的十六进制 00 03 00 00 00 01 00 00 00 00 00 00 00 01 11 0
  • html制作简单的表单<form>

    文章目录 一 使用到的标签用法介绍 1 演示标签代码 2 标签使用具体介绍 二 表单制作代码 三 结果显示 一 使用到的标签用法介绍 1 演示标签代码
  • 输出九九乘法表

    九九乘法表 尝试编写程序 输出九九乘法表 具体如下图所示 代码 include
  • redis服务器信息统计,Redis 返回关于 Redis 服务器的各种信息和统计数值 命令:INFO...

    INFO section 以一种易于解释 parse 且易于阅读的格式 返回关于 Redis 服务器的各种信息和统计数值 通过给定可选的参数 section 可以让命令只返回某一部分的信息 server 一般 Redis 服务器信息 包含以
  • 突发!ITELLYOU要改版了!

    微信公众号 网管小贾 个人博客 www sysadm cc 经常下载Windows系统镜像的老司机中 我敢保证十之八九对 MSDN 我告诉你 这个网站再熟悉不过 可是对于新手小白们来说 这个站TA究竟是个啥 其实 MSDN 我告诉你 是个名
  • 解决火狐首次启动太慢的方法

    众所周知 火狐浏览器有一定的优越性 现在众多的网站都采用了jquery技术 而ie在加载jquery上效果实在太差 尤其是配置稍低的情况下 ie很容易被卡死 这就体现出了火狐的优势 但火狐唯一不足的就是第一次启动的速度非常的慢 下面就是解决
  • 世界芯中国芯RISC-V相关资源及进展

    目录 1 RISC V介绍 RISC V为何会在最近两年迅速崛起 RISC V处理器生态 RISC V商业模式 2 RISC V发展历程 3 RISC V国际协会 4 中国RISC V产业联盟 5 RISC V相关资源 1 指令集规范 2
  • kotlin 之于 java 的差异

    一 变量声名 赋值和访问 kotlin 变量是空安全的 一般要求声明时就赋值 声名变量有两个关键字var和val 其中val相当于 java 的中的final 变量类型可显式给出 也可隐式推断 变量也可分可空类型和非空类型 以下给出几种声名
  • ROS1 ROS2学习

    ROS1 ROS2学习 安装 ROS ROS1 ROS2 命令行界面 ROS2 功能包相关指令 ROS 命令行工具 ROS1 CLI工具 ROS2 CLI工具 ROS 通信核心概念 节点 Node 节点相关的CLI 话题 Topic 编写发
  • Altium Designer 20 常见错误

    记录学习过程中出现的错误及解决方法 1 off grid pin问题和Off grid Net Label问题 Off grid Net Label问题解决 只需要选中出现警告的元件 然后按A再按G即可 或者按Shift Ctrl D也行
  • 【网络通信】TCP网络编程

    TCP网络编程 一 面向连接的TCP流模式 二 server程序 三 client程序 四 相关文章 1 TCP网络编程 2 sockaddr和sockaddr in详解 3 socket编程为什么需要htons ntohl ntohs h
  • huggingfacer QuestionAnswerig问答模型调用方式

    huggingface网站提供了大量深度学习预训练模型及其调用方式 本文主要介绍问答模型调用方式 主要是针对问答结果输出完整上下文的问题 其现象在于问题答案为输入的上下文 而不是答案部分 出现该问题主要原因是transformers版本过低