使用LLMs和Hugging Face构建您自己的翻译器

使用LLMs和Hugging Face构建翻译器

简介

语言障碍可能会阻碍全球交流,但是人工智能和自然语言处理提供了解决方案。基于大量文本数据训练的语言模型(LLMs)具有深入的语言理解能力,能够实现不同语言之间的无缝翻译。LLMs超越了传统的基于规则的方法,提高了准确性和质量。本文将介绍如何使用LLMs和Hugging Face构建一个翻译器,Hugging Face是一个著名的自然语言处理平台。

从库安装到用户友好的Web应用,您将学习如何创建一个翻译系统。拥抱LLMs为有效的跨语言交流打开了无限的机会,弥合了我们相互联系的世界中的差距。

学习目标

通过本文,您将能够:

  • 了解如何导入和使用Hugging Face transformers和OpenAI Models执行任务。
  • 能够根据用户需求构建您自己的翻译器。

本文是作为数据科学博文马拉松的一部分发表的。

了解翻译器及其重要性

翻译器是将文本从一种语言转换为另一种语言并保留其含义和上下文的工具或系统。它们帮助我们弥合说不同语言的人之间的鸿沟,在全球范围内实现有效的沟通。

翻译器在各个领域的重要性是显而易见的,包括商业、旅游、教育和外交。无论是翻译文件、网站还是对话,翻译器促进了文化交流和增进了理解。

最近我在一次旅行中遇到了同样的问题,我不懂他们的语言,他们也不懂我的语言,但最后我通过谷歌翻译解决了这个问题。(哈哈)

OpenAI和Hugging Face概述

无需介绍OpenAI,它是一个以人工智能为重点的研究组织。他们创建了像GPT系列和Language Models API这样的语言模型。这些模型改变了翻译和其他自然语言处理工作的方式。

还有另一个名为Hugging Face的平台,它提供了各种自然语言处理模型和工具。对于翻译等工作,他们提供了预训练模型、微调选项和简单的流水线。Hugging Face已成为自然语言处理开发人员和研究人员的首选来源。

使用LLMs进行翻译的优势

语言模型(例如OpenAI的GPT和Hugging Face的T5)已经彻底改变了翻译领域。以下是使用LLMs进行翻译的一些优势:

  • 上下文理解:LLMs经过大量的文本数据训练,能够捕捉微妙的含义和上下文。
  • 提高准确性:与传统基于规则的方法相比,LLMs显著提高了翻译质量。
  • 多语言支持:LLMs可以处理多种语言之间的翻译,使其具有多功能性和适应性。
  • 持续学习:LLMs可以通过新数据进行微调和更新,不断提高翻译质量。

现在,让我们深入了解使用LLMs和Hugging Face构建翻译器的逐步过程。

构建翻译器

安装所需的库

要开始,我们首先需要安装执行任务所需的必要库。

打开您首选的Python环境(我是在base Env中进行的)。您可以通过运行python -m venv “env name”来创建一个新的Env。我们将安装transformers和datasets,从Hugging Face加载。您可以在jupyter笔记本或终端中运行这些命令。

%pip install sacremoses==0.0.53
%pip install datasets
%pip install transformers
%pip install torch torchvision torchaudio
%pip install "transformers[sentencepiece]"

使用Hugging Face设置T5-Small模型

如前所述,我们将在项目中使用Hugging Face模型。具体来说,我们将使用T5-Small模型进行文本翻译。尽管Hugging Face的Translator模型中提供了其他模型,但我们将重点关注T5-Small模型。要设置它,请使用以下代码:

在设置T5-Small之前,我们导入一些已安装的库。

# 导入库

from datasets import load_dataset
from transformers import pipeline

我们将模型保存在缓存目录中,因此无需重复下载。

# 创建T5-small模型的管道并将其保存到cache_dir中

t5_small_pipeline = pipeline(
    task="text2text-generation",
    model="t5-small",
    max_length=50,
    model_kwargs={"cache_dir": '/Users/tarakram/Documents/Translate/t5_small' },
)

使用T5-Small进行文本翻译

现在,让我们使用T5-Small模型翻译一些文本:

注意:T5-Small模型的一个缺点是它不支持所有语言。然而,在本指南中,我将演示如何在我们的项目中使用翻译模型的过程。

# 英语到罗马尼亚语
t5_small_pipeline(
    "translate English to Romanian : Hey How are you ?"
)

# 英语到西班牙语

t5_small_pipeline(
    "translate English to Spanish: Hey How are you ?"
)

# 由于我们知道该模型不支持许多语言,它仅限于
# 少数语言

t5_small_pipeline将为指定目标语言中的给定文本生成翻译。

使用OpenAI的LLMs增强翻译

