NLP(四十一)使用HuggingFace翻译模型的一次尝试

2023-11-11

  本文将如何如何使用HuggingFace中的翻译模型。
  HuggingFace是NLP领域中响当当的团体,它在预训练模型方面作出了很多接触的工作,并开源了许多预训练模型和已经针对具体某个NLP人物训练好的直接可以使用的模型。本文将使用HuggingFace提供的可直接使用的翻译模型。
  HuggingFace的翻译模型可参考网址:https://huggingface.co/models?pipeline_tag=translation ,该部分模型中的绝大部分是由Helsinki-NLP(Language Technology Research Group at the University of Helsinki)机构开源,模型数量为1333个。

模型使用

  笔者将在PyTorch框架下使用HuggingFace的中译英模型英译中模型。其中中译英模型的模型名称为:opus-mt-zh-en,下载网址为:https://huggingface.co/Helsinki-NLP/opus-mt-zh-en/tree/main英译中模型的模型名称为opus-mt-en-zh,下载网址为:https://huggingface.co/Helsinki-NLP/opus-mt-en-zh/tree/main
  首先我们先尝试中译英模型,即把中文翻译成英语,代码如下:

# -*- coding: utf-8 -*-
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained("./opus-mt-zh-en")

model = AutoModelForSeq2SeqLM.from_pretrained("./opus-mt-zh-en")

text = "从时间上看,中国空间站的建造比国际空间站晚20多年。"
# Tokenize the text
batch = tokenizer.prepare_seq2seq_batch(src_texts=[text])

# Make sure that the tokenized text does not exceed the maximum
# allowed size of 512
batch["input_ids"] = batch["input_ids"][:, :512]
batch["attention_mask"] = batch["attention_mask"][:, :512]

# Perform the translation and decode the output
translation = model.generate(**batch)
result = tokenizer.batch_decode(translation, skip_special_tokens=True)
print(result)

翻译结果如下:

["In terms of time, the Chinese space station was built more than 20 years later than the International Space Station."]

  接着我们先尝试英译中模型,即把英文翻译成汉语,代码如下:

# -*- coding: utf-8 -*-
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained("./opus-mt-en-zh")

model = AutoModelForSeq2SeqLM.from_pretrained("./opus-mt-en-zh")

text = "In terms of time, the Chinese space station was built more than 20 years later than the International Space Station."
# Tokenize the text
batch = tokenizer.prepare_seq2seq_batch(src_texts=[text])

# Make sure that the tokenized text does not exceed the maximum
# allowed size of 512
batch["input_ids"] = batch["input_ids"][:, :512]
batch["attention_mask"] = batch["attention_mask"][:, :512]

# Perform the translation and decode the output
translation = model.generate(**batch)
result = tokenizer.batch_decode(translation, skip_special_tokens=True)
print(result)

翻译结果如下:

['就时间而言,中国空间站的建造比国际空间站晚了20多年。']

  有了HuggingFace的transformers模块,我们使用起这些模型相当方便,同时也有很不错的翻译效果。

模型解释

  接着我们再接触一款工具,名称为shapshap是Python开发的一个模型解释包,可以任何机器学习模型的输出。其名称来源于SHapley Additive exPlanation,在合作博弈论的启发下SHAP构建一个加性的解释模型,所有的特征都视为“贡献者”。对于每个预测样本,模型都产生一个预测值,SHAP value就是该样本中每个特征所分配到的数值。
  我们尝试着使用shap模块来对翻译模型进行解释,可以看到shap可视化效果非常棒的解释界面,如下:
中译英模型代码
默认输出结果为翻译结果,如下:

默认输出结果

模型解释的热力图效果如下:

模型解释的热力图效果
从热力图中我们可以发现,空间站这个词语被翻译成space station。
  同样,我们可以看到英译中模型的热力图解释效果,如下:
的热力图解释效果
  本次分享到此结束,感谢大家阅读~
  2021年3月10日于上海浦东~

参考网址

  1. HuggingFace translation model: https://huggingface.co/models?filter=zh&pipeline_tag=translation
  2. Text to Text Explanation: Machine Translation Example: https://shap.readthedocs.io/en/latest/example_notebooks/text_examples/translation/Machine%20Translation%20Explanation%20Demo.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NLP(四十一)使用HuggingFace翻译模型的一次尝试 的相关文章

