Pytorch动手实现Transformer机器翻译

Pytorch动手实现Transformer机器翻译
- 前言
- 一、环境配置
- 1. torchtext
- Method1:
- Method2:
- 2. Spacy
- 以en包下载为例:
- 手动安装语言包到spacy
- 3. NLTK
- Method1:
- Method2:
- 二、运行结果
- 1. 模型训练(train)
- 2. 翻译推理(inference)
- 总结
- 参考网站
前言
书接上回,光从实现Transformer模型from scratch似乎有点僵硬,毕竟模型不跑起来或者不能应用起来就是一堆“死代码”,为了让读者从上一篇文章中Pytorch从零开始实现Transformer (from scratch)学习后能体验一下Transformer的强大之处,于是有了这篇博客。因为Transformer早先就是谷歌团队为了解决机器翻译等NLP问题而提出的,Transformer天然适用于NLP领域,因此使用Transformer进行机器翻译的应用是最直接的(其实就是本人也一直想玩一下NLP的项目)。
由于时间关系首先公布一下环境配置及运行结果。
一、环境配置
源项目为 github.com/SamLynnEvans/Transformer,但其中代码可能因为年代久远,运行会有各种问题,不久后我会公布我的项目源码。
接下来是两个比较特别的库,光是pip install后并没有完事,还需要额外安装里面对应的工具包。
1. torchtext
torchtext的安装是最为值得注意的一环!
Method1:
直接使用pip install torchtext安装
pip install torchtext
如果你的pytorch版本较低,此命令会自动更新pytorch并安装cpu版本,这时会卸载旧的pytorch,安装的新版本pytorch可能会不兼容。慎用!
Method2:
使用conda install -c pytorch torchtext安装
conda install -c pytorch torchtext
推荐尝试一下Method2,而本人的方法是直接在Anaconda虚拟环境中直接用Method1,因为是实验室电脑所以不想污染base基础环境就自建一个虚拟环境方便操作。
2. Spacy
spacy号称工业级Python自然语言处理(NLP)软件包,可以对自然语言文本做词性分析、命名实体识别、依赖关系刻画,以及词嵌入向量的计算和可视化等。
Spacy的安装没有什么要注意的,就直接pip install安装就好。
pip install spacy
而本文需要用到英语(en)和法语(fr)两个工具包,所以需要在Spacy额外下载。一种比较快的方法是直接从官网安装英语和法语的工具包,然后再手动pip install 到spacy里面,这种方法的优点就是速度更快,更容易控制。
给出下载en和fr语言包的网站:
https://github.com/explosion/spacy-models/releases/tag/en_core_web_sm-3.5.0
https://github.com/explosion/spacy-models/releases/tag/fr_core_news_sm-3.5.0
Tip:github网站可能需要科学上网才能更加流畅地加载出来。(本项目源码发布的时候会带有这些文件,读者如果需要复现请不用担心资源不足)
以en包下载为例:
进入网址https://github.com/explosion/spacy-models/releases/tag/en_core_web_sm-3.5.0

然后点击上图红框的download即可下载。
手动安装语言包到spacy
方法也很简单,到下载的语言包目录下进入Terminal终端小黑窗(windows下是cmd),输入pip install *******.tar.gz 安装即可。语言包会自动下载到spacy库中。
3. NLTK
如果读者的环境中没有nltk,请先:
pip install nltk
源代码这部分使用了nltk中的wordnet包,如果没有这个包也是需要下载的。
Method1:
可视化安装,随便进入一个python的控制台界面,输入
import nltk
nltk.download()
不出意外会出现如下弹出如下窗口:

然后如下图点击Corpora然后下拉滚动条找到wordnet并点击“download”。如果网络好的话会看到右下角蓝框处的红色进度条不断增长。