尽管T5-Small模型涵盖了多种语言,但我们可以通过利用OpenAI的LLMs来提高翻译质量。为此,我们需要OpenAI的API密钥。一旦您获得了密钥,可以使用以下代码进行操作:

# 导入库
import openai
from secret_key import openapi_key
import os
# 在此处输入您的openAI密钥
os.environ['OPENAI_API_KEY'] = openapi_key

# 创建一个函数,该函数获取文本并询问源语言和目标语言

def translate_text(text, source_language, target_language):
    
    response = openai.Completion.create(
        engine='text-davinci-002',
        prompt=f"Translate the following text from {source_language} to {target_language}:\n{text}",
        max_tokens=100,
        n=1,
        stop=None,
        temperature=0.2,
        top_p=1.0,
        frequency_penalty=0.0,
        presence_penalty=0.0,
    )

    translation = response.choices[0].text.strip().split("\n")[0]
    return translation

# 获取用户输入
text = input("输入要翻译的文本:")
source_language = input("输入源语言:")
target_language = input("输入目标语言:")

translation = translate_text(text, source_language, target_language)

# 打印翻译后的文本

print(f'翻译后的文本:{translation}')

提供的代码使用OpenAI的LLMs设置了一个翻译函数。它向OpenAI API发送翻译请求并检索翻译后的文本。

使用Streamlit创建一个翻译器Web应用程序

为了使我们的翻译可通过用户友好的界面访问,我们可以使用Streamlit创建一个翻译器Web应用程序。以下是一个示例代码片段:

# 导入库
import streamlit as st
import os
import openai
from secret_key import openapi_key
# 在此处输入您的openAI密钥
os.environ['OPENAI_API_KEY'] = openapi_key

# 定义可用语言列表
languages = [
    "英语",
    "印地语",
    "法语",
    "泰卢固语",
    "阿尔巴尼亚语",
    "孟加拉语",
    "博杰普尔语",
    # 根据需要添加更多语言
]

# 创建一个函数。

def translate_text(text, source_language, target_language):
    response = openai.Completion.create(
        engine='text-davinci-002',
        prompt=f"Translate the following text from {source_language} 
                to {target_language}:\n{text}",
        max_tokens=100,
        n=1,
        stop=None,
        temperature=0,
        top_p=1.0,
        frequency_penalty=0.0,
        presence_penalty=0.0
    )

    translation = response.choices[0].text.strip().split("\n")[0]
    return translation

# Streamlit web应用
def main():
    st.title("翻译我的文本")

    # 输入文本
    text = st.text_area("输入要翻译的文本")

    # 源语言下拉框选择语言
    source_language = st.selectbox("选择源语言", languages)

    # 目标语言下拉框选择语言
    target_language = st.selectbox("选择目标语言", languages)

    # 翻译按钮进行翻译
    if st.button("翻译"):
        translation = translate_text(text, source_language, target_language)
        st.markdown(f'<p style="color: blue; font-size: 25px;"> 
                    {translation}</p>', unsafe_allow_html=True)

if __name__ == '__main__':
    main()

此代码利用Streamlit库创建了一个Web应用程序。用户可以输入要翻译的文本,选择源语言和目标语言,并点击“翻译”按钮来获取翻译结果。以下是一些示例输出,以便熟悉。

翻译在许多方面都有用途;以下是一些翻译应用在现实世界中的成功案例:

  • Google Translate是一个广泛使用的翻译服务,利用LLMs提供准确的跨多种语言的翻译。
  • DeepL Translator以其高质量的翻译而闻名,并依赖LLMs实现准确和自然的翻译结果。
  • Facebook的翻译系统利用LLMs促进平台上不同语言之间的无缝沟通。
  • 自动语音翻译系统利用LLMs实现实时口语翻译,使国际会议和电话会议受益。

结论

本文总结了使用Hugging Face和OpenAI LLMs创建翻译器的步骤。它强调了翻译器在现代世界的价值,并强调它们在打破语言障碍和促进高效全球沟通方面的好处。现在,您可以使用LLMs和Hugging Face等平台开发自己的翻译系统。

要点

  • 语言模型,如OpenAI的GPT-3或4和Hugging Face的T5,已经改变了翻译领域;它们提供上下文理解、提高准确性、多语言支持以及根据上下文不断学习和适应的能力。
  • 通过利用Hugging Face,您可以轻松访问预训练模型,针对特定任务进行微调,并利用各种NLP任务的即用型管道,包括翻译。
  • 通过利用LLMs和构建翻译器,我们可以促进全球理解,促进跨文化交流,并在各个领域促进协作和交流。

这是项目链接 – GitHub

您可以通过LinkedIn与我联系。

常见问题

本文中显示的媒体不归Analytics Vidhya所有,仅由作者自行决定使用。