目录

案例分析 虚拟环境安装与应用

1. 虚拟环境概述

2. conda 虚拟环境安装及管理

3. 镜像源切换

4. 虚拟环境移植

一、工具概览

二、NLP 工具

2.1 Jieba

2.2 HanLP

2.3 spaCy

2.4 NLTK

2.5 Gensim

三、机器学习工具

3.1 scikit-learn

四、深度学习工具

4.1 PyTorch

4.2 TensorFlow

五、大模型与预训练模型工具

5.1 Ollama

5.2 OpenAI API

5.3 LangChain

5.4 Hugging Face

六、 数据库工具

6.1 SQLite

七、文档解析工具

7.1 PyMuPDF

7.2 pdfplumber

7.3 python-docx

7.4 BeautifulSoup

7.5 openpyxl

八、 科学计算工具

8.1 NumPy

8.2 Pandas


摘要:本文系统介绍了 NLP 项目开发所需的核心工具链与环境配置方法。首先通过虚拟环境安装与管理的案例分析,详细讲解了 conda 环境创建、镜像源切换和环境移植等基础技能。随后全面梳理了 NLP 开发中常用的八大类工具:包括 Jieba、HanLP、spaCy 等 NLP 工具;scikit-learn 等机器学习工具;PyTorch、TensorFlow 等深度学习框架;Ollama、OpenAI API、LangChain、Hugging Face 等大模型与预训练模型工具;SQLite 数据库工具;PyMuPDF、pdfplumber、python-docx、BeautifulSoup、openpyxl 等文档解析工具;以及 NumPy、Pandas 等科学计算工具。每类工具均提供功能介绍、应用场景、安装与使用示例,为 NLP 项目开发提供全面的技术参考。

案例分析 虚拟环境安装与应用

       在开展 NLP 项目开发前,首先需要搭建稳定、可复现的 Python 运行环境。NLP 项目涉及的工具种类多、依赖版本差异大,直接在系统全局环境中安装容易出现版本冲突、运行异常等问题。虚拟环境可以为不同项目创建相互独立的运行空间,实现依赖隔离与环境快速复现,是 Python 项目开发的基础技能。本部分围绕虚拟环境的基本概念、conda 环境管理、镜像源加速与环境移植展开,帮助学习者搭建规范的开发环境。

1. 虚拟环境概述

       虚拟环境是一套相互隔离的 Python 运行环境,每个环境拥有独立的 Python 解释器、第三方包安装目录与配置文件。在单个虚拟环境中安装、升级或卸载工具包,仅对当前环境生效,不会影响系统全局 Python 环境,也不会干扰其他项目的虚拟环境。

       需要注意的是,Python 原生的 venv 环境通常不能直接复制到其他设备使用,因为内部记录了绝对路径;而 conda 环境在安装路径一致的前提下可以复制环境文件夹进行迁移。更通用的做法是通过导出配置文件的方式完成环境移植。。

       虚拟环境的核心作用包括:

  • 依赖隔离:不同项目可使用不同版本的工具与框架。例如一个项目使用 PyTorch 开发深度学习模型,另一个项目使用 TensorFlow 完成实验,二者可在同一设备上独立运行、互不冲突。
  • 环境复现:可将当前环境的所有依赖导出为配置文件,在其他设备上快速还原相同运行环境,解决 “本地可运行、部署报错” 的环境差异问题。
  • 权限友好:无需系统管理员权限即可安装第三方包,适合在实验室服务器、公用设备上开展项目开发。
  • 环境整洁:项目结束后可直接删除对应虚拟环境,不会在系统中残留冗余依赖,保持系统环境干净。

2. conda 虚拟环境安装及管理

       conda 是一款跨平台的环境与包管理工具,支持 Python 等多种语言的环境管理,能够便捷地创建、切换、删除虚拟环境,同时统一管理 Python 解释器版本与第三方依赖。NLP 开发通常推荐安装 Miniconda(轻量版,仅包含基础 conda 与 Python,体积小、安装快),也可选择功能更完整的 Anaconda 发行版。

安装与验证

  1. 前往 Anaconda 官方下载页面,选择与操作系统(Windows/macOS/Linux)和设备架构匹配的 Miniconda 或 Anaconda 安装包。
  2. 运行安装程序,按照向导完成安装。Windows 系统建议使用开始菜单中的「Anaconda Prompt」终端执行 conda 命令;macOS/Linux 系统可直接使用系统终端。
  3. 安装完成后,打开终端输入以下命令,若输出版本号则表示安装成功。

安装验证代码示例

conda --version

环境管理常用指令

安装完成后,可通过以下命令完成虚拟环境的创建、激活、包管理与删除等操作。

环境管理代码示例

# 查看当前系统中所有已创建的虚拟环境
conda env list

# 创建名为 nlp_env 的虚拟环境,并指定 Python 版本为 3.10
conda create -n nlp_env python=3.10

# 创建环境的同时,预安装 numpy 和 pandas 工具包
conda create -n nlp_env python=3.10 numpy pandas

# 将虚拟环境创建在指定路径下
conda create --prefix=C:\ProgramData\Anaconda3\envs\nlp_env python=3.9

# 激活
conda activate nlp_env      

# 退出
conda deactivate            

# 查看当前激活环境中已安装的所有包
conda list

# 在指定环境中安装工具包
conda install -n nlp_env jieba

# 安装指定版本的工具包
conda install pandas=2.1.0

# 卸载指定环境中的工具包
conda remove -n nlp_env jieba

# 更新指定包到最新稳定版本
conda update pandas

# 克隆已有环境,基于AAA环境创建完全一致的BBB环境
conda create -n BBB --clone AAA