不过这个方法一般比较慢,由于网速不太能安装好。
Method2:
直接去官网找到zip包直接下载,从根源解决问题。
进入网址http://www.nltk.org/nltk_data/
“Ctrl+F”搜索“id: wordnet”(请注意冒号后有个空格),会出现好几个搜索结果,选择如下图所示这个wordnet进行下载:

如果下载时候文件显示10.3MB那就证明下载正确了!
然后将下载好的wordnet.zip放到读者电脑所在nltk_data/corpora目录下即可。如果不知道nltk_data在哪里,可以在python里输入如下命令就会出现所有nltk_data路径了。
import nltk
nltk.download("wordnet")

二、运行结果
1. 模型训练(train)
打开终端,输入命令即可训练Transformer用于英语翻译为法语的机器翻译任务。
python train.py -src_data data/english.txt -trg_data data/french.txt -src_lang en_core_web_sm -trg_lang fr_core_news_sm -epochs 10
即指定english.txt和french.txt语料(随项目代码提供),先训练个10epochs。原项目中用一张8GB显存的K100来跑,本文使用的是英伟达3060(显存12G),因此训练绰绰有余。10epochs一个小时内就能训练完吧。

2. 翻译推理(inference)
训练完模型之后加载所保存的目录,此处为weights,其实也是训练时指定好的路径了。
python translate.py -load_weights weights -src_lang en_core_web_sm -trg_lang fr_core_news_sm

