構建語言翻譯應用程式
概述
本指南將引導您完成構建和執行語言翻譯應用程式的過程。您將使用 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 設定環境並執行應用程式。
相關資訊
下一步
探索更多 自然語言處理指南。