建置情緒分析應用程式
概觀
在本指南中,您將學習如何建置和執行情緒分析應用程式。您將使用 Python 和自然語言工具包 (NLTK) 建置應用程式,然後設定環境並使用 Docker 執行應用程式。
應用程式使用 NLTK 的 SentimentIntensityAnalyzer 分析使用者輸入文字的情緒,並輸出情緒是正面、負面還是中性。
先決條件
- 您已安裝最新版本的 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/01_sentiment_analysis.py
檔案中。在文字或程式碼編輯器中開啟 01_sentiment_analysis.py
以在下列步驟中瀏覽其內容。
匯入必要的程式庫。
import nltk from nltk.sentiment import SentimentIntensityAnalyzer import ssl
nltk
:這是用於在 Python 中處理人類語言資料的自然語言工具包程式庫。SentimentIntensityAnalyzer
:這是 NLTK 中用於判斷一段文字的情緒的特定工具。ssl
:此模組提供對用於安全網路連線的傳輸層安全性(加密)函數的存取。
處理 SSL 憑證驗證。
try: _create_unverified_https_context = ssl._create_unverified_context except AttributeError: pass else: ssl._create_default_https_context = _create_unverified_https_context
此區塊是針對某些環境的因應措施,在這些環境中,由於 SSL 憑證驗證問題,透過 NLTK 下載資料可能會失敗。它告訴 Python 忽略 HTTPS 請求的 SSL 憑證驗證。
下載 NLTK 資源。
nltk.download('vader_lexicon') nltk.download('punkt')
vader_lexicon
:這是SentimentIntensityAnalyzer
用於情緒分析的詞彙表。punkt
:NLTK 使用它來標記句子。這是SentimentIntensityAnalyzer
正常運作所必需的。
建立情緒分析函數。
def perform_semantic_analysis(text): sid = SentimentIntensityAnalyzer() sentiment_score = sid.polarity_scores(text) if sentiment_score['compound'] >= 0.05: return "Positive" elif sentiment_score['compound'] <= -0.05: return "Negative" else: return "Neutral"
SentimentIntensityAnalyzer()
建立分析器的實例。polarity_scores(text)
產生輸入文字的情緒分數。
該函數根據複合分數返回**正面**、**負面**或**中性**。
建立主迴圈。
if __name__ == "__main__": while True: input_text = input("Enter the text for semantic analysis (type 'exit' to end): ") if input_text.lower() == 'exit': print("Exiting...") break result = perform_semantic_analysis(input_text) print(f"Sentiment: {result}")
指令碼的這一部分執行一個無限迴圈以接受使用者輸入進行分析。如果使用者輸入
exit
,程式將終止。否則,它會印出所提供文字的情緒。建立
requirements.txt
。範例應用程式已包含
requirements.txt
檔案,用於指定應用程式匯入所需的套件。在程式碼或文字編輯器中開啟requirements.txt
以瀏覽其內容。# 01 sentiment_analysis nltk==3.6.5 ...
情緒分析應用程式只需要
nltk
套件。
探索應用程式環境
您將使用 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
此行使用
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
。標籤是一種方便日後參考映像檔的方式,尤其是在將映像檔推送至 registry 或運行容器時。.
:這是指令的最後一部分,指定建置上下文。句點 (.
) 表示目前目錄。Docker 將會在此目錄中尋找 Dockerfile。建置上下文(在本例中為目前目錄)會被發送到 Docker daemon 以啟用建置。它包含指定目錄中的所有檔案和子目錄。
Docker 在建置映像檔時會在您的終端機輸出多個日誌。您將會看到它下載並安裝相依性。根據您的網路連線,這可能需要幾分鐘的時間。Docker 具有快取功能,因此後續的建置速度會更快。完成後,終端機將返回提示符號。
如需更多詳細資訊,請參閱 docker build CLI 參考。
將映像檔作為容器運行。
在終端機中,執行以下指令。
$ docker run -it basic-nlp 01_sentiment_analysis.py
以下是指令的分解說明
docker run
:這是用於從 Docker 映像檔運行新容器的主要指令。-it
:這是兩個選項的組合-i
或--interactive
:即使未附加,也會保持標準輸入 (STDIN) 開啟。它允許容器在前景中持續運行並保持互動性。-t
或--tty
:這會配置一個虛擬終端機 (pseudo-TTY),基本上模擬一個終端機,例如命令提示字元或 shell。它讓您可以與容器內的應用程式進行互動。
basic-nlp
:這指定用於建立容器的 Docker 映像檔名稱。在本例中,它是您使用docker build
指令建立的名為basic-nlp
的映像檔。01_sentiment_analysis.py
:這是您要在 Docker 容器內運行的腳本。它會被傳遞給entrypoint.sh
腳本,該腳本會在容器啟動時運行它。
如需更多詳細資訊,請參閱 docker run CLI 參考。
注意事項
對於 Windows 使用者,運行容器時可能會出現錯誤。請確認
entrypoint.sh
中的換行符號為LF
(\n
) 而不是CRLF
(\r\n
),然後重建映像檔。如需更多詳細資訊,請參閱 避免非預期的語法錯誤,請在容器中的檔案使用 Unix 樣式的換行符號。容器啟動後,您將在終端機中看到以下內容。
Enter the text for semantic analysis (type 'exit' to end):
測試應用程式。
輸入評論以取得情感分析結果。
Enter the text for semantic analysis (type 'exit' to end): I love containers! Sentiment: Positive Enter the text for semantic analysis (type 'exit' to end): I'm still learning about containers. Sentiment: Neutral
摘要
在本指南中,您學習了如何建置和運行情感分析應用程式。您學習了如何使用 Python 和 NLTK 建置應用程式,然後使用 Docker 設定環境並運行應用程式。
相關資訊
後續步驟
探索更多 自然語言處理指南。