Logo
Section 1 / 9

使用 PyCaret 进行自然语言处理

学习如何使用 PyCaret 导入自然语言处理所需的必要库和数据集。

导入

使用 PyCaret 进行自然语言处理

学习如何使用 PyCaret 导入自然语言处理所需的必要库和数据集。

自然语言处理(NLP) 位于计算语言学与机器学习的交叉领域。这一动态领域的核心目标是从自然语言中提取信息和洞察,这里的自然语言指的是人们日常生活中使用的口头或书面语言。NLP 包含多种方法和技术,例如主题建模、情感分析、机器翻译、文档摘要以及语音转文本。

本章我们将聚焦于 主题建模,因为 PyCaret 库的 NLP 模块支持该技术。我们可以利用它来发现 主题——即隐藏的语义结构,用于将一组文档(称为语料库)进行语义上的归类。

![自然语言处理](http://network.jancsitech.net:9000/pageflex-ai/images/general/202509/1758267202943143979.svg "Natural language processing" width="600" height="400")

潜在狄利克雷分配(LDA) 是一种可用于主题建模的生成式概率模型,其定义如下公式所示:

p(w∣α,β)=∫p(θ∣α)(∏n=1N∑znp(zn∣θ)p(wn∣zn,β))dθp(\mathsf{w} \mid {\alpha}, {\beta})=\int p(\theta \mid \alpha)\left(\prod_{n=1}^{N} \sum_{z_{n}} p\left(z_{n} \mid \theta\right) p\left(w_{n} \mid z_{n}, {\beta}\right)\right) d \theta
  • p(w∣α,β)p(\mathsf{w} \mid {\alpha}, {\beta}) 表示文档的边缘分布。
  • w\mathsf{w} 是由 NN 个词组成的集合,即一个文档。
  • p(θ∣α)p(\theta \mid \alpha) 是主题混合的狄利克雷分布。
  • wnw_{n} 是文档中的第 nn 个词。

主题建模算法

除了 LDA 外,还有许多其他主题建模算法,如潜在语义索引(LSI)、分层狄利克雷过程(HDP)、随机投影(Random Projections)以及非负矩阵分解(NMF)。在本章后续部分,我们将使用 PyCaret 的 NLP 模块对一组文档(语料库)进行主题建模,并将得到的主题概率作为特征,用于在数据集上训练分类模型。

导入必要的库

首先导入所需的库:pandas、Matplotlib、WordCloud,以及 PyCaret 中的 NLP 和 Classification 模块。同时从 spaCy 库中导入英文停用词列表(stop words),以便在探索性数据分析(EDA)阶段使用。随着章节的推进,我们将更详细地介绍停用词及其他常见的 NLP 术语和概念。最后,我们将 Matplotlib 图像的 DPI 设置为 300,以获得高分辨率图表。

1# 导入必要的库 2 3import pandas as pd 4import matplotlib.pyplot as plt 5import matplotlib as mpl 6from wordcloud import WordCloud 7from spacy.lang.en.stop_words import STOP_WORDS 8from pycaret import nlp 9from pycaret import classification 10mpl.rcParams['figure.dpi'] = 300

加载数据集

本章将使用都柏林大学学院(UCD)研究人员创建的 BBC 新闻数据集,该数据集可免费用于教育和科研目的。数据集包含来自 BBC 新闻网站的 2000 多篇文章,涵盖五个不同类别:商业(business)、娱乐(entertainment)、政治(politics)、体育(sport)和技术(tech)。BBC 新闻数据集既适用于通用 NLP 任务,也适用于多分类问题,因此非常适合本项目使用。

我们使用 pandas 的 read_csv() 函数将数据集加载为 DataFrame。

1# 加载数据集 2 3data = pd.read_csv('bbc-text.csv') 4data.head(10)

从输出结果可以看出,数据包含两列:category(类别)和 text(文章内容)。

接下来,我们调用 info() 函数查看数据集的基本信息。

1# 获取数据集信息 2 3data.info()

如前所述,数据集中共有 2225 篇文章,且两列均无缺失值。

分类

探索性数据分析