如何在text2vec中对齐两个GloVe模型?

时间:2016-11-19 20:17:12

标签: matrix nlp text2vec

假设我已根据两个不同的语料库训练了两个单独的GloVe向量空间模型(在text2vec中使用R)。这样做可能有不同的原因:例如,两个基础语料库可能来自两个不同的时间段,或两个非常不同的类型。我有兴趣比较这两个语料库之间的单词的用法/含义。如果我简单地连接两个语料库及其词汇表,那就行不通(对于具有不同用法的单词对,向量空间中的位置只会在"中间"中的某个位置)。

我最初的想法是只训练一个模型,但在准备文本时,为每个单词添加后缀(_x,_y)(其中x和y代表在词库x / y中使用单词A),如保留每个语料库的单独副本,不带后缀,以便最终连接的训练语料库的词汇表包括:A,A_x,A_y,B,B_x,B_y ......等,例如:

this is an example of corpus X
this be corpus Y yo
this_x is_x an_x example_x of_x corpus_x X_x
this_y be_y corpus_y Y_y yo_y

我认为"意思是" A和B的用法将作为"坐标"空间,我可以测量同一空间中A_x和A_y之间的距离。但后来我意识到,因为A_x和A_y永远不会出现在相同的上下文中(由于所有单词的后缀,包括它们周围的单词),这可能会扭曲空间而不起作用。我也知道有一种称为正交procrustes问题,它涉及对齐矩阵,但我不知道如何为我的情况实现它。

如果我的最终目标是测量,那么将两个GloVe模型(最好是R并且使它们与text2vec一起使用)拟合到一个公共向量空间中的合理方法是什么单词对的余弦相似度,它们在正字法上是相同的,但是出现在两个不同的语料库中?

1 个答案:

答案 0 :(得分:0)

我看到了两种可能的解决方案:

  1. 尝试用第一个解决方案初始化第二个手套模型,并希望在第二个模型的拟合过程中坐标系不会改变太多
  2. 拟合两个模型并获得单词矢量矩阵A,B。然后找到旋转矩阵,最小化A和B行之间的角度总和(不知道该怎么做)
  3. 同时检查http://nlp.stanford.edu/projects/histwords/,mb对方法论有帮助。

    似乎这是https://math.stackexchange.com/

    的一个很好的问题