机器学习中的词袋 (BoW) 模型2025年2月3日 | 阅读10分钟 什么是词袋模型?词袋模型 (BoW) 是自然语言处理 (NLP) 领域使用的复杂文本建模方法。共现矩阵是一种用于文本数据的特征提取方法,它提供了一种相对简单灵活的方式来从文档中获取特征。 BoW 模型处理文本时,会通过关注文档中词语的频率来存储记录。它用于计算常规词语的出现次数,而忽略语法上的特殊性以及词语在句子中的位置。 在此模型中,词语被放入一个“袋子”里,这意味着词语的组织和顺序不被考虑。该方法还侧重于词语及其在给定文档中的重要性,以及它们重复出现的频率。 为什么使用 BoW 算法?令人难以置信的是,我们可能需要这种算法来处理生活中经常遇到的如此普通的文本。文本数据面临着显著的挑战:数据完全是非结构化的,而所需的输入是结构化的、明确定义的且长度固定的。 BoW 技术在此是恰当的,因为它将可变长度的文本转换为固定长度的向量。更具体地说,机器学习模型处理的是数字,而不是字符串或文本;因此,文本首先被转换为数字。因此,BoW 技术将文本转换为相似的数值向量,以便于在机器学习算法中使用。 BoW 用在哪里?词袋模型或 BoW 常用于信息检索和自然语言处理。此外,它最适合于文档分类等方法,其中词语的频率在特征空间中用于构建分类器。 BoW 模型也用于计算机视觉。更实际的应用是特征生成。这种处理文本并将其转换为“词袋”的方式有助于计算表征文本的数值。BoW 模型产生的最重要和最典型的概念是词频 (Term Frequency),它量化了一个词语在文档中出现的频率。单独来看,词频并不是文本的最佳表征;然而,它在电子邮件过滤等应用领域是有效的。 然而,词频会成为一个问题,因为文档中高频出现的词语的重要性会被夸大。解决这个问题的一种标准技术是使用逆文档频率 (Inverse Document Frequency) 对词语进行加权,从而对词频进行归一化。类似地,对于分类任务,监督算法能够考虑到所检查文档的类别标签。因此,二元加权是处理这些困难的另一种方法。 BoW 如何工作?我们如何实现它?以下是实现词袋 (BoW) 模型涉及的步骤: 预处理数据
查找常用词
构建模型
这个过程有助于将文本转换为可用于 NLP 过程中不同操作的数字。 通过示例理解 BoW 模型让我们通过一个例子来更好地理解词袋 (BoW) 模型 1. 数据收集: 考虑以下句子作为要向量化的单独文档 狗吠了 狗在晚上吠叫 狗在晚上大声吠叫 2. 确定词汇表: 词汇表是文档中出现的所有离散词语的集合。对于这些句子,词汇表是:["the", "dog", "barked", "at", "night", "loudly"]。 3. 计数: 向量化过程意味着词汇表中每个词语在给定文档中的出现次数都会被计算
BoW 向量表示文档中词语的存在和数量,而不考虑词语的上下文或顺序。 狗吠了: [1, 1, 1, 0, 0, 0] 狗在晚上吠叫: [0, 1, 1, 1, 1, 0] 狗在晚上大声吠叫: [1, 1, 1, 1, 1, 1]。 4. 管理词汇表: 词汇表越大,向量表示的长度就越长。对于大型文档,向量可能会变得非常长,并且包含大量零值。 为了管理词汇表的大小,常见的做法包括:
5. 词语评分: 评分过程是指为词语的出现分配数值。在上例中,计数被简化为二元值,表示任何给定词语的出现 (1) 或不存在 (0)。其他评分方法包括:
什么是 TF-IDF?词频-逆文档频率 (Tf-Idf) 是一个数学值,旨在显示一个词语在一个文档中使用的频率,同时考虑该词语相对于整个文档库的出现频率。 词频 (TF):告诉你一个词语在文档中出现了多少次。 逆文档频率 (IDF):计算词语的相关性,为频繁使用的词语赋予较低的权重,但为很少使用但有影响力的词语赋予更高的权重。 IDF 值很重要,因为仅计算 TF 在许多文档中不足以衡量词语的相关性。 BoW 与 Tf-Idf词袋 (BoW) 模型与 Tf-Idf 之间的主要区别在于:
BoW 向量易于理解和解释,但 Tf-Idf 在模型中通常表现出更好的结果,尤其是在机器学习模型中,尽管其解释可能有点复杂。 BoW 的优点
BOW 的缺点
这会导致计算复杂度高,使文本的处理和分析更加复杂。向量通常是稀疏的,大部分条目为零,通常会导致计算困难。 这样,用户就可以根据 BoW 的优点和缺点来理解何时以及如何应用它。 使用 Python 实现 BoW使用 Python 实现 BoW 数据预处理
分配词语索引
定义词袋模型的函数
测试模型
代码 输出 [1. 1. 2. 1. 1. 0. 0. 0. 0. 0. 0. 0.] 说明下面提供的代码表示 Python 中的词袋 (BoW) 模型。最初,它导入了一些必需的包,并将文本数据语料库分割成词语,将所有词语转换为小写并去除标点符号。然后,它构建词汇表列表,并为词汇表中的每个词语分配索引。bag_of_words 函数为给定的输入句子创建一个向量,并将句子中的词语计数分配给词汇表中的索引。最后,通过将示例句子转换为特征向量并显示它来评估模型。此过程有助于将文本数据转换为某种形式的数值,如果原始数据需要分析或用于机器学习算法,则非常有用。 BoW 的实际应用情绪分析 BoW 是另一种标准的文本数据预处理方法,主要用于情感分析。情感分析旨在揭示文本数据作者想要传达的情感,这可能对根据这些情感做出决策非常有利,例如在产品评论或社交媒体帖子的情况下。文本消息中的词语频率决定了机器学习模型将情感识别为积极、消极或中性。
这些示例说明了 BoW 模型如何在将文本转换为数值形式以用于各种 NLP 应用和改进 ML 任务方面非常有用。 |
我们请求您订阅我们的新闻通讯以获取最新更新。