# 删除名为 nlp_env 的整个虚拟环境(操作不可恢复)
conda remove -n nlp_env --all

提示:在 conda 创建的虚拟环境中使用 pip 安装包时,若出现包被安装到全局环境或权限不足的情况,可在 pip 前加上python -m前缀,格式为python -m pip install <package>

3. 镜像源切换

       Python 默认的官方镜像源位于国外,国内网络环境下安装第三方库时速度较慢,易出现连接超时、安装失败的问题。切换为国内镜像源可以大幅提升包的下载速度,提升环境搭建效率。

常用国内镜像源

      国内可用的 Python 镜像源覆盖多个高校与企业站点,其中清华大学镜像源稳定性与下载速度表现较好,日常使用较为推荐:

镜像源更换方法

     更换镜像源分为临时更换与永久更换两种方式,可根据使用场景选择。

临时更换

     单次安装包时生效,只需在 pip 安装命令后添加-i参数指定镜像地址即可,适合临时下载单个包的场景。

示例代码

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

永久更换

     配置完成后所有 pip 安装操作默认使用指定镜像源,不同操作系统的配置方式略有差异。

  • Windows 环境:在用户目录中创建 pip 目录,如C:\Users\xx\pip,在目录内新建pip.ini文件,写入以下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
  • Linux 环境:在 home 目录下修改~/.pip/pip.conf文件,若文件不存在则自行创建,写入以下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
  • macOS 环境:在 home 目录下修改~/.pip/pip.conf文件,若文件不存在则自行创建,写入以下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

4. 虚拟环境移植

     在团队协作、项目服务器部署或更换开发设备时,需要将当前项目的依赖环境完整迁移到新环境中。通过导出环境配置文件,可以快速复刻完全一致的运行环境,保证 NLP 项目的可复现性。根据环境创建方式的不同,移植方式分为 venv 环境移植与 conda 环境移植两类。

Python 原生 venv 环境移植

      Python 3.6 及以上版本可通过自带的 venv 模块创建虚拟环境,该类环境通过导出依赖列表的方式完成移植。

  1. 导出依赖配置 激活源设备上的虚拟环境,执行以下命令,将环境中已安装包的名称和版本号导出到requirements.txt文件中。
pip freeze > requirements.txt

若需要离线安装,可将所有安装包提前下载到本地文件夹:

pip download -r requirements.txt -d packages
  1. 新环境安装依赖 在目标设备上使用python -m venv MyApp命令新建同名虚拟环境,将requirements.txtpackages文件夹复制到目标环境中。激活虚拟环境后,网络条件允许时可直接在线安装依赖:
pip install -r requirements.txt

离线环境下使用本地包文件安装:

pip install --no-index --find-links=packages -r requirements.txt

conda 虚拟环境移植

conda 管理的虚拟环境有两种常用移植方式,可根据场景选择。

方式一:配置文件重建(推荐)

通过导出 yml 格式的环境配置文件,在目标设备上一键重建完整环境,兼容性最好,不易出现路径问题。

      1)源设备导出配置 激活需要移植的环境,执行导出命令生成配置文件。

conda activate keras
conda env export > keras.yml

      2)目标设备重建环境 将 yml 文件复制到目标设备,执行以下命令即可根据配置创建完全一致的虚拟环境。

conda env create -f keras.yml

方式二:直接复制环境文件夹

该方式适合新旧设备 conda 安装路径完全一致的场景,操作更直接,但路径不一致时容易出现运行异常。

     1)在新设备上安装 conda,安装路径与旧设备保持一致,并配置好环境变量。

     2)将旧设备 conda 安装目录下envs文件夹中的对应虚拟环境目录,复制到新设备 conda 安装目录的envs文件夹中。

     3)将旧设备 conda 安装目录下pkg文件夹中的缓存文件,复制到新设备对应pkg目录中,避免后续重复下载包文件。

一、工具概览

       自然语言处理(Natural Language Processing,NLP)项目通常不是由单一工具完成的,而是由多个工具协同构成完整流程。例如,一个文本分类任务可能需要先用文档解析工具读取 PDF、Word 或网页内容,再用 NLP 工具完成分词、词性标注、命名实体识别,随后使用机器学习或深度学习模型进行分类,最后将结果保存到数据库中,便于查询、统计和展示。

       本章围绕常见的 NLP 相关工具展开介绍,重点覆盖 NLP 工具、文档解析工具、机器学习工具、深度学习工具、大模型与预训练模型工具、数据库工具和科学计算工具。每类工具均按照“工具简介、功能介绍、应用实例、安装代码示例、应用代码示例”的结构进行说明,帮助学习者理解不同工具的定位、适用场景和基本使用思路。

       在 NLP 项目中,常见工具可以按照功能分为以下几类:

工具类别

代表工具

主要用途

NLP 工具

Jieba、HanLP、spaCy、NLTK、Gensim

分词、词性标注、句法分析、实体识别、词向量训练、主题建模等。

文档解析工具

PyMuPDF、pdfplumber、python-docx、BeautifulSoup、openpyxl

从 PDF、Word、HTML、Excel、TXT 等文件中提取文本。

机器学习工具

scikit-learn

文本分类、聚类、特征工程、模型评估。

深度学习工具

PyTorch、TensorFlow

构建神经网络模型、训练深度学习模型、完成文本分类和序列建模等任务。

大模型与预训练模型工具

Ollama、OpenAI API、LangChain、Hugging Face

本地大模型运行、在线模型调用、大模型应用开发、预训练模型加载与微调。

数据库工具

SQLite

存储文本、标签、模型结果和日志信息。

科学计算工具

NumPy、Pandas

数组与矩阵计算、表格数据处理、统计分析。

二、NLP 工具

2.1 Jieba

       Jieba 是 Python 中常用的中文分词工具,适合中文文本预处理入门教学。由于中文句子通常没有天然的空格分隔,因此在中文 NLP 任务中,分词通常是基础步骤。Jieba 使用简单、安装方便,适用于关键词提取、文本分类、情感分析和词频统计等任务。

      主要功能包括:

             1. 精确模式分词:适合大多数文本分析任务。

             2. 全模式分词:尽可能多地切分出句子中的词语。

             3. 搜索引擎模式分词:适合建立倒排索引和搜索场景。

             4. 自定义词典:可以加入专业术语、人名、机构名等。

             5. 关键词提取:支持基于 TF-IDF 和 TextRank 的关键词提取。

             6. 词性标注:可以识别词语的词性类型。

应用实例

       在新闻文本分类任务中,可以先使用 Jieba 对新闻标题和正文进行分词。例如,句子“人工智能正在改变教育方式”可以被切分为“人工智能 / 正在 / 改变 / 教育 / 方式”。完成分词后,可以统计词频,筛选高频词,并将文本转换为机器学习模型可以处理的向量形式。

 安装代码示例

# 安装 jieba 中文分词库
pip install jieba

  应用代码示例

import jieba  # 导入 jieba 分词库

text = "人工智能正在改变教育方式"  # 准备需要分词的中文句子
words = jieba.lcut(text)  # 使用精确模式进行中文分词
print(" / ".join(words))  # 用斜杠连接分词结果并输出

2.2 HanLP

       HanLP 是一个面向中文和多语言 NLP 的工具包,功能比传统分词工具更加完整。它不仅支持中文分词,还支持词性标注、命名实体识别、依存句法分析、语义角色标注等任务。HanLP 适合用于中高级 NLP 教学和实际项目开发。

      主要功能包括:

            1. 中文分词:支持标准分词和深度学习分词。

            2. 词性标注:判断词语在句子中的语法类别。

            3. 命名实体识别:识别人名、地名、机构名、时间、数字等实体。

            4. 依存句法分析:分析句子中词语之间的依赖关系。

            5. 文本分类:可用于构建分类模型。

            6. 多语言支持:适合处理不同语言文本。

应用实例

       在舆情分析系统中,可以使用 HanLP 识别新闻或评论中的人物、地点和机构。例如,在“李明在北京大学参加人工智能论坛”这句话中,HanLP 可以识别“李明”为人名,“北京大学”为机构名,“人工智能论坛”为事件或主题相关词组。这些信息可以用于事件抽取和知识图谱构建。

安装代码示例

# 安装 HanLP 自然语言处理工具包
pip install hanlp

应用代码示例

import hanlp  # 导入 HanLP 工具包

# 加载中文分词模型;首次运行会自动下载模型文件
tok = hanlp.load(hanlp.pretrained.tok.COARSE_ELECTRA_SMALL_ZH)
text = "李明在北京大学参加人工智能论坛"  # 准备待处理文本
print(tok(text))  # 输出 HanLP 的分词结果

2.3 spaCy

       spaCy 是一个工业级 NLP 工具包,主要面向高效、稳定的自然语言处理应用开发。它在英文和多语言 NLP 任务中使用广泛,适合做实体识别、句法分析、文本分类和信息抽取等任务。spaCy 的优势是速度快、接口清晰、工程化能力强。

       主要功能包括:

             1. 分词:将文本切分为单词、标点和符号。

             2. 词性标注:识别名词、动词、形容词等词性。

             3. 命名实体识别:识别人名、组织、地点、日期、金额等实体。

             4. 依存句法分析:分析句子结构。

             5. 文本分类:可用于情感分类、主题分类等任务。

             6. 管道化处理:支持将多个 NLP 处理步骤组合为流水线。

应用实例

      在英文简历分析系统中,可以使用 spaCy 提取求职者姓名、学校、公司、职位和技能等信息。例如,对简历文本进行命名实体识别后,可以自动提取“Google”“Stanford University”“Software Engineer”等关键信息,从而辅助招聘系统完成简历筛选。

安装代码示例

# 安装 spaCy 工具包
pip install spacy
# 下载英文小型模型,用于分词、词性标注和实体识别
python -m spacy download en_core_web_sm

应用代码示例

import spacy  # 导入 spaCy 工具包

nlp = spacy.load("en_core_web_sm")  # 加载英文 NLP 模型
doc = nlp("Google is building AI tools in Singapore.")  # 对英文句子进行分析
for ent in doc.ents:  # 遍历识别出的命名实体
    print(ent.text, ent.label_)  # 输出实体文本和实体类型

2.4 NLTK

        NLTK 是 Python 中经典的自然语言处理教学工具包。它包含大量 NLP 基础算法、语料库和教学示例,适合学习分词、词干提取、词形还原、语法分析和文本分类等基础知识。NLTK 更偏向教学和研究,适合帮助学习者理解 NLP 的基本概念。

       主要功能包括:

             1. 英文分词和句子切分。

             2. 停用词处理。

             3. 词干提取和词形还原。

             4. 词性标注。

             5. 语法分析和句法树构建。

             6. 内置语料库管理。

             7. 简单文本分类实验。

应用实例

       在英文文本预处理中,可以使用 NLTK 去除停用词。例如,在句子“This is a useful tool for natural language processing”中,“is”“a”“for”等词语对主题判断帮助较小,可以作为停用词删除。处理后剩下的关键词更适合用于文本分类或关键词分析。

安装代码示例

# 安装 NLTK 自然语言处理工具包
pip install nltk

应用代码示例

