建置語言翻譯應用程式
概觀
本指南將引導您建置和執行語言翻譯應用程式。您將使用 Python 和 Googletrans 建置應用程式,然後設定環境並使用 Docker 執行應用程式。
該應用程式示範了 Googletrans 函式庫在語言翻譯方面的簡單但實用的用法,展示了基本的 Python 和 Docker 概念。Googletrans 是一個免費且無限制的 Python 函式庫,它實作了 Google 翻譯 API。它使用 Google 翻譯 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 翻譯 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 映像的輕量級版本,針對大小和速度進行了最佳化。使用此 slim 映像可以減少 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
此行使用 Python 的套件安裝程式 `pip` 來安裝 `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
。標記是一種方便日後參考映像檔的方式,尤其是在將映像檔推送至 registry 或執行容器時。.
:這是指令的最後一部分,指定建置上下文。句點 (.
) 表示目前目錄。Docker 將會在此目錄中尋找 Dockerfile。建置上下文(在本例中為目前目錄)會被發送到 Docker daemon 以啟用建置。它包含指定目錄中的所有檔案和子目錄。
更多詳細資訊,請參閱 docker build CLI 參考。
Docker 在建置映像檔時會在您的終端機輸出多個日誌。您會看到它下載並安裝相依套件。根據您的網路連線速度,這可能需要幾分鐘的時間。Docker 具有快取功能,因此後續的建置速度會更快。完成後,終端機將會返回提示符號。
將映像檔作為容器執行。
在終端機中,執行以下指令。
$ docker run -it basic-nlp 05_language_translation.py
以下是指令的分解說明
docker run
:這是用於從 Docker 映像檔執行新容器的主要指令。-it
:這是兩個選項的組合-i
或--interactive
:即使未附加,也會保持標準輸入 (STDIN) 開啟。它允許容器在前台保持執行並進行互動。-t
或--tty
:這會配置一個虛擬終端機 (pseudo-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 執行應用程式。
相關資訊