
入门GPT | 词袋模型(Bag of Words)辅助提升餐厅满意度
Bag-of-Words 将文本看作由单词构成的无序集合,通过统计单词在文本中出现的频次来表示文本。因此,Bag-of-Words主要用于文本分类、情感分析、信息检索等自然语言处理任务中
- 1. 什么是词袋模型(Bag of Words)
- 2. 实现 Bag of Words 的步骤
2.1 文本预处理
2.2 构建词汇表
2.3 向量化文本(词袋表示)
2.4 通过文本的向量表示,使用余弦相似度分析句子相似度
- 3. 统计词频,通过评论提升餐厅满意度
在自然语言处理领域,如何将人类语言转化为机器能够理解和处理的结构化数据,是解决文本问题的关键。
Bag of Words(简称 BoW)是一种经典的文本表示方法,凭借其简单性和易实现性,在文本分析中被广泛应用。从情感分析到文档分类,BoW 都扮演着重要角色
1. 什么是词袋模型(Bag of Words)
Bag of Words 的核心思想是将文本看作一个“词袋”,不关注单词的顺序,仅统计每个单词在文本中出现的频率。它将一段文本转化为一个固定长度的向量,其中每个元素代表词汇表中一个单词的出现次数。虽然简单,但 BoW 能有效地将自然语言处理任务转化为标准的机器学习问题。
BoW 的特点是只关注词汇的频率,因此它特别适合于情感分析、文本分类、文档聚类等任务。然而,BoW 也有一些缺点,比如忽略了单词之间的顺序和上下文语义信息,这会导致对语义敏感的任务(如句子生成)性能不足。尽管如此,其简单高效的特性使其成为入门自然语言处理的理想方法。
2. 实现 Bag of Words 的步骤
2.1 文本预处理
文本预处理是实现 BoW 的第一步。原始文本通常包含噪声,例如标点符号、停用词和大小写的混乱。清理文本能够减少噪声,提高模型的性能。对于中文,还需要进行分词,因为中文没有天然的单词分隔符。
以下是 Python 实现中文分词和停用词去除的代码:
运行这段代码后,我们会得到预处理后的文本,如下所示:
2.2 构建词汇表
接下来需要构建一个词汇表,包含所有预处理后的评论中出现的唯一单词。词汇表是向量化的基础,每个单词会被分配一个固定的索引。
以下是构建词汇表的代码:
结果中,vectorizer.get_feature_names_out()
会输出词汇表:
2.3 向量化文本(词袋表示)
利用构建好的词汇表,我们可以将每条评论转化为一个稀疏向量。每个向量的长度等于词汇表的大小,每个元素代表该词汇在文本中出现的次数。
以下是生成 BoW 矩阵的代码:
运行结果会生成一个稀疏矩阵,例如:
每一行是一个评论的 BoW 向量,每一列对应词汇表中的一个单词,元素值为该单词的出现次数。
2.4 通过文本的向量表示,使用余弦相似度分析句子相似度
余弦相似度是衡量两个向量之间夹角余弦值的指标,可以用于比较文本的内容相似程度
假设两个向量为 A 和 B,其余弦相似度定义为:
余弦相似度的值在 [−1,1] 之间:
- 1 表示两个向量方向完全一致(文本非常相似)。
- 0 表示向量正交(无相似性)。
- -1 表示两个向量方向完全相反(完全不相似)。
余弦相似度:人工智能小白到高手:余弦相似度(Cosine Similarity)的简单理解
矩阵图中每个单元格表示两个句子之间的余弦相似度,颜色越深,句子在语义上越相似。
例如,“食物非常美味,配送速度也很快”和“食物美味可口,配送速度也有待提高”交叉处的单元格颜色相对较深,说明它们具有较高的余弦相似度0.50,这意味着它们在语义上较为相似。
通过余弦相似度矩阵,可以进行以下分析:
- 找出最相似的评论对,例如通过矩阵中非对角线的最大值。
- 为新评论寻找最相近的现有评论,作为推荐系统的一部分。
- 根据相似度对评论进行聚类或分类。
3. 统计词频,通过评论提升餐厅满意度
这些评论混合了正面和负面的反馈,统计矩阵中词频最高的词,可以分析客户关注的核心问题
通过对生成的 BoW 矩阵计算词频,进行分析,我们可以发现一些有趣的现象。
例如,词汇“美味”、“值得”和“惊喜”在正面评论中出现频率较高,而“太慢”在负面评论中更常见。这些词的分布可以帮助我们快速定位客户满意和不满的关键点。正面评论中的高频词可能表明用户对食物质量满意,而负面评论中的词则表明配送慢是主要问题。
词袋模型是早期的一种模型,相对简单,存在两个主要问题:
第一,它使用高维稀疏向量来表示文本,每个单词对应词汇表中的一个维度。这导致模型更适用于高维空间,而且计算效率低。
第二,词袋模型在表示单词时忽略了它们在文本中的上下文信息
Bag-of-Words 将文本看作由单词构成的无序集合,通过统计单词在文本中出现的频次来表示文本。因此,Bag-of-Words主要用于文本分类、情感分析、信息检索等自然语言处理任务中,在需要捕捉词序信息的任务中表现较差,如机器翻译和命名实体识别。
本文转载自 AI取经路,作者: AI取经路