import nltk  # 导入 NLTK 工具包
from nltk.corpus import stopwords  # 导入停用词表
from nltk.tokenize import word_tokenize  # 导入英文分词函数

nltk.download("punkt")  # 下载分词所需资源
nltk.download("stopwords")  # 下载停用词资源
text = "This is a useful tool for natural language processing."  # 准备英文文本
words = word_tokenize(text)  # 将句子切分为单词
stop_words = set(stopwords.words("english"))  # 获取英文停用词集合
result = [w for w in words if w.lower() not in stop_words]  # 去除停用词
print(result)  # 输出处理后的关键词列表

2.5 Gensim

       Gensim 是一个常用于主题建模和词向量训练的 Python 工具库,适合处理大规模文本语料。它支持 Word2Vec、Doc2Vec、FastText、LDA 主题模型等方法,在文本相似度计算、主题发现和语义分析中应用广泛。

       主要功能包括:

              1. 训练词向量:学习词语之间的语义关系。

              2. 文档向量表示:将整篇文档表示为向量。

              3. 主题建模:使用 LDA 等模型发现文本集合中的主题。

              4. 文本相似度计算:比较词语、句子或文档之间的相似程度。

              5. 大规模语料处理:支持流式读取,适合处理大量文本。

应用实例

       在新闻主题分析任务中,可以使用 Gensim 的 LDA 模型对大量新闻进行主题建模。模型可能自动发现“体育”“财经”“科技”“教育”等主题,并给出每个主题下最具代表性的词语。例如,某个主题包含“股票”“市场”“投资”“基金”等词,则可以判断该主题与财经相关。

安装代码示例

# 安装 Gensim 主题建模和词向量工具库
pip install gensim

应用代码示例

from gensim.models import Word2Vec  # 导入 Word2Vec 词向量模型

sentences = [  # 准备已经分好词的训练语料
    ["人工智能", "教育", "应用"],
    ["机器学习", "数据", "模型"],
    ["人工智能", "模型", "训练"]
]
model = Word2Vec(sentences, vector_size=50, window=2, min_count=1)  # 训练词向量模型
print(model.wv.most_similar("人工智能", topn=2))  # 查看与“人工智能”最相近的词

三、机器学习工具

3.1 scikit-learn

      scikit-learn 是 Python 中常用的机器学习工具库,提供了完整的机器学习流程支持,包括数据预处理、特征提取、模型训练、模型评估和参数调优。它接口统一、文档完善,非常适合 NLP 入门实验和传统机器学习任务。

      scikit-learn 在文本处理中的常见功能包括:

          1. 文本向量化:例如 CountVectorizer、TfidfVectorizer。

          2. 分类模型:例如朴素贝叶斯、逻辑回归、支持向量机、随机森林等。

          3. 聚类模型:例如 K-Means。

          4. 降维方法:例如 PCA、TruncatedSVD。

          5. 模型评估:准确率、召回率、F1 值、混淆矩阵等。

          6. 管道构建:使用 Pipeline 组合特征处理和模型训练步骤。

应用实例

       在垃圾短信识别任务中,可以使用 scikit-learn 将短信文本转换为 TF-IDF 特征,然后训练朴素贝叶斯分类器。模型学习“中奖”“免费”“点击链接”等词语与垃圾短信之间的关系,最终判断新短信是否属于垃圾短信。

安装代码示例

# 安装 scikit-learn 机器学习工具库
pip install scikit-learn

应用代码示例

from sklearn.feature_extraction.text import TfidfVectorizer  # 导入 TF-IDF 文本向量化工具
from sklearn.naive_bayes import MultinomialNB  # 导入朴素贝叶斯分类模型

texts = ["免费领取奖品", "明天开会讨论项目", "点击链接领奖"]  # 训练文本
labels = ["垃圾短信", "正常短信", "垃圾短信"]  # 每条文本对应的标签
vectorizer = TfidfVectorizer()  # 创建 TF-IDF 向量化器
X = vectorizer.fit_transform(texts)  # 将文本转换为数值特征
model = MultinomialNB().fit(X, labels)  # 训练分类模型
print(model.predict(vectorizer.transform(["免费点击领取福利"])))  # 预测新短信类别

四、深度学习工具

4.1 PyTorch

       PyTorch 是一个常用的开源深度学习框架,具有动态图机制、接口灵活和调试方便等特点。它适合用于构建神经网络模型,也常用于自然语言处理中的文本分类、序列标注、情感分析、问答和文本生成等任务。对于学习者来说,PyTorch 的代码风格接近普通 Python 程序,便于理解模型的前向传播、损失计算和参数更新过程。

       PyTorch 的主要功能包括:

            1. 张量计算:使用 Tensor 表示文本特征、词向量和模型参数。

            2. 自动求导:自动计算梯度,支持神经网络训练。

            3. 神经网络模块:通过 torch.nn 构建线性层、循环网络、注意力层等模型结构。

            4. 优化器支持:提供 SGD、Adam 等常用优化算法。

            5. GPU 加速:可以将模型和数据迁移到 GPU 上提高训练速度。

            6. 与 NLP 模型结合:常用于训练或微调 Transformer、BERT 等模型。

应用实例

       在文本分类任务中,可以先将文本转换为词向量、TF-IDF 特征或预训练模型输出的向量,再使用 PyTorch 搭建一个简单的神经网络分类器。模型通过训练学习文本特征与类别标签之间的关系,最终可以判断评论是正面还是负面,或者判断新闻属于科技、财经、体育等类别。

安装代码示例

# 安装 PyTorch 深度学习框架
pip install torch

应用代码示例

