自然语言处理篇:文字向量化的方法
自然语言处理篇:文字向量化的方法
在自然语言处理领域,文字向量化是将文本转换为计算机可以理解的数字形式的关键技术。本文将详细介绍两种主要的文字向量化方法:词袋模型和词嵌入模型,帮助读者理解它们的原理、构建方法以及优缺点。
一、词袋模型
1. 什么是词袋模型
词袋模型是一种基于统计学原理的文本表示方法,它初步解决了文字向数值转化的问题。在词袋模型中,文本会被表示为一个词频向量。
2. 如何构建词袋模型
(1)构建词袋
比如我们有3句话,分别是:
i can swim
i love you
long time no see
很明显,我们可以将这3句话里面每个词都给拿出来,形成一个不重复的集合,那么这个集合(词袋)所包含的词汇如下:
(i can swim love you long time no see)
(2)文本向量化
根据这个词袋的容量将每句话给向量化出来,结果如下:
"i can swim"向量就是: [1,1,1,0,0,0,0,0,0]
"i love you"向量就是: [1,0,0,1,1,0,0,0,0]
"long time no see"向量就是:[0,0,0,0,0,1,1,1,1]
在文本向量化之后,无论做文本分类(垃圾邮件识别)还是情感分析等模型,都可以根据自己想法去实现。
3. 词袋模型的优缺点
(1)优点
- 简单易用:词袋模型原理直观,容易理解,实现方便
- 快速高效:由于词袋模型忽略了词汇间的顺序和语法结构,所以词袋模型计算速度快
(2)缺点
- 丢失语序信息:词袋模型忽视了词汇间的顺序关系,可能无法捕捉到依赖于顺序的语义
- 缺乏语义信息:词袋模型中每个词被视为独立的实体,即使含义相近的词(如“快乐”与“愉快”)在向量空间中也表现为正交,无法通过向量的距离或相似度来衡量它们的语义相似性
- 高维空间问题:在词汇量大的情况下,词袋模型会导致高维空间问题,增加计算复杂度
- 未考虑词形变化和词义消歧:词袋模型没有考虑词汇的不同形态和词义的多样性
总结:词袋模型是文本向量化最简单的一种方式。
二、词嵌入模型
1. 什么是词嵌入模型
词嵌入(Word Embedding)是一种自然语言处理技术,主要起到两个作用:
(1)文字转化为有限的m维向量(常见的就是300维),避免维度灾难
(2)捕捉词与词之间的语义和句法关系
词嵌入的训练基于一个假设:上下文中相似的词有相似的语义。
我们想要达到的效果如下:
在英文情况下,has、have应该保持较高的相似性(has、have是一个词的不同表达)。
在中文情况下,上海、北京、深圳等应该保持较高的相似性(都是城市这一类别)。
我们可以这么类比着去理解词嵌入:一个人可以用身高、体重、性别、年龄等数值特征进行描述,一个词也可以用不同的数值来描述这个词各个方面的特征,数值组合起来的结果就是词向量。
2. 词嵌入向量如何生成
词嵌入模型由于需要大量语料与资源,所以一般由大公司训练,我们直接采用其训练好的向量结果即可。
常见的词嵌入模型:
(1)Word2Vec:由Google提出,包括CBOW和Skip-gram两种模型。CBOW是基于上下文预测目标词,而Skip-gram则是基于目标词预测上下文。
(2)GloVe:由Stanford提出,它利用了全局的词共现矩阵进行训练,试图平衡局部上下文与全局统计信息。
由于后续Transformer等模型的提出与应用,修补了Word2Vec这类词嵌入模型的缺点,所以此处就不再谈词嵌入模型的具体训练方法。
以Word2Vec为例,我们来看下训练后的词向量结果:
可以看到,在对高维词向量降维之后能够发现:相似的词距离更近。比如cat与cats,dog与dogs,king与man,queen与woman等。
这就说明:Word2Vec在一定程度上能够解释单词间复杂的关系,如同义词、反义词和关联词。
3. 词嵌入模型的作用
(1)降低模型维度
相较于词袋模型动辄千维、万维的向量,词嵌入模型已经将词的维度压缩到300维的低维向量。
(2)捕获语义信息
词嵌入能够捕捉词语的语义特征,使得具有相似意义的词语在向量空间中距离较近。“猫cat”和“小猫kitten”的词嵌入向量会比“猫cat”和“房子houses”的向量更接近。
(3)向量运算能够得到有意思的结果
由于这些词本质上还是向量,在进行向量运算时可以发现有意思的事儿:
向量King - 向量Man ≈ 向量Woman - 向量Queen
这就表示:词嵌入模型确实学到了词与词之间的关系。
4. 词嵌入模型的优缺点
(1)优点
- 计算效率:相比于词袋模型,词嵌入使用较低维度的向量表示单词,减少了计算和存储的复杂性
- 语义相似性:词嵌入模型能够将语义上相似的词映射到向量空间中相近的位置,这有助于捕捉词的语义信息
- 通用性:词嵌入模型生成的向量可以广泛应用于不同的自然语言处理任务,如文本分类、情感分析等
(2)缺点
- 无法表示词表以外的词:传统的词嵌入模型通常无法处理未见过的词或新词
- 忽略词序和长距离依赖:词嵌入模型依然是多个向量的堆叠,但是实际文本是有顺序的,词嵌入无法捕捉顺序带来的关系
- 训练数据的偏见:词嵌入模型的性能很大程度上依赖于训练数据的质量和多样性,数据中的偏见可能会被嵌入到向量中
总结:词嵌入模型可以很好的表达词本身所代表的含义。
对于词嵌入所存在的问题,将在Transformer模型中得到较好的解决。