使用Transformers库中可用的最新赫尔辛基NLP模型来创建标准化的机器翻译服务
在企业环境中需要机器翻译 。至关重要的是,跨国公司必须能够与世界各地的人们共享多种语言的文档,便笺,电子邮件和其他文本 。
可以说,更为重要的是需要在全球化的同时使信息民主化 。无论您使用哪种口头语言,您都应该使用与主要口语(例如英语)相同的开源出版物,医疗保健信息,工具和知识 。
文章插图
> I made this in powerpoint. It's horrible.
幸运的是,机器翻译已经存在了一段时间-我们中的许多人已经使用google翻译来在线确认某物的内容,或者只是听起来聪明而世俗 。如果您有需要扩展的翻译需求,Azure,AWS和GCP都提供消耗性API,每百万个字符仅需10美元,即可支持数千种语言对(一对语言由源语言和目标语言组成) 。
在开源空间中,已经进行了无数种跨多种语言的机器学习工作,并且人们早就能够训练自己的机器翻译模型 。但是,大多数方法在建模方法和支持的语言数量方面似乎是完全不同的(在我自己的幼稚评估中) 。
最近,Huggingface从赫尔辛基大学发布了1,000多种预训练的语言模型 。对于希望创建自己的AWS或Google翻译API的人来说,这从未如此简单 。所以,我想我会利用别人的辛勤工作 。这相当于"让我们在Flask API和Docker镜像中包装机器学习",但无论如何,它都很有趣 。我们开始做吧 。
用变Transformer进行机器翻译Huggingface在将SOTA(最先进的)模型用于简单的Python API中以实现像我这样的复制+粘贴编码器方面所做的出色工作 。要在本地翻译文本,您只需要点安装变压器,然后使用以下来自变压器文档的代码段即可 。
这将下载所需的模型并转换源文本->目标文本 。有了这种格式的大量支持语言,将其抛入dockerized flask应用程序并每天调用它是非常容易的,但是我们确实有很多额外的工作要做……
随时关注git repo 。
下载模型当您初始化上述模型时,如果本地没有所需的文件,则转换器将下载所需的文件 。这对于本地使用来说是很棒的,但是在使用Docker容器时却不是 。由于容器的存储是短暂的,因此每次我们退出容器时,我们都会丢失所有模型,而下次需要重新下载所有模型 。
为了避免这种情况,我们可以单独处理模型下载并将模型作为卷安装 。这也使我们可以更好地控制我们希望我们的服务从一开始就支持的语言 。Huggingface在S3上托管了所有必要的文件,因此我们可以对此进行标准化…
然后创建一个简单的命令行实用程序来下载它们:
酷 。现在,我们可以通过一个命令下载所需的模型 。以日语->英语为例 。
python download_models.py –source ja –target zh
默认情况下,这会将它们下载到名为data的目录中,因此只需检查以确保存在 。Python中的动态语言翻译【使用Transformer构建自己的机器翻译服务】现在,我们有了更好的方法来管理我们支持的语言,让我们先解决问题的实质,然后再使用类和相关方法来管理我们的翻译 。
我们在这里需要几个功能:
· 翻译给定源语言和目标语言(duh)的文本
· 将我们没有的模型加载和管理到内存中(我用一个简单的字典)
· 获得支持的语言(我们为此应用程序下载了哪些语言?)
由于变压器对用户友好,因此几乎无需花费任何时间就可以将此功能包装到轻量级类中供我们使用 。
此类已使用我们用于保存模型并自行处理其余部分的路径进行了初始化 。如果我们收到翻译请求,但内存中没有该模型,则会调用load_models将其加载到self.models字典中 。这将检查我们的数据目录以查看是否具有该模型,并返回一条消息以告知我们是否这样做 。
使其成为API现在我们需要做的就是将其包装在flask中,以便可以对其进行HTTP调用 。
要使用它,只需运行python App.py,然后调用该服务即可 。要检查其是否正常运行,您可以卷曲localhost:5000或使用更复杂的工具(例如Postman) 。我在这里使用Flask服务器,但您希望生产Web服务器在实际的任何地方都可以使用它 。
将其包装在Docker映像中现在,我们的应用程序可以使用基本的Python,我们希望使其能够与Docker或docker-compose一起使用,以便我们可以根据需要扩展和扩展它 。我们为此使用的实际Dockerfile非常简单 。我们只需要确保在连接了卷的情况下运行该服务,以便该服务已经可以访问数据 。
推荐阅读
- win10数字小键盘开机不亮灯的原因是什么?
- 茶叶脱氧保鲜剂的使用,茶叶保鲜绝对好用的三招
- 淘宝极速推怎么使用 淘宝极速推展现在哪里呢?
- 淘宝上的极速推广有用吗 淘宝极速推怎么使用
- 淘宝的超级店长怎么使用 超级店长怎么用
- 用Python从头开始实现简单遗传算法
- 极速推怎么更换投放中的宝贝 淘宝极速推怎么使用
- 茶具盖碗的使用方法,茶具的奇思妙想
- 茶具怎么使用,新紫砂茶具怎么使用
- 使用Shell函数实现多级菜单系统安装