随机推荐

  • 浅谈ChatGPT与企业数字化转型

    ChatGPT作为当今一个现象级的爆款概念 它的出现 会与企业数字化碰撞出怎么样的花火 很多数字化转型中的企业 咨询师 也都把目光转向ChatGPT 以及ChatGPT背后的大模型 也许 ChatGPT会给数字化转型带来新一轮的发展 助推剂
  • .net 抽奖概率计算

    公司需要做一个大转盘抽奖的活动 其实最关键的地方就是奖品的概率计算了 不过前两天做的这个计算规则挺简单 设置每个奖品的概率 所有奖品概率之和 乘以 随机值 0 1之间的double类型小数 抽中值 然后循环判断每个奖品的概率 直到大于抽中值
  • RT-Thread内核启动流程

    一般了解一份代码大多从启动部分开始 同样这里也采用这种方式 先寻找启动的源头 RT Thread 支持多种平台和多种编译器 而 rtthread startup 函数是 RT Thread 规定的统一启动入口 一般执行顺序是 系统先从启动文
  • Git rebase -i 合并多次提交

    我们在开发项目的过程中可能提交了多次代码 但有时候需要合并多次commit 实现的效果如下 如果你需要合并多个commit就通过Git log看下查你要合并commit的ID 记住最早的commit ID 如 123abc git reba
  • 什么是MVVM,vue的MVVM原理

    1 Mvvm定义MVVM是Model View ViewModel的简写 即模型 视图 视图模型 模型 指的是后端传递的数据 视图 指的是所看到的页面 视图模型 mvvm模式的核心 它是连接view和model的桥梁 它有两个方向 一是将
  • [906]git设置忽略文件.gitignore

    在仓库目录下新建一个名为 gitignore的文件 因为是点开头 没有文件名 没办法直接在windows目录下直接创建 必须通过右键Git Bash 按照linux的方式来新建 gitignore文件 gitignore文件对其所在的目录及
  • KeyError错误

    KeyError错误出现时可能是检索不到这个键名 就我自己碰到的这个问题来说 是编码的原因 前因是用了一个别人写的读取标定参数的函数 def read calib file path taken from https github com
  • 用一个数组表示股票每天的价格,数组的第i个数表示股票在第i天的价格。 如果只允许进行一次交易,也就是说只允许买一支股票并卖掉,求最大的收益。

    用一个数组表示股票每天的价格 数组的第i个数表示股票在第i天的价格 如果只允许进行一次交易 也就是说只允许买一支股票并卖掉 求最大的收益 提示 从前向后遍历数组 记录当前出现过的最低价格 作为买入价格 并计算以当天价格出售的收益 作为可能的
  • Kati详解-Android10.0编译系统(五)

    Android取经之路 的源码都基于Android Q 10 0 进行分析 Android取经之路 系列文章 系统启动篇 Android系统架构Android是怎么启动的Android 10 0系统启动之init进程Android10 0系
  • GDI+ 中图像基本变换

    背景 图形变换是指对绘制的图形进行平移 旋转 伸缩等操作 由 Graphics 类提供对应的成员函数进行实现 平移变换 概述 平移变换将所绘制图形的坐标 x y 全部平移一个增量 dx dy 对应成员函数 TranslateTransfor
  • 有向图和有权图的邻接矩阵表示法

    矩阵有多少行多少列 取决于顶点的个数 有向的 称作弧 v2没有发出任何胡 v3发出一条到v4的 到其他顶点都没有弧 记为0 邻接矩阵的每一行记录了什么 记录了以当前的顶点出发的弧 即出度边 以当前顶点的为弧尾的值 每一列是什么呢 比如 v1
  • Android 中自定义ViewGroup实现流式布局的效果

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 自定义View与自定义ViewGroup的区别 自定义View 在没有现成的View 需要自己实现的时候 就使用自定义View 一
  • cin,cout和scanf,printf速度差距

    这道题的数据量大概在1e5左右 第1 2行为C C 输入输出加速后cin cout的耗费时间 第3行为不加速的 cin cout的时间 第4行为scanf printf的时间
  • 【51单片机实验笔记】声学篇(一) 蜂鸣器基本控制

    目录 前言 硬件介绍 PWM基础 蜂鸣器简介 原理图分析 蜂鸣器驱动电路 软件实现 蜂鸣器短鸣 蜂鸣器功能封装 总结 前言 蜂鸣器在生活中的应用实则相当广泛 通过本章你将学会制造噪声 笑 你将学会驱动它们 并发出响声 硬件介绍 PWM基础
  • 常用植被物候提取方法 (TIMESATE/R语言/Python)

    文章内容仅用于自己知识学习和分享 如有侵权 还请联系并删除 一 Background 这篇文章介绍的非常全面 物候的提取通常包含两个步骤 1 曲线的重构拟合 curve fitting 和 2 物候矩阵的提取 phenological me
  • linux系统运维工程师面试题集锦(一)

    1 常见Linux的发行版有哪些 并描述不同发行版之间的联系与区别 Fedora 是基于RHEL CentOS Scientific Linux 和Oracle Linux的社区版本 相比RHEL Fedora打包了显著的更多的软件包 SU
  • Vue使用debugger

    vue开发时会遇到需要调试代码的情况 使用debugger可以很方便的进行debug 1 build webpack dev conf js 将devtool cheap module eval source map 改为devtool e
  • datasource无法加载问题

    解决办法 将静态资源导入去掉 这里我是确保代码 jar包与yaml正确的情况下发现的 将pom文件中自己写的静态资源导入删掉
  • android 多线程异步下载文件,造轮子之 Android 多线程多任务断点续传下载器(设计篇)...

    前段时间面试 被问到 app 的自动更新是怎么做的 文件下载怎么实现的 用了多线程吗 是否支持断点续传 一下蒙逼 因为直接用第三方框架实现的文件下载 这些问题完全没想过 回来后觉得这里面其实涉及很多知识点 就打算自己动手封装一个支持多线程多
  • NLP(四十一)使用HuggingFace翻译模型的一次尝试

    本文将如何如何使用HuggingFace中的翻译模型 HuggingFace是NLP领域中响当当的团体 它在预训练模型方面作出了很多接触的工作 并开源了许多预训练模型和已经针对具体某个NLP人物训练好的直接可以使用的模型 本文将使用Hugg