构建一个语言翻译应用程序
概述
本指南将引导您构建和运行语言翻译应用程序。您将使用 Python 和 Googletrans 构建应用程序,然后设置环境并使用 Docker 运行应用程序。
该应用程序演示了 Googletrans 库进行语言翻译的简单但实用的用法,展示了基本的 Python 和 Docker 概念。 Googletrans 是一个免费且无限制的 Python 库,它实现了 Google Translate API。它使用 Google Translate Ajax API 来调用检测和翻译等方法。
先决条件
- 您已安装最新版本的 Docker Desktop。 Docker 定期添加新功能,本指南的某些部分可能仅适用于最新版本的 Docker Desktop。
- 您有一个 Git 客户端。本节中的示例使用基于命令行的 Git 客户端,但您可以使用任何客户端。
获取示例应用程序
打开终端,然后使用以下命令克隆示例应用程序的存储库。
$ git clone https://github.com/harsh4870/Docker-NLP.git
验证您是否克隆了存储库。
您应该在目录中看到以下文件
Docker-NLP
。01_sentiment_analysis.py 02_name_entity_recognition.py 03_text_classification.py 04_text_summarization.py 05_language_translation.py entrypoint.sh requirements.txt Dockerfile README.md
探索应用程序代码
应用程序的源代码位于该
Docker-NLP/05_language_translation.py
文件中。在文本或代码编辑器中打开05_language_translation.py
,按以下步骤探索其内容。
导入所需的库。
from googletrans import Translator
该行
Translator
从 导入类googletrans
。 Googletrans 是一个 Python 库,它提供了 Google Translate 的 AJAX API 的接口。指定主要执行块。
if __name__ == "__main__":
这个 Python 习惯用法确保仅当该脚本是主程序时以下代码块才运行。它提供了灵活性,允许脚本既作为独立程序又作为导入模块运行。
创建无限循环以进行连续输入。
while True: input_text = input("Enter the text for translation (type 'exit' to end): ") if input_text.lower() == 'exit': print("Exiting...") break
这里建立了一个无限循环,不断提示你输入文字,保证交互性。当您键入 时,循环就会中断
exit
,从而使您能够有效地控制应用程序流程。创建翻译器的实例。
translator = Translator()
这将创建一个执行翻译的 Translator 类的实例。
翻译文字。
translated_text = translator.translate(input_text, dest='fr').text
此处,
translator.translate
根据用户输入调用该方法。该dest='fr'
参数指定翻译的目标语言是法语。该.text
属性获取翻译后的字符串。有关可用语言代码的更多详细信息,请参阅 Googletrans 文档。打印原文和翻译文本。
print(f"Original Text: {input_text}") print(f"Translated Text: {translated_text}")
这两行打印用户输入的原始文本和翻译后的文本。
创造
requirements.txt
。示例应用程序已包含requirements.txt
用于指定应用程序导入的必要模块的文件。requirements.txt
在代码或文本编辑器中打开以探索其内容。... # 05 language_translation googletrans==4.0.0-rc1
仅
googletrans
语言翻译应用程序需要。
探索应用环境
您将使用 Docker 在容器中运行应用程序。 Docker 允许您对应用程序进行容器化,为运行它提供一致且隔离的环境。这意味着应用程序将在其 Docker 容器内按预期运行,无论底层系统有何差异。
要在容器中运行应用程序,需要 Dockerfile。 Dockerfile 是一个文本文档,其中包含您在命令行上调用以组装映像的所有命令。镜像是一个只读模板,包含创建 Docker 容器的说明。
示例应用程序已包含一个Dockerfile
.Dockerfile
在代码或文本编辑器中打开以浏览其内容。
以下步骤解释了 的每个部分Dockerfile
。有关更多详细信息,请参阅
Dockerfile 参考。
指定基础图像。
FROM python:3.8-slim
该命令为构建奠定了基础。
python:3.8-slim
是 Python 3.8 映像的轻量级版本,针对大小和速度进行了优化。使用这个纤薄的镜像可以减少 Docker 镜像的整体大小,从而加快下载速度并减少安全漏洞的表面积。这对于基于 Python 的应用程序特别有用,您可能不需要完整的标准 Python 映像。设置工作目录。
WORKDIR /app
WORKDIR
设置 Docker 映像中的当前工作目录。通过将其设置为/app
,可以确保 Dockerfile 中的所有后续命令(例如COPY
和RUN
)都在此目录中执行。这也有助于组织 Docker 映像,因为所有与应用程序相关的文件都包含在特定目录中。将需求文件复制到映像中。
COPY requirements.txt /app
该
COPY
命令将requirements.txt
文件从本地计算机传输到 Docker 映像中。该文件列出了应用程序所需的所有 Python 依赖项。将其复制到容器中可以让下一个命令 (RUN pip install
) 在映像环境中安装这些依赖项。在映像中安装 Python 依赖项。
RUN pip install --no-cache-dir -r requirements.txt
此行使用
pip
Python 的软件包安装程序来安装 中列出的软件包requirements.txt
。该--no-cache-dir
选项禁用缓存,从而通过不存储不必要的缓存数据来减小 Docker 映像的大小。运行附加命令。
RUN python -m spacy download en_core_web_sm
此步骤特定于需要 spaCy 库的 NLP 应用程序。它下载
en_core_web_sm
模型,这是 spaCy 的小型英语模型。虽然此应用程序不需要它,但包含它是为了与可能使用此 Dockerfile 的其他 NLP 应用程序兼容。将应用程序代码复制到图像中。
COPY *.py /app COPY entrypoint.sh /app
这些命令将您的 Python 脚本和
entrypoint.sh
脚本复制到图像的/app
目录中。这很重要,因为容器需要这些脚本来运行应用程序。该entrypoint.sh
脚本特别重要,因为它指示应用程序如何在容器内启动。设置
entrypoint.sh
脚本的权限。RUN chmod +x /app/entrypoint.sh
此命令修改 的文件权限
entrypoint.sh
,使其可执行。此步骤是确保 Docker 容器可以运行此脚本来启动应用程序所必需的。设置入口点。
ENTRYPOINT ["/app/entrypoint.sh"]
该
ENTRYPOINT
指令将容器配置entrypoint.sh
为作为默认可执行文件运行。这意味着当容器启动时,它会自动执行脚本。您可以
entrypoint.sh
通过在代码或文本编辑器中打开脚本来探索该脚本。由于示例包含多个应用程序,因此该脚本允许您指定在容器启动时运行哪个应用程序。
运行应用程序
要使用 Docker 运行应用程序:
建立形象。
在终端中,在所在目录中运行以下命令
Dockerfile
。$ docker build -t basic-nlp .
以下是该命令的细分:
docker build
:这是用于从 Dockerfile 和上下文构建 Docker 映像的主要命令。上下文通常是指定位置的一组文件,通常是包含 Dockerfile 的目录。-t basic-nlp
:这是一个用于标记图像的选项。旗帜-t
代表标签。它为图像分配一个名称,在本例中为basic-nlp
.标签是稍后引用图像的便捷方法,尤其是在将它们推送到注册表或运行容器时。.
:这是命令的最后一部分,指定构建上下文。句点 (.
) 表示当前目录。 Docker 将在此目录中查找 Dockerfile。构建上下文(在本例中为当前目录)被发送到 Docker 守护进程以启用构建。它包括指定目录中的所有文件和子目录。
有关更多详细信息,请参阅 docker build CLI 参考。
Docker 在构建镜像时会向控制台输出多个日志。您将看到它下载并安装依赖项。根据您的网络连接,这可能需要几分钟的时间。 Docker 确实具有缓存功能,因此后续构建可以更快。完成后控制台将返回到提示符。
将图像作为容器运行。
在终端中,运行以下命令。
$ docker run -it basic-nlp 05_language_translation.py
以下是该命令的细分:
docker run
:这是用于从 Docker 映像运行新容器的主要命令。-it
:这是两个选项的组合:-i
或--interactive
:即使未连接,这也会使标准输入 (STDIN) 保持打开状态。它让容器保持在前台运行并具有交互性。-t
or--tty
:这会分配一个伪 TTY,本质上是模拟终端,如命令提示符或 shell。它可以让您与容器内的应用程序进行交互。
basic-nlp
:指定用于创建容器的 Docker 映像的名称。在本例中,它是basic-nlp
您使用命令创建的名为的图像docker build
。05_language_translation.py
:这是您要在 Docker 容器内运行的脚本。它被传递给entrypoint.sh
脚本,脚本在容器启动时运行它。
有关更多详细信息,请参阅 docker run CLI 参考。
笔记
对于 Windows 用户,运行容器时可能会出现错误。验证行结尾是
entrypoint.sh
(LF
)\n
而不是CRLF
(\r\n
),然后重建图像。有关更多详细信息,请参阅 避免意外的语法错误,对容器中的文件使用 Unix 样式行结尾。容器启动后,您将在控制台中看到以下内容。
Enter the text for translation (type 'exit' to end):
测试应用程序。
输入一些文本以获取文本摘要。
Enter the text for translation (type 'exit' to end): Hello, how are you doing? Original Text: Hello, how are you doing? Translated Text: Bonjour comment allez-vous?
概括
在本指南中,您学习了如何构建和运行语言翻译应用程序。您学习了如何使用 Python 和 Googletrans 构建应用程序,然后设置环境并使用 Docker 运行应用程序。
相关信息:
下一步
探索更多 自然语言处理指南。