混合来自不同模型的单词矢量

时间:2016-06-28 19:37:49

标签: machine-learning nlp neural-network word2vec

在使用Word2Vec寻找使用单词向量表示消除词义的方法时,我想到的一个策略如下:

使用语料库训练模型,在那里您知道感兴趣的单词的感官,在我的情况下,英语单词也是基因名称。 然后,每当感兴趣的段落出现在未知语料库中时,使用带有感兴趣词的段落训练小型模型。 使用此代码段构建的单词向量,比较已知上下文和未知上下文中特定单词的表示,以查看它们在向量空间中的接近程度。

在尝试这种方法时,我注意到即使是在同一语料库中训练的2个模型对于同一个单词也有完全不同的单词表示。换句话说,这两个字向量之间的余弦相似度非常低。

所以我的问题是,这是因为模型以某种方式构建不同的基本向量来表示空间吗?如果是这样,有没有办法在训练期间将这些锁定到欧几里德?或者是由于其他原因造成的差异?

2 个答案:

答案 0 :(得分:1)

添加到lejlot注释:每次运行模型时,它都从不同的随机点开始,结束到不同的局部最优值,因此两个不同的模型无法返回相似的向量,即使您在相同的语料库。你应该期待的是(如果你在相同的语料库上训练模型),单词关系将在模型之间类似,例如' cat'之间的余弦相似度和“狗”#39;在模型1中,类似于模型2中相同单词的余弦相似性。

关于WSI,你的方法无论如何都不会起作用,因为(再次如lejlot所述)它不可能仅使用段落来训练矢量。一个简单的方法(不涉及额外的神经层)是在您训练模型后执行以下操作:

  1. 对于出现目标词的每个句子,创建一个表示上下文的向量(例如,通过在同一个句子中添加所有其他词的向量)。
  2. 使用您最喜欢的聚类算法对这些上下文向量进行聚类,并根据聚类创建有义向量(例如,通过获取每个聚类的质心)
  3. 这种方法是由Hinrich Schutze在20年前开发的,并且仍然是WSI的标准方法,具有分布式意义模型。

答案 1 :(得分:1)

添加到先前的答案&评价:

可能有一定工作机会的技术是,如果您在训练期间保持所有单词向量常量之外的单个感兴趣词的向量 。 (也就是说,使用先前的权重初始化新模型,将所有其他单词锁定在训练变更中,然后使用新文本执行训练,并查看感兴趣的单词 - 感兴趣的移动量。)

对于这样的算法,单个段落仍然是一小部分数据,并且正常的单词使用(即使是单个单词检测)也会有大量不同的上下文。但是这种方法可以帮助抵消串行模型训练中的随机化,并且可以更好地利用微小训练集的限制。