首页 > 编程知识 正文

word2vec训练(doc2vec文本相似度)

时间:2023-05-05 16:54:28 阅读:85557 作者:4896

1、前言

word2vec是谷歌2013年推出的将文本量化为单词向量的工具,以量化所有单词为特征,可以定量测量单词和单词之间的关系,挖掘单词之间的联系。

2、词的表示

(1 (一)一热

“一热代码”(One-hot Representation )最常见的单词表示方法是将每个单词表示为一个长向量。 这个向量的维度是同义词库大小,其中大部分元素为0,只有一个维度的值为1,这个向量表示当前的词。

例如:“‘我’、‘爱’、‘中国’”

One-hot为“我”:“1,0,0”、“爱”:“0,1,0”、“中国”3360 [ 0,0,1 ]

分析缺点:

1、随着句子词的数量类型变大,向量的维数变大

2、任意两个词之间是孤立的,无法表示语义层面上词汇间的相关信息。

)词的分散表示

分布式re presentation可以解决One hot representation的问题,其思路是通过训练将各个词映射为短词向量。 的这些词向量都构成向量空间,进而可以用一般的统计学方法研究词与词的关系。 这个短语的向量维度是多少? 这一般需要我们训练的时候自己指定。

例如,在下图中,词汇表的单词由“Royalty”、“Masculinity”、“Femininity”、“age”四个维度表示。 与漂亮裙子这个单词相对应的单词向量可能是“0.99,0.99,0.05,0.7”。 当然,实际上,并不能很好地说明单词向量的各个维度。

传统的独热意味着只将单词符号化,不包含语义信息。 怎样将意思融入单词表达中呢? Harris在1954年提出的“分布假说”为这一构想提供了理论基础。 语境相似的词,意思也相似。 Firth在1957年进一步论述了分布假说,明确了语言的意义由其语境决定。

以(CBOW )为例,如果有“the cat sits one the mat”这个句子,在训练的时候输入“the cat sits one the”,预测最后一个词是“mat”。

方差表示的一大优点是,n维向量的每一维k个值具有非常强的表示能力,例如可以表示k的n次方个的概念。 下图的神经网络语言模型(NNLM )采用文本分布式表示。 词向量(word embedding )是训练其语言模型的附加产物,是图中的矩阵c。

我们的任务可以分为两部分:

1 )选择描述上下文的方法;

(2)某个词(即宾语) )和其语境的关系的“模型”。

因此,出现了几种文本表示方法,从tdggx的NNLM到Word2vec、glove、Fasttext到现在的End2End,文本表示方法发生了很大的变化。

3、 word2vec

Word2vec包括两种培训方式连续世界模型(Cbow )。

连续跳过模型(kip-gram模型)。

CBOW :预测当前单词的上下文

Skip-gram :当前单词预测上下文

关于word2vec,需要理解网络结构、jydlc代码、jydlc树、n-grams以及word2vec两大途径: Hierarchical Soft max和否定样本

4、两个trick

(1)层次结构软件最大值

已知jydlc树是加权路径最短的树,在一般的神经网络语言模型中,在预测时输出预测宾语的概率(由于每次预测都基于所有的数据集合进行计算,所以有很大的时间开销) Hierarchical Softmax是一种优化输出层的策略,该输出层已从使用原始模型的softmax计算概率值改为使用Huffman树计算概率值。 最初位于叙词表上

全部词作为叶子节点,词频作为节点的权,构建Huffman树,作为输出。从根节点出发,到达指定叶子节点的路径。Hierarchical Softmax正是利用这条路径来计算指定词的概率,而非用softmax来计算。 即Hierarchical Softmax:把 N 分类问题变成 log(N)次二分类。

jydlc构造

(2)Negative Sampling

Negative Sampling(简写NEG,负采样),这是Noise-Contrastive Estimation(简写NCE,噪声对比估计)的简化版本:把语料中的一个词串的中心词替换为别的词,构造语料 D 中不存在的词串作为负样本。在这种策略下,优化目标变为了:较大化正样本的概率,同时最小化负样本的概率。这样说大家可能已经糊涂了,我们省去繁琐的数学推倒,这里举一个例子:

假设有一个句子为:“The quick brown fox jumps over the lazy dog.“

如果我们用skip-gram model ,貌似这是一个很大的网络。

注意:比如像“the”这种常见的词,我们会遇到两个问题:

1) 比如(fox,the)其实没有传递我们关于 fox的信息。‘the‘出现得太多了。

2)我们有太多(‘the’,…)的样本,多于我们实际需要的。

所以word2vec采用了降采样的策略。对于每个我们在训练样本中遇到的词,我们有一个概率去删除它。这个概率与单词出现的频率相关。

如果我们采用window size = 10,同时我们删除‘the’:

1) 当我们再去训练剩下的词,我们就不会再遇到‘the’了;

2)我们减少了10个包含‘the’的样本

这其实就是‘NEG’的核心思想。

5、总结

word2vec篇幅比较大,因此一篇文章不能完全表述,因此将通过几篇文章几个点来说明,本文是Word2vec的一个综述,总之,词嵌入一种很重要的思想,word2vec更是这里面最有代表性的一种算法之一。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。