构建情绪分析应用程序
在本指南中,您将学习如何构建和运行情绪分析应用程序。您将使用 Python 和自然语言工具包 (NLTK) 构建应用程序,然后设置环境并使用 Docker 运行应用程序。
该应用程序使用 NLTK 的 SentimentIntensityAnalyzer 分析用户输入文本的情绪,并输出情绪是正面、负面还是中性。
- 您已安装最新版本的 。 Docker 定期添加新功能,本指南的某些部分可能仅适用于最新版本的 Docker Desktop。
- 您有一个 。本节中的示例使用基于命令行的 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 sslnltk:这是自然语言工具包库,用于在 Python 中处理人类语言数据。SentimentIntensityAnalyzer:这是 NLTK 的一个特定工具,用于确定一段文本的情绪。ssl:此模块提供对用于安全 Web 连接的传输层安全(加密)功能的访问。
-
处理 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_lexiconSentimentIntensityAnalyzer:这是用于情感分析的词典。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)生成输入文本的情感分数。
该函数根据复合分数返回Positive、Negative或Neutral 。
-
创建主循环。
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。有关更多详细信息,请参阅 。
-
指定基础图像。
FROM python:3.8-slim该命令为构建奠定了基础。
python:3.8-slim是 Python 3.8 映像的轻量级版本,针对大小和速度进行了优化。使用这个纤薄的镜像可以减少 Docker 镜像的整体大小,从而加快下载速度并减少安全漏洞的表面积。这对于基于 Python 的应用程序特别有用,您可能不需要完整的标准 Python 映像。 -
设置工作目录。
WORKDIR /appWORKDIR设置 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此行使用
pipPython 的软件包安装程序来安装 中列出的软件包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 在构建镜像时会向控制台输出多个日志。您将看到它下载并安装依赖项。根据您的网络连接,这可能需要几分钟的时间。 Docker 确实具有缓存功能,因此后续构建可以更快。完成后控制台将返回到提示符。
有关更多详细信息,请参阅 。
-
将图像作为容器运行。
在终端中,运行以下命令。
$ docker run -it basic-nlp 01_sentiment_analysis.py以下是该命令的细分:
docker run:这是用于从 Docker 映像运行新容器的主要命令。-it:这是两个选项的组合:-i或--interactive:即使未连接,这也会使标准输入 (STDIN) 保持打开状态。它让容器保持在前台运行并具有交互性。-tor--tty:这会分配一个伪 TTY,本质上是模拟终端,如命令提示符或 shell。它可以让您与容器内的应用程序进行交互。
basic-nlp:指定用于创建容器的 Docker 映像的名称。在本例中,它是basic-nlp您使用命令创建的名为的图像docker build。01_sentiment_analysis.py:这是您要在 Docker 容器内运行的脚本。它被传递给entrypoint.sh脚本,脚本在容器启动时运行它。
有关更多详细信息,请参阅 。
笔记
对于 Windows 用户,运行容器时可能会出现错误。验证行结尾是
entrypoint.sh(LF)\n而不是CRLF(\r\n),然后重建图像。有关更多详细信息,请参阅 。容器启动后,您将在控制台中看到以下内容。
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 运行应用程序。
相关信息:
探索更多 。
