迄今为止,词向量训练技术已经发展得较为成熟。最初出现的编码方式为独热(onehot)编码,该方法将每个词对应索引位置设置为1,其余位置为0。这种方式简单,但是词表中词与词之间相互独立,无任何语义关系。共现矩阵则通过统计语料库中某个词与指定窗口内词语共同出现的次数来为该词编码,虽然相较于独热编码在表示词之间关系上有了一定的改善,但是无法真正的理解词之间的高层语义关系。而且这两种离散式编码方式均受到词表规模的影响,词向量表示过于稀疏,易造成维度灾难。分布式编码源于1957年Firth所提出的分布式假说,该假说认为一个词的语义信息由其周围词刻画[3]。1986年Hinton首次提出分布式词向量[4],即用低维的稠密向量表示一个词。2013年Mikolov提出两种利用目标词上下文信息表示该词的语言模型(CBOW和Skip-gram)[5]。2014年,Pennington为了捕捉词向量的全局信息,提出另一套基于共现矩阵的分布式词向量训练方法[6]。由于这两种词向量均是基于词级别的,为解决新生词(OOV)的问题,Junyoung Chung提出一种基于字符的词向量训练方法[7]。以上均为静态词向量,即一个词只对应一个词向量,为实现同一个词在不同语境下可以拥有不同含义,文献[8]中提出了动态词向量的训练方法 ELMo。之后,双向预训练语言模型BERT[9]改进了ELMo由于单方向训练损失下文特征的问题。后续的工作出现了大量基于BERT的变种。