import torch  # 导入 PyTorch 工具包
from torch import nn  # 导入神经网络模块
X = torch.tensor([[0.8, 0.1, 0.3], [0.2, 0.9, 0.4], [0.7, 0.2, 0.6]], dtype=torch.float32)  # 示例文本特征
y = torch.tensor([0, 1, 0])  # 示例类别标签
model = nn.Sequential(  # 构建简单前馈神经网络
    nn.Linear(3, 8),
    nn.ReLU(),
    nn.Linear(8, 2)
)
loss_fn = nn.CrossEntropyLoss()  # 定义分类损失函数
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)  # 定义优化器
for epoch in range(5):  # 简单训练 5 轮
    pred = model(X)
    loss = loss_fn(pred, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
print(model(X).argmax(dim=1))  # 输出预测类别

4.2 TensorFlow

        TensorFlow 是一个由 Google 推出的开源深度学习框架,常用于构建、训练和部署神经网络模型。它提供了较完整的模型开发生态,既可以使用底层张量运算,也可以通过 Keras 高层接口快速搭建模型。TensorFlow 适合用于教学实验、工业部署和跨平台模型应用。

        TensorFlow 的主要功能包括:

             1. 张量计算:使用 Tensor 表示数值数据和模型参数。

             2. Keras 建模接口:可以快速搭建全连接网络、卷积网络和循环网络。

             3. 自动训练流程:通过 compile 和 fit 完成模型训练。

             4. 模型保存与部署:支持将训练好的模型保存并用于后续预测。

             5. GPU 和分布式训练:支持较大规模模型训练。

             6. 与 NLP 任务结合:可用于文本分类、序列建模、情感分析和模型微调等任务。

应用实例

      在情感分析实验中,可以使用 TensorFlow 的 Keras 接口快速搭建分类模型。先将评论文本转换为数值特征,再输入神经网络进行训练。训练完成后,模型可以对新的评论文本进行情感类别预测。

安装代码示例

# 安装 TensorFlow 深度学习框架
pip install tensorflow

应用代码示例

import tensorflow as tf  # 导入 TensorFlow 工具包
from tensorflow import keras  # 导入 Keras 高层接口
X = tf.constant([[0.8, 0.1, 0.3], [0.2, 0.9, 0.4], [0.7, 0.2, 0.6]], dtype=tf.float32)  # 示例文本特征
y = tf.constant([0, 1, 0])  # 示例类别标签
model = keras.Sequential([  # 构建简单神经网络模型
    keras.layers.Dense(8, activation="relu", input_shape=(3,)),
    keras.layers.Dense(2, activation="softmax")
])
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(X, y, epochs=5, verbose=0)  # 训练模型
print(model.predict(X).argmax(axis=1))  # 输出预测类别

五、大模型与预训练模型工具

        大模型与预训练模型工具是指用于调用、运行、管理、微调和开发大模型应用的一类工具。需要注意的是,Transformer 更准确地说是一种模型结构,Transformers 则是 Hugging Face 生态中的预训练模型调用工具库;在工具分类中,本节更强调模型运行、接口调用、应用编排、知识库问答以及预训练模型加载等能力。因此,本节重点介绍 Ollama、OpenAI API、LangChain 和 Hugging Face。

         大模型与预训练模型工具的常见功能包括:

                1. 本地模型运行:在个人电脑或服务器上运行开源大模型。

                2. 在线模型调用:通过 API 调用云端大模型完成生成、问答、摘要等任务。

                3. 多轮对话:维护上下文,支持连续问答和智能对话。

                4. 检索增强生成:结合文档库、向量数据库或数据库回答问题。

                5. 智能体开发:让模型根据任务调用搜索、数据库、代码执行等工具。

                6. 应用集成:将大模型能力接入网站、教学系统、客服系统或数据分析系统。

                7. 预训练模型生态:加载、测试和微调开源模型,并结合数据集完成实验。

5.1 Ollama

       Ollama 是一个用于在本地运行和管理开源大模型的工具。它可以帮助用户下载模型、启动模型服务,并通过命令行或本地 API 调用模型。对于教学和实验场景,Ollama 的优点是配置相对简单,便于学生理解“本地大模型运行”和“模型接口调用”的基本过程。

      Ollama 的主要功能包括:

          1. 下载和管理本地大模型。

          2. 通过命令行与模型进行对话。

          3. 启动本地 API 服务,供 Python 程序调用。

          4. 支持文本生成、问答、摘要和简单信息抽取等任务。

          5. 适合大模型入门教学、本地原型开发和离线实验。

应用实例

       在课程智能助教原型中,可以使用 Ollama 在本地运行开源模型。教师先将课程资料整理为文本,再让程序把学生问题发送给本地模型,由模型生成初步回答。这样可以帮助学习者理解大模型应用的基本流程,同时减少对云端接口的依赖。

安装代码示例

# Ollama 需要先安装本地程序;Python 示例还需要 requests
pip install requests
# 已安装 Ollama 后,可在命令行下载示例模型
ollama pull gemma3

应用代码示例

import requests  # 导入 HTTP 请求库

url = "http://localhost:11434/api/generate"  # Ollama 本地默认 API 地址
payload = {
    "model": "gemma3",
    "prompt": "用一句话解释 TF-IDF。",
    "stream": False
}
response = requests.post(url, json=payload, timeout=60)  # 向本地模型发送请求
print(response.json()["response"])  # 输出模型生成的回答

5.2 OpenAI API

       OpenAI API 是一种在线大模型调用工具,开发者可以通过程序向云端模型发送文本、图片或其他输入,并获得模型生成的回答。它适合用于构建智能问答、文本摘要、内容生成、信息抽取和自动化办公等应用。

       OpenAI API 的主要功能包括:

             1. 调用云端大语言模型完成文本生成和问答。

             2. 支持摘要、翻译、分类和信息抽取等任务。

             3. 支持多轮对话和上下文输入。

             4. 可以与数据库、网页系统、教学平台等应用集成。

             5. 适合开发在线智能助手和自动化文本处理系统。

应用实例

        在在线课程答疑系统中,可以使用 OpenAI API 接收学生问题,并根据课程资料生成回答。例如,学生提问“什么是 TF-IDF?”时,系统可以调用模型生成简洁解释,再将结果展示在网页或教学平台中。

安装代码示例

# 安装 OpenAI Python SDK
pip install openai

应用代码示例

from openai import OpenAI  # 导入 OpenAI 客户端

# 运行前需要在环境变量中配置 OPENAI_API_KEY
client = OpenAI()  # 创建客户端对象
response = client.responses.create(  # 调用模型生成回答
    model="gpt-5.4",
    input="用一句话解释 TF-IDF。"
)
print(response.output_text)  # 输出模型生成的文本

5.3 LangChain

       LangChain 是一个用于开发大模型应用的框架。它本身不是大模型,而是帮助开发者把大模型、提示词、工具、文档检索、记忆和业务流程组织起来。LangChain 常用于构建知识库问答、智能体、文档问答和自动化任务处理系统。

       LangChain 的主要功能包括:

            1. 管理提示词模板,便于复用和维护。

            2. 接入不同的大模型接口,例如在线 API 或本地模型。

            3. 连接文档加载器、向量数据库和检索模块。

            4. 构建检索增强生成流程。

            5. 构建能够调用外部工具的智能体应用。

应用实例

       在课程知识库问答系统中,可以使用 LangChain 将课程讲义切分为文本片段,建立向量索引,并在学生提问时先检索相关内容,再把检索结果和问题一起交给大模型生成回答。这样可以使回答更贴近课程资料。

安装代码示例

# 安装 LangChain 及 OpenAI 集成
pip install -U "langchain[openai]"

应用代码示例

from langchain.chat_models import init_chat_model  # 导入模型初始化工具

# 运行前需要在环境变量中配置 OPENAI_API_KEY
model = init_chat_model("gpt-5.4", model_provider="openai")  # 初始化聊天模型
result = model.invoke("用一句话解释 TF-IDF。")  # 调用模型
print(result.content)  # 输出回答内容

5.4 Hugging Face

       Hugging Face 是一个围绕开源人工智能模型和数据集建立的平台与工具生态。在 NLP 项目中,学习者常用 Hugging Face 的 Transformers 工具库加载预训练模型,也可以使用 Datasets 加载公开数据集,使用 Tokenizers 处理分词器,并通过 Hub 下载或发布模型。它适合用于文本分类、问答、摘要、翻译、文本生成和模型微调等任务。

       Hugging Face 的主要功能包括:

             1. 模型加载:可以加载 BERT、GPT、RoBERTa、T5 等预训练模型。

             2. 分词器管理:可以使用与模型匹配的 tokenizer 处理输入文本。

             3. 任务管道调用:通过 pipeline 快速完成文本分类、问答、摘要和生成等任务。

             4. 数据集加载:可以使用 Datasets 工具库读取公开数据集或本地数据。

             5. 模型微调:可以基于 PyTorch 或 TensorFlow 对预训练模型进行任务适配。

             6. 模型共享:可以通过 Hugging Face Hub 下载、管理和发布模型。

应用实例

      在英文评论情感分析任务中,可以使用 Hugging Face Transformers 直接加载已经训练好的情感分类模型,对评论文本进行正面或负面判断。在更复杂的项目中,也可以先加载公开数据集,再使用 PyTorch 或 TensorFlow 对预训练模型进行微调,从而得到适合具体领域的分类模型。

安装代码示例

# 安装 Hugging Face 常用工具库
pip install transformers datasets tokenizers torch

应用代码示例

from transformers import pipeline  # 导入 Hugging Face 任务管道

classifier = pipeline(
    "sentiment-analysis",
    model="distilbert-base-uncased-finetuned-sst-2-english"
)  # 创建英文情感分析管道
result = classifier("This course is very useful.")  # 输入待分析文本
print(result)  # 输出情感分类结果

六、 数据库工具

6.1 SQLite

       SQLite 是一种轻量级关系型数据库,不需要单独部署服务器,数据直接保存在本地文件中。它安装简单、使用方便,适合教学实验、小型项目、单机应用和原型系统开发。在 NLP 项目中,SQLite 常用于保存原始文本、清洗后的文本、标签、模型预测结果和实验记录。

       SQLite 的主要功能包括:

             1. 创建数据表:用于存储结构化数据。

             2. 插入、查询、更新和删除数据。

             3. 支持 SQL 查询语句。

             4. 支持索引,提高查询效率。

             5. 支持事务,保证数据操作的完整性。

             6. 可与 Python 程序直接集成。

应用实例

       在文本分类实验中,可以将每条文本、人工标签、模型预测标签和预测概率保存到 SQLite 数据库中。后续可以使用 SQL 查询所有分类错误的样本,分析模型在哪些类型的文本上表现较差,从而改进数据或模型。

安装代码示例

# Python 标准库自带 sqlite3,通常无需额外安装
# 查看 Python 版本,确认本地已经安装 Python
python --version

应用代码示例

import sqlite3  # 导入 SQLite 数据库模块

conn = sqlite3.connect("nlp_result.db")  # 连接数据库文件,不存在时会自动创建
cur = conn.cursor()  # 创建游标对象,用于执行 SQL 语句
cur.execute("CREATE TABLE IF NOT EXISTS result (text TEXT, label TEXT)")  # 创建结果表
cur.execute("INSERT INTO result VALUES (?, ?)", ("人工智能正在改变教育方式", "科技"))  # 插入一条文本分类结果
conn.commit()  # 提交数据库更改
for row in cur.execute("SELECT * FROM result"):  # 查询表中所有记录
    print(row)  # 输出查询结果
conn.close()  # 关闭数据库连接

七、文档解析工具

      文档解析工具用于从不同格式的文件中提取文本内容。实际项目中的文本数据往往不直接来自纯文本文件,而是来自 PDF、Word、Excel、HTML、TXT 或扫描件。因此,在进行 NLP 分析之前,通常需要先完成文档读取、文本提取、结构整理和异常处理。

      本节将常用文档解析工具分别介绍,包括 PyMuPDF、pdfplumber、python-docx、BeautifulSoup 和 openpyxl。不同工具面向的文件格式和使用场景不同,学习时应结合数据来源选择合适工具。

7.1 PyMuPDF

      PyMuPDF 是一个用于处理 PDF 文档的 Python 工具库,可以读取 PDF 页面文本、图片、页面尺寸和版面信息。它读取速度较快,适合从文本型 PDF 中批量提取正文内容,也可以用于 PDF 页面转换、截图和简单版面分析。

     PyMuPDF的主要功能包括:

           1. 提取 PDF 页面中的文本内容。

           2. 获取页面数量、页面尺寸和页面结构信息。

           3. 提取 PDF 中的图片或将页面渲染为图片。

           4. 支持按页读取,便于处理长文档。

           5. 可与 OCR 工具结合处理扫描型 PDF。

应用实例

       在政策文件分析任务中,可以使用 PyMuPDF 按页读取 PDF 文档,将每一页的文字提取出来并合并为完整文本。后续可以对提取结果进行分词、关键词统计、实体识别和主题分析。

安装代码示例

# 安装 PyMuPDF

pip install pymupdf

应用代码示例

import fitz  # 导入 PyMuPDF 工具库

# 打开 PDF 文件
doc = fitz.open("example.pdf")
texts = []  # 用于保存每一页文本
for page in doc:  # 按页遍历 PDF
    texts.append(page.get_text())  # 提取当前页面文本
full_text = "\n".join(texts)  # 合并所有页面文本
print(full_text[:200])  # 输出前 200 个字符

7.2 pdfplumber

      pdfplumber 是一个专门用于解析 PDF 文本、表格和版面信息的工具库。与只关注纯文本提取的工具相比,pdfplumber 更适合处理带有表格、列布局或位置关系的 PDF 文档。

      pdfplumber 的主要功能包括:

           1. 提取 PDF 页面文本。

           2. 提取 PDF 中的表格数据。

           3. 获取字符、单词、行和表格的位置信息。

           4. 支持按页解析,便于定位具体页面内容。

           5. 适合处理财务报表、统计表和带版面结构的 PDF。

应用实例

      在公告或报表分析任务中,PDF 文件中常包含表格。可以使用 pdfplumber 提取表格内容,再将表格转换为列表或 DataFrame,便于后续统计、清洗和入库。

安装代码示例

# 安装 pdfplumber

pip install pdfplumber

应用代码示例

import pdfplumber  # 导入 PDF 表格解析工具

with pdfplumber.open("example.pdf") as pdf:  # 打开 PDF 文件
    first_page = pdf.pages[0]  # 读取第一页
    text = first_page.extract_text()  # 提取页面文本
    tables = first_page.extract_tables()  # 提取页面表格

print(text[:200] if text else "未提取到文本")  # 输出部分文本
print(tables[:1])  # 输出第一个表格结果

7.3 python-docx

       python-docx 是用于读取和写入 DOCX 文档的 Python 工具库。它可以提取 Word 文档中的段落、标题和表格内容,也可以创建新的 Word 文档或修改已有文档,适合处理课程资料、合同文本、报告和调查材料。

        python-docx 的主要功能包括:

            1. 读取 DOCX 文档中的段落文本。

            2. 读取 Word 表格中的行、列和单元格内容。

            3. 获取和设置标题、正文、列表等样式。

            4. 创建新的 Word 文档并写入文本或表格。

            5. 适合将 Word 文档内容转换为可分析的纯文本或结构化数据。

应用实例

       在学生作业或调研报告分析任务中,可以使用 python-docx 批量读取 Word 文档中的段落内容,并将文本保存为统一格式,随后进行关键词提取、文本分类或相似度检测。

安装代码示例

# 安装 python-docx

pip install python-docx

应用代码示例

from docx import Document  # 导入 Word 文档处理工具

word_doc = Document("example.docx")  # 打开 DOCX 文档
paragraphs = [p.text for p in word_doc.paragraphs if p.text.strip()]  # 提取非空段落
for text in paragraphs[:5]:  # 输出前 5 个段落
    print(text)

7.4 BeautifulSoup

       BeautifulSoup 是常用的 HTML 和 XML 解析工具,适合从网页源代码中提取标题、正文、链接、表格和指定标签内容。在 NLP 项目中,它常用于网页文本采集后的正文抽取和噪声清理。

      BeautifulSoup 的主要功能包括:

            1. 解析 HTML 或 XML 文档。

            2. 按标签名、属性、CSS 选择器查找内容。

            3. 提取网页标题、正文、链接和表格文本。

            4. 去除脚本、样式和无关标签。

            5. 适合与 requests 等工具配合完成网页文本处理。

应用实例

       在新闻网页分析任务中,可以使用 BeautifulSoup 提取网页中的标题和正文段落,去除导航栏、广告和脚本内容,再将正文文本送入分词、摘要或情感分析流程。

安装代码示例

# 安装 BeautifulSoup 和 lxml 解析器

pip install beautifulsoup4 lxml

应用代码示例

from bs4 import BeautifulSoup  # 导入 HTML 解析工具

html = "<html><body><h1>新闻标题</h1><p>第一段正文</p><p>第二段正文</p></body></html>"
soup = BeautifulSoup(html, "lxml")  # 构建解析对象
title = soup.select_one("h1").get_text(strip=True)  # 提取标题
content = "\n".join(p.get_text(strip=True) for p in soup.select("p"))  # 提取段落
print(title)
print(content)

7.5 openpyxl

       openpyxl 是用于读取和写入 Excel xlsx 文件的 Python 工具库。许多文本数据会以表格形式保存,例如评论数据、新闻标题、标签数据和实验结果,因此 openpyxl 常用于从 Excel 中读取文本字段和标签字段。

       openpyxl 的主要功能包括:

            1. 读取 Excel 工作簿和工作表。

            2. 读取单元格、行和列中的文本数据。

            3. 写入或修改 Excel 表格内容。

            4. 支持多工作表处理。

            5. 适合整理标注数据、分类结果和实验记录。

应用实例

       在文本分类实验中,训练数据可能存放在 Excel 文件中,其中一列是文本,另一列是标签。可以使用 openpyxl 读取这些数据,再转换为模型训练所需的文本列表和标签列表。

安装代码示例

# 安装 openpyxl

pip install openpyxl

应用代码示例

from openpyxl import load_workbook  # 导入 Excel 读取工具

wb = load_workbook("data.xlsx")  # 打开 Excel 文件
sheet = wb.active  # 获取当前工作表
for row in sheet.iter_rows(min_row=2, values_only=True):  # 从第二行开始读取数据
    text, label = row[0], row[1]  # 假设第一列是文本,第二列是标签
    print(text, label)

八、 科学计算工具

      科学计算工具主要用于数据处理、统计分析和数值计算。在 NLP 项目中,文本通常会被转换为数字向量或表格数据,因此需要借助科学计算工具完成矩阵运算、数据整理、结果统计和实验分析。常见工具包括 NumPy 和 Pandas。

8.1 NumPy

      NumPy 是 Python 中常用的数值计算工具库,核心数据结构是多维数组 ndarray。它能够高效完成数组运算、矩阵计算和统计分析,是许多机器学习、深度学习和数据分析工具的基础。在 NLP 项目中,NumPy 常用于表示文本向量、特征矩阵、词向量和模型输出结果。

      NumPy 的主要功能包括:

            1. 多维数组表示:使用 ndarray 存储向量、矩阵和高维特征。

            2. 矩阵与向量运算:支持加减乘除、点积、转置等操作。

            3. 统计计算:可以计算均值、方差、最大值、最小值等指标。

            4. 随机数生成:可用于构造实验数据或初始化模型参数。

            5. 数组切片与索引:便于选择部分样本、特征或结果。

            6. 与其他工具配合:可与 scikit-learn、PyTorch、TensorFlow 和 Pandas 协同使用。

应用实例

       在文本分类任务中,文本经过向量化后通常会形成一个特征矩阵。例如,每一行表示一条文本,每一列表示一个词语或特征。可以使用 NumPy 对这些向量进行归一化、求平均值或计算相似度,为后续模型训练和结果分析提供基础。

安装代码示例

# 安装 NumPy 数值计算工具库
pip install numpy

应用代码示例

import numpy as np  # 导入 NumPy 工具库

features = np.array([  # 构造文本特征矩阵,每一行代表一条文本
    [2, 0, 1],
    [0, 3, 1],
    [1, 1, 2]
], dtype=float)

row_sum = features.sum(axis=1, keepdims=True)  # 计算每条文本的特征总和
normalized = features / (row_sum + 1e-8)  # 对特征进行简单归一化,避免除零错误
print(normalized)  # 输出归一化后的特征矩阵

8.2 Pandas

       Pandas 是 Python 中常用的数据分析工具库,主要用于处理表格型数据。它提供 Series 和 DataFrame 等数据结构,适合读取、清洗、筛选、统计和导出数据。在 NLP 项目中,Pandas 常用于管理包含“文本”“标签”“预测结果”等字段的数据集。

       Pandas 的主要功能包括:

             1. 读取和保存数据:支持 CSV、Excel、JSON 等常见格式。

             2. 表格数据管理:使用 DataFrame 组织文本、标签和预测结果。

             3. 数据清洗:处理缺失值、重复数据和异常字段。

             4. 数据筛选与排序:按条件选择样本或按指标排序。

             5. 分组统计:统计不同类别的样本数量、准确率等指标。

             6. 实验结果汇总:整理不同模型的评估结果,便于对比分析。

应用实例

       在情感分析实验中,可以使用 Pandas 读取评论数据集,检查是否存在缺失文本,统计正面和负面评论数量,并在模型预测后保存预测标签和置信度。这样可以更方便地完成数据检查、实验记录和结果分析。

安装代码示例

# 安装 Pandas 数据分析工具库
pip install pandas

应用代码示例

import pandas as pd  # 导入 Pandas 数据处理工具

df = pd.DataFrame({  # 创建示例评论数据表
    "text": ["服务很好", "物流太慢", "价格合适"],
    "label": ["正面", "负面", "正面"]
})

df["text_len"] = df["text"].str.len()  # 计算每条文本的字符长度
print(df["label"].value_counts())  # 统计每种类别出现的次数
print(df)  # 输出整理后的数据表

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