构建语言翻译应用程序
概述
本指南将引导您完成构建和运行语言翻译应用程序的过程。您将使用 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
这行从
googletrans
中导入Translator
类。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()
这将创建一个 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 镜像,因为所有与应用程序相关的文件都包含在特定目录中。将 requirements 文件复制到镜像中。
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
或--tty
: 此选项分配一个伪终端,本质上模拟一个终端,例如命令提示符或 shell。它可以让您与容器中的应用程序进行交互。
basic-nlp
: 此选项指定要用于创建容器的 Docker 镜像的名称。在本例中,它是由docker build
命令创建的名为basic-nlp
的镜像。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 设置环境并运行应用程序。
相关信息
下一步
探索更多 自然语言处理指南。