什么是Word2Vec
以下是一个简短的摘要。
Word2vec使用两层神经网络结构来为大量文本数据的语料库生成单词的分布式表达,并在数百维向量空间中表达每个单词的特征。在该向量空间中,假设在语料库中共享公共上下文的词彼此相似,并且将向量分配给这些词,以使它们在向量空间中彼此接近。
上面的内容让我感到高兴的是,结果就像是抓住了这个词的意思一样。例如,这是一个著名的故事,但是您也可以执行以下操作。
King - Man + Woman = Queen
上图更容易理解,但是左图显示的是基于矢量方向上的单词语义信息的关系,对于如右图所示的语法差异问题也很有效。期望将获得结果。
什么是单词的分布式表达
有几种词向量化技术。其中,与单词向量(one-hot表达式)相比,词的分布式表达的优点更容易理解,后者是一种简单的词向量化方法。
one-hot 向量(one-hot 表达,局部表达)
在one-hot向量中,对于一个单词,只有一个单词表示为(1,0,0,0,...,0),其余部分由“ 0”表示。因此,我们处理的单词越多,矩阵将越大且越稀疏。尽管“ 0”部分意义不大,但计算量将增加。
柑橘 = (1,0,0,...,0)
西瓜 = (0,1,0,...,0)
...
另外,我认为余弦相似度通常用于单词向量之间的相似度,但是如果单词向量化中出现的是稀疏矩阵(1和0的组合不重叠),则向量的内积为``由于它变为“ 0”,因此所有单词都不相似。(以下是两个单词向量A和B时用于计算余弦相似度的公式)
顺便说一句,像one-hot 向量一样用一种分配来表达每个概念(橘子,西瓜)的方法称为局部表达。
单词的分布式表示
另一方面,在分布式表达中,一个单词由多个元素表示如下。据说这在捕获单词的含义方面是有效的。同样,当处理大量单词时,减少维数是一个很大的优势。
橘子 | 西瓜 | |
---|---|---|
厂 | 0.95 | 0.95 |
水果 | 0.96 | 0.88 |
蔬菜 | 0.55 | 0.83 |
... | 0.07 | 0.80 |
Word2Vec模型类型
Word2Vec模型有两种类型,即CBOW和skip-gram,它们均由两层神经网络组成(输入层,中间层,输出层)。
- CBOW
- skip-gram
CBOW
如上所述,CBOW根据上下文(周围的单词)预测目标单词。顺便说一句,这里使用的文本是“You can do it!”。
它是一个学习模型,以上下文作为输入值来最大化目标词的后验概率。大致在如上图所示的图像中,输入值以one-hot 向量的形式输入,并且在中间层获得单词的分布式表示。在此,目标词是“can”,因此检查了预测输出结果(概率)与正确答案值(1)(1-0.93)之间的差异,并通过更新权重执行学习,以使误差变小。
skip-gram
接下来是skip-gram,这是一个根据中心单词预测上下文(周围单词)的模型。
简而言之,它是反转CBOW的图像。到目前为止,我看到的两个模型都使用神经网络(它模仿人脑的神经细胞),因此当人出现带有可疑记忆的单词时考虑到有待猜测的地方,人脑可能以类似的机制主导结果。
总结
我尝试将其粗略地组合在一起。更详细内容请自行搜索相关论文和评论文章。示例代码:https://github.com/nlp1567/word2vec-pytorch/blob/master/01-word2vec-pytorch.ipynb
网友评论