1. 什么是词嵌入(Word Embedding)
⾃然语⾔是⼀套⽤来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是⽤来表⽰词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌⼊(word embedding)。近年来,词嵌⼊已逐渐成为⾃然语⾔处理的基础知识。
在NLP(自然语言处理)领域,文本表示是第一步,也是很重要的一步,通俗来说就是把人类的语言符号转化为机器能够进行计算的数字,因为普通的文本语言机器是看不懂的,必须通过转化来表征对应文本。早期是基于规则的方法进行转化,而现代的方法是基于统计机器学习的方法。
数据决定了机器学习的上限,而算法只是尽可能逼近这个上限,在本文中数据指的就是文本表示,所以,弄懂文本表示的发展历程,对于NLP学习者来说是必不可少的。接下来开始我们的发展历程。文本表示分为离散表示和分布式表示:
2.离散表示
2.1 One-hot表示
One-hot简称读热向量编码,也是特征工程中最常用的方法。其步骤如下:
- 构造文本分词后的字典,每个分词是一个比特值,比特值为0或者1。
- 每个分词的文本表示为该分词的比特位为1,其余位为0的矩阵表示。
例如:John likes to watch movies. Mary likes too
John also likes to watch football games.
以上两句可以构造一个词典,{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "games": 8, "Mary": 9, "too": 10}
每个词典索引对应着比特位。那么利用One-hot表示为:
John: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
likes: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0] .......等等,以此类推。
One-hot表示文本信息的缺点:
- 随着语料库的增加,数据特征的维度会越来越大,产生一个维度很高,又很稀疏的矩阵。
- 这种表示方法的分词顺序和在句子中的顺序是无关的,不能保留词与词之间的关系信息。
2.2 词袋模型
词袋模型(Bag-of-words model),像是句子或是文件这样的文字可以用一个袋子装着这些词的方式表现,这种表现方式不考虑文法以及词的顺序。
文档的向量表示可以直接将各词的词向量表示加和。例如:
John likes to watch movies. Mary likes too
John also likes to watch football games.
以上两句可以构造一个词典,{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "