使用Python构建一个简单的翻译应用程序,供初学者使用
在本教程中,我将向你展示如何使用Hugging Face Transformers和Gradio构建自己的语言翻译应用。
前提条件
要跟上本教程,你需要具备以下条件。
- 熟悉Python编程语言。
- 熟悉谷歌Colab或Jupyter笔记本。
- 熟悉[自然语言处理]和[PyTorch]。
在本教程中,我将使用[Google Colab]笔记本。
简介
你在谷歌等网站上的查询和谷歌助手等智能助手都有一个共同点--它们都使用自然语言处理(NLP)。
NLP是一种尖端的人工智能技术,它使机器有能力阅读、理解并从人类语言中推导出意义。NLP是谷歌助手听起来如此智能和谷歌查询得到智能响应的原因。
数据分析师和机器学习专家使用NLP来模仿人类的语言学和行为,以节省人力和时间。每天,你在手机的自动更正功能中不知不觉地使用NLP,以帮助你正确地拼写一个单词。
NLP对初学者来说可能很难理解。正因为如此,像Hugging Face这样易于使用的库已经被创建,以使NLP民主化。它是NLP领域的领先创业公司之一。本教程旨在使用它来建立一个简单的英法翻译应用程序。
Hugging Face是一个伟大的开源库,在自然语言处理(NLP)领域做着强大的工作。该库有一堆预训练的模型,你可以利用或微调。该库有许多模型,包括执行各种任务的BERT和GPT-2模型,但对于我们的目的,我们将利用预训练的语言管道。与其去训练一个巨大的语言模型,如具有15亿个参数的GPT-2,不如利用ML管道。
管道是使用模型进行推理的一个伟大而简单的方法。Hugging Face有许多管道,包括TokenClassificationPipeline 、ZeroShotClassificationPipeline 和Text2TextGenerationPipeline ,仅举几例。在我们的教程中,我们将使用TranslationPipeline 。这个管道已经被微调,以执行翻译任务。
Speech Brain和GoogleAI等技术公司使用拥抱式人脸模型来进行深度学习并创造语音技术。
另一方面,Gradio允许你围绕PyTorch模型快速创建可定制的UI组件。它允许你为你的ML模型创建界面。它可以帮助你使用网络界面快速测试你所创建的模型。在他们的官方网站上有免费的示例代码实现,演示你如何使用Gradio来进行数字分类、人脸分割和爆发预测。我们鼓励读者看一下文档中的例子,以便更好地理解。
安装依赖性
在安装PyTorch之前需要注意的一点是,Google Colab已经预装了PyTorch。如果你使用Colab,你可能需要忽略PyTorch的安装,跳到Hugging Face和Gradio的安装。
你的主要依赖将是PyTorch、Hugging Face Transformers和Gradio。让我们继续安装它们。
首先,让我们安装PyTorch。这可以在PyTorch的网站上获得。在网站上,找到Install 按钮并按下它。在安装页面,你会看到一个类似于下图的演练部分。

安装PyTorch的命令根据你的操作系统、选择的软件包(pip、conda、source)、语言和计算平台(CUDA、CPU或ROCm)等因素而有所不同。因此,请确保你选择你的偏好。它不一定要像我一样。我的如下所示。

为了在我的机器上安装PyTorch,我选择了长期支持(LTS 1.8.1)版本、Linux操作系统、pip 包、Python编程语言和CPU作为我选择的计算平台。如果你的机器有GPU支持,请相应地选择。
选择了这些选项之后,这就是你要运行的安装PyTorch的命令。
pip3 install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio==0.8.1 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html
现在让我们继续安装我们的其他依赖项,即 "抱脸 "变形金刚和Gradio。
pip install transformers ipywidgets gradio --upgrade
请注意,这个命令可以在本地机器的命令行界面中使用,也可以作为Colab笔记本中的一个单元运行。在Colab上安装时,你只需在
pip命令前加一个感叹号!。这样就可以了。!pip install transformers ipywidgets gradio --upgrade
我们的依赖项现在已经安装成功了!
transformers 将给你提供我们的翻译管道。 ,在你下载模型时提供进度条。 ,给你一个很好的方式来演示和互动你的ML模型。ipywidgets gradio
现在我们已经安装了我们的依赖项,下一步涉及将它们导入我们的模型。
为了导入它们,让我们发出以下命令。
import gradio as gr
from transformers import pipeline
现在已经完成了,让我们继续下载预训练的翻译模型。
下载预训练的翻译模型
Hugging Face有许多转化器管道。对于本教程,你将选择TranslationPipeline ,这是一个特定任务的管道,允许从一种语言翻译到另一种语言。
在文档中,他们指出,你可以使用pipeline() 方法和任务标识符translation_xx_to_yy 来进行翻译,xx 是你要翻译的语言,yy 是你要翻译的语言。在这个例子中,我们正在建立一个简单的翻译应用程序,可以从英语翻译到法语。
要做到这一点,让我们输入以下代码。
translation_pipeline = pipeline ('translation_en_to_fr')
让我们试一试。因此,例如,如果我想翻译 "我迫不及待地想看Money Heist "这句话,我们可以这样做。
translation_pipeline ('I cannot wait to watch Money Heist')
这将是输出结果。
[{'translation_text': 'Je ne peux attendre de regarder Money Heist'}]
很神奇吧?翻译管道正在将我们的文本从英语翻译成法语。
最后,我们将创建一个函数来包装所有这些,并在一个漂亮的用户界面上显示。我们将利用Gradio来完成这项任务。
使用Gradio构建用于交互的Web应用
网络应用程序(web app)是允许在网络浏览器上与用户互动的应用软件。通过互动,用户可以要求获得不同类型的信息,甚至可以操作/改变他们在屏幕上得到的信息。
你每天都在使用的流行网络应用程序的例子包括Twitter、YouTube、Facebook和Gmail。通过这些网络应用,用户可以改变和操纵信息。
对于我们的例子,网络应用允许用户通过一些文本并让其翻译。
def translate_transformers(from_text):
translated_results = translation_pipeline(from_text)
return translated_results[0]['translation_text']
我们已经创建了一个名为translate_transformers() 的函数。然后我们将文本传递给我们的翻译转化器管道。我们将翻译的结果存储在一个名为translated_results 的变量中。然后,该函数抓取我们列表中的第一个值[0],并返回翻译后的文本。
现在,所要做的就是将其封装在Gradio函数中。
我们通过以下方式创建Gradio接口。
interface = gr.Interface(fn=translate_transformers,
inputs=gr.inputs.Textbox(lines=2, placeholder='Text to translate'),
outputs='text')
只用一行代码就能创建这个界面,真是令人惊讶。我们传入了几个参数。fn ,在这里我们传入了我们的函数,也就是translate_transformers 。我们传入了一个input 类型的Textbox,有2行和一个占位符。你可以在你的项目中改变行数和占位符,没有任何问题。最后一个参数是输出类型。在我们的例子中,它是text 。
让我们继续并启动它。我们使用launch() 方法来实现这一目标。
interface.launch()
这个命令将运行我们的gradio应用程序。

你也可以使用发出launch() 指令后生成的外部链接来运行gradio应用程序。对于我的情况,这就是生成的链接https://18497.gradio.app 。

我们的代码通过使用Gradio进行翻译而成功运行。
总结
这个教程让我们了解了如何建立一个简单的翻译应用程序。我们安装了我们的依赖项,加载了我们的翻译模型,最后使用Gradio来构建我们的用户界面。这是一个很好的项目例子,你可以把它添加到你的简历或投资组合中。它将向雇主展示你的机器学习能力。你可以通过尝试翻译法语以外的语言来玩转代码。