思想简记
NLP中,离散符号化的词语不能包含语义信息,所以把词映射到向量空间。
独热编码(One-Hot Encoding)
思想:将一个词表示成很长的向量,该向量的维度是整个词表的大小。对某一具体词,除了该词编号的维度为1,其余都为0。
词袋模型(Bag-of-Words, BoW)
思想:将文本视为装词的袋子,不考虑词的上下文关系和顺序,只记录每个词在该文本(词袋)中出现的次数。
词向量/词嵌入(Word Embedding)
上面对词的表示方法没有考虑语义层面信息。为表示词与词之间的语义相似程度,提出词的分布式表示,即基于上下文的稠密向量表示法,通常称为词向量或词嵌入(Word Embedding)。
产生词向量的手段:
- Count-based。基于计数的方法,即记录词的出现次数。
- Predictive。基于预测的方法,即可通过上下文预测中心词,又可通过中心词预测上下文。
- Task-based。基于任务的,即通过任务驱动的方法。通过对词向量在具体任务上的表现效果对词向量进行学习。
下面是经典开源工具word2vec中的CBoW模型和Skip-gram模型。
连续词袋模型(Continuous Bag-of-Words, CBoW)
和BoW相同点:不考虑词的顺序。
思想:将上下文词的独热表示与词向量矩阵相乘,提取相应的词向量并求和得到投影层,然后再经过一个Softmax层最终得到输出,输出的每一维表达的就是词表中每个词作为该上下文中心词的概率。整个模型训练时类似于一个窗口在训练语料上滑动,所以得名连续词袋模型。
Skip-gram模型(Continuous skip-gram Model)
思想:与CBoW思想刚好相反,它用中心词来预测上下文词。先通过中心词的独热表示从词向量矩阵中得到中心词的词向量,得到投影层,再经过一层Softmax得到输出,输出的每一维中代表某个词作为输入中心词的上下文出现的概率。
这两种模型都包含三层,输入层、投影层、输出层:
训练好的词向量中,具有一定的空间平移性。
如图,Rome和Italy之间存在is-capital-of关系,而Paris和France也同样存在。可以理解为知识图谱中的relation,即(Rome, is-capital-of, Italy)和(Paris, is-capital-of, France)。
通过两对在语义上关系相同的词向量相减可得相似结果,这种连续向量可近似地平移到其它具有类似关系的两个词向量之间。
如:
vector(‘Paris’) - Vector(‘France’) + Vector(‘Italy’) ≈ Vector(‘Rome’)
论文
Efficient Estimation of Word Representations in Vector Space
Distributed Representations of Sentences and Documents
Enriching Word Vectors with Subword Information