本文主要探讨了词向量表示技术的发展历程。早期的词编码表示方法在处理词序信息和反义词相似性方面存在诸多不足。为了克服这些问题,本文介绍了经典的词向量表示方法——word2vec。
在后续的学习中,我们接触到了神经网络语言模型,这种模型能够生成词向量作为副产品。2013年,word2vec被提出,成为当时利用语言模型进行词嵌入的最佳工具之一。尽管word2vec和NNLM在网络结构上有相似之处,但它们的训练方法却有所不同。NNLM通过前t-1个词来预测第t个词,而word2vec则提供了两种不同的方法。
CBOW的核心思想是从一个句子中去掉一个词,然后用这个词的上下文来预测这个被去掉的词。
Skip-gram则与CBOW相反,它输入一个词,然后要求模型预测这个词的上下文词。
通过这两种方法,word2vec能够生成词向量作为副产品,这些词向量能很好地表示词的语义信息。
word2vec有两种主要模式:CBOW和Skip-gram。CBOW通过上下文预测中心词,而Skip-gram则是通过中心词预测上下文词。这两种方法结合起来,可以生成词向量,从而表示词的语义信息,使语义相似的词在向量空间中的距离较近。
例如,"Kitty climbed the tree" 和 "Cat climbed the tree" 这两句话中,除了第一个词外其他部分完全相同,因此可以认为这两个词有相反的上下文。而 "cat" 和 "kitten" 在语义上非常接近,它们学习出的词向量距离也会非常近。
word2vec的强大之处在于,当使用大量数据训练出词向量后,可以发现 "king-man" 的距离几乎与 "queen-woman" 的距离相仿,这体现了它的强大功能。
例如,在句子中,如果两个词的上下文相似,那么它们的词向量也会相近。这种特性有时有用,有时也有局限,因为某些情况下意义可能并不相同。
例如,如果一个词的上下文与另一个词的上下文相似,那么这两个词的词向量也会相似。然而,这种特性也可能导致一些问题,比如词序的变化可能影响句子的实际含义。
例如: - “我欠你100块钱” 和 “你欠我100块钱” 尽管上下文相同,但两句话的意思不同,因此虽然word2vec考虑了词的位置信息,但它并没有很好地考虑到语序的影响。