红框为输入的英文,篮框为模型翻译出的法语。
尽管我们可能看不懂法语,但是可以将法语交给现成翻译器让其翻译成中文。
我是一名研究生。
你为什么喜欢读书科学?
这是我学了四年的学校。——“有道翻译”
大概看得出翻译的还算有模有样,可以翻译得出where后置定语从句,那证明Transformer对机器翻译方面是一个可行的模型。
总结
目前本博客所体现的是比较表层的一部分,旨在引发大家对Transformer等深度学习模型学习的兴趣(同时也是激发我自己对学习的动力)。学习完模型后,将自己实现的模型用来做出一个可运行的demo或者应用,不仅能加深记忆还能像连锁反应一样触发更多知识点的学习,提高知识面的广度和认知深度。
参考网站
https://github.com/SamLynnEvans/Transformer
【Pytorch】torchtext终极安装方法及常见问题
PYTHON -M SPACY DOWMLOAD EN失败
离线安装NLTK工具包
相关文章:
Pytorch动手实现Transformer机器翻译
Pytorch动手实现Transformer机器翻译前言一、环境配置1. torchtextMethod1:Method2:2. Spacy以en包下载为例:手动安装语言包到spacy3. NLTKMethod1:Method2:二、运行结果1. 模型训练(train)2. 翻…...
宝塔面板部署node+vue项目注意事项
宝塔面板部署nodevue项目注意事项 宝塔连接云服务器 如果服务器上没有安装宝塔面板,需要先安装,安装流程如下: 从宝塔官网主页进去,点击下载安装,然后点击在线安装 输入服务器IP和密码在服务器上安装宝塔面板 等待一…...
【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字 p205 -- Java Version
题目链接:https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/ 1. 题目介绍(39. 数组中出现次数超过一半的数字) 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可…...
fisco bcos用caliper0.2.0进行压力测试的安装配置
一、前期环境 1. 硬件 需要外网权限 2. 操作系统 版本要求:Ubuntu > 16.04, CentOS > 7, MacOS > 10.14 3. 基础软件 python 2.7,make,g,gcc,git sudo apt install python2.7 make g gcc git curl git confi…...
正在进行 | 用友企业数智化财务峰会落地广州 高能不断
3月28日,以「智能会计 价值财务」为主题的“2023企业数智化财务创新峰会”登陆广州。 此次用友企业数智化财务创新峰会,邀请了知名院校的专家学者、央国企等大型企业财务数智化领路人以及羊城权威媒体,近千人相约广州越秀国际会议中心,深度聚焦大型企业财务数智化创新应用…...
uniapp - APP云打包、蒲公英平台发布APP的步骤
一、uniapp 云打包 1、注册 dcloud 开发者 首先需要注册一个 dcloud 开发者的账号 dcloud开发者中心:登录 (dcloud.net.cn) 根据流程注册即可。 2、云打包(已安卓为例) 项目创建完成后,查看 dcloud 开发者中心,看是否…...
reposync命令详解--reposync同步aliyunyum库到本地
参考: reposync - 命令 - -桃枝夭夭- - 博客园 0. 简介 reposync 命令简单来说就是可以把指定外网源(repo id)的包同步到本地文件中 1. 安装 reposync 命令 [rootV10SP1-1 ~]# yum install -y dnf-plugins-core2. 常用选项以及参数 选项含义-c [fil…...
OCR之论文笔记TrOCR
文章目录TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models一. 简介二. TrOCR2.1. Encoder2.2 Decoder2.3 Model Initialiaztion2.4 Task Pipeline2.5 Pre-training2.6 Fine-tuning2.7 Data Augmentation三. 实验3.1 Data3.2 Settings3.2 Resul…...
雷电4模拟器安装xposed框架(2022年)
别问我都2202年了为什么还在用雷电4安卓7。我特么哪知道Xposed的相关资料这么难找啊,只能搜到一些老旧的资料,尝试在老旧的平台上实现了。 最初的Xposed框架现在已经停止更新了,只支持到安卓8。如果要在更高版本的安卓系统上使用Xposed得看看…...
微信小程序支付完整流程(前端)
微信小程序中,常见付款给商家的场景,下面列出企业小程序中,从0起步完整微信支付流程。 一,注册微信支付商户号(由上级或法人注册) 接入微信支付 - 微信商户平台 此商户号,需要由主管及更上级领导…...
设置鼠标右键打开方式,添加IDEA的打开方式
一、问题描述 已下载IDEA,但是右键打开之前保存的项目文件,无法显示以IDEA方式打开。 二、解决步骤 1. 打开注册表 winR键输入regedit 2、查找路径为计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell (我找了半天没看到Class…...
LAMP架构之zabbix监控(2):zabbix基础操作
目录 一、zabbix监控节点添加和删除 (1)手动添加 (2)自动添加 (3)按照条件批量添加 (4)使用api工具进行管理 二、针对应用的zabbix监控 一、zabbix监控节点添加和删除 实验说明&a…...
ShareSDK常见问题
QQ-分享报错901111,9001010等 由于QQ现在需要审核后才可以分享(之前分享不需要审核),所以此错误解决方法只需通过腾讯开放平台的审核即可,另外要检查注册好的应用的基本信息,包名、md5签名和Bundle id是不…...
[Spring]一文明白IOC容器和思想
✅作者简介:大家好,我是Philosophy7?让我们一起共同进步吧!🏆 📃个人主页:Philosophy7的csdn博客 🔥系列专栏: 数据结构与算法 👑哲学语录: 承认自己的无知,乃…...
程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…...
MATLAB | R2023a更新了哪些好玩的东西
R2023a来啦!!废话不多说看看新版本有啥有趣的玩意和好玩的特性叭!!把绘图放最前面叭,有图的内容看的人多。。 1 区域填充 可以使用xregion及yregion进行区域填充啦!! x -10:0.25:10; y x.^…...
Python Module — OpenAI ChatGPT API
目录 文章目录目录OpenAI Python SDKopenai.ChatCompletion 模块openai.ChatCompletion.create 函数OpenAI Python SDK 官方文档:https://platform.openai.com/docs/api-reference/introduction OpenAI Python SDK 用于开发与 OpenAI RESTful API 进行交互的客户端…...
Docker学习记录
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录阅读前请看一下:我是一…...
Linux-VIM使用
文章目录前言VIM使用1、切换模式2、跳转(1) 跳转到指定行(2) 跳转到首行(3) 跳转到末行3、自动格式化程序4. 大括号对应5. 删除(1)删除一个单词(2)删除光标位置至行尾(3)删除光标位置至行首(4&a…...
Windows安全中心内存完整性无法打开问题的处理方法
Windows11安全中心内存完整性无法打开 今天电脑使用过程中突然看到系统桌面右下角任务栏中 windows安全中心图标出现了警告信息,如下图红框所示: 点击该图标进入windows安全中心的 安全性概览 界面,如下图: 在该界面可以看到出现安…...
别再只会看原理图了!用Multisim仿真带你深入理解运放的“虚短虚断”与反馈
用Multisim仿真破解运放"虚短虚断"的底层逻辑 在电子电路设计中,运算放大器就像一位沉默的魔术师,用"虚短"和"虚断"两个基本概念演绎着各种精妙的信号处理戏法。但很多工程师在学习阶段只是机械记忆这两个术语,…...
DLSS Swapper智能工具:游戏性能优化与版本管理完全指南
DLSS Swapper智能工具:游戏性能优化与版本管理完全指南 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为游戏玩家设计的深度学习超级采样(DLSS)版本管理工具,能够自动扫描…...
Intel XE核显PyTorch环境搭建避坑指南
1. 为什么选择Intel XE核显跑PyTorch? 最近很多小伙伴都在问,用Intel XE核显跑PyTorch到底靠不靠谱?作为一个在AI领域摸爬滚打多年的老司机,我可以很负责任地告诉你:完全可行!特别是对于预算有限的学生党&a…...
Mermaid Live Editor:代码驱动图表设计的终极解决方案
Mermaid Live Editor:代码驱动图表设计的终极解决方案 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor…...
OCRmyPDF技术解构:3大创新点与制造业/法律服务效能优化实践
OCRmyPDF技术解构:3大创新点与制造业/法律服务效能优化实践 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF 一、技术内核&…...
操作系统-lazy allocation
只有真正需要使用这些页的时候,才进行物理内存页的实际分配sbrk()在xv6操作系统中,进程的用户内存布局由代码段(text)、数据段(data)、堆区(heap)和栈区(stack)组成。sbrk()主要修改的是堆区的大小,堆在xv6中由低地址向高地址拓展。当程序调用sbrk(n)时,操作系统内核…...
马西奎《电磁场与电磁波》学习记录-第 2 章学前准备-坐标系的深入 + 微分元(dl、dS、dV)
一、正交坐标系的一般概念1. 什么是正交曲线坐标系三组坐标面互相垂直正交单位矢量处处正交:⊥⊥直角、圆柱、球坐标都属于这一类。2. 坐标变量与拉梅系数(度量系数)对一般正交曲线坐标 (,,):坐标面:常数、…...
别再死记硬背了!用游戏地图和社交网络,5分钟搞懂BFS和DFS(附C++代码)
游戏化学习:用社交网络和迷宫探险理解BFS与DFS 想象一下你正在玩一款开放世界游戏,地图被战争迷雾笼罩。每次只能看到周围一小块区域,如何高效探索整个地图?或者回忆微信里"朋友的朋友"推荐功能,系统如何找到…...
Qwen3.5-9B实战案例:用128K上下文做法律合同比对与风险提示
Qwen3.5-9B实战案例:用128K上下文做法律合同比对与风险提示 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,在专业领域的逻辑推理和长文本处理方面表现出色。本文将重点展示如何利用其128K tokens的超长上下文能力,实现法律合…...
WooCommerce 高级报告与统计 – 订单、产品与客户报告 WordPress插件SQL注入[ CVE-2026-24993 ]
基本信息 项目详情漏洞编号CVE-2026-24993插件名称Advanced Reporting & Statistics for WooCommerce受影响版本< 4.1.3补丁版本4.1.4CVSS 3.17.5(高危)漏洞类型SQL注入(SQL Injection)利用难度低(无需认证&am…...
