本文为对《GPT 图解 - 大模型是怎样构建的》一书的学习笔记,所有的例子和代码均来源于本书。
基本介绍
Bag-of-Words 模型为早期的语言模型,诞生于 1954 年。
核心思想:将文本中的词看作一个个独立的个体,不考虑在句子中的顺序,只关心词出现频次。
应用场景:文本分析、情感分析
代码实践
准备数据集
| |
对数据集进行分词
| |
分词完成的结果如下:
| |
创建词汇表
| |
获取到如下结果,其中 key 为对应的词,value 为词出现的频率。
| |
生成词袋表示
| |
输出如下结果:
| |
输出结果需要稍微理解一下
- 数组中的每一行表示语料中的一句话
- 每个元素表示该词在当前句子中出现的次数。例如第一行的第二个元素 2 为“特别”,说明“特别”在第一句话“我特别特别喜欢看电影”总一共出现了两次。
- 每一行一共有 22 个元素,说明所有的语料一共有 22 个词。
可以看到整个的输出结果为一个稀疏矩阵,尤其是当词汇量变大后,矩阵会更加稀疏。
计算余弦相似度
该步骤需要有一点数学基础。
余弦相似度:用来衡量两个向量的相似程度。值在 -1 到 1 之间,值越接近 1,两个向量越相似。越接近 -1,表示两个向量越不相似。值为 0 时,表示没有明显的相似性。
公式如下:
| |
(A * B) 为向量的点积,||A|| 和 ||B|| 表示向量的长度。
| |
可视化余弦相似度
| |
最终获取到如下的结果:
每个单元格表示两个句子之间的相似度。
总结
缺点:
- 采用了稀疏矩阵,每个单词是一个维度,计算效率较低。
- 忽略了文本的上下文信息。