假设我已经训练了两个独立的 GloVe 向量空间模型(使用text2vec
in 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 永远不会出现在同一上下文中(由于所有单词的后缀,包括它们周围的单词),这可能会扭曲空间并且不起作用。我还知道有一个叫做正交普鲁斯特问题,它与对齐矩阵有关,但我不知道如何在我的情况下实现它。
适合两个 GloVe 模型的合理方法是什么(最好是在R
以便他们与text2vec
)进入一个公共向量空间,如果我的最终目标是测量单词对的余弦相似度,这些单词对在拼写上相同,但出现在两个不同的语料库中?
我看到两种可能的解决方案:
- 尝试使用第一个模型的解决方案初始化第二个手套模型,并希望坐标系在第二个模型拟合期间不会发生太大变化
- 拟合两个模型并得到词向量矩阵 A、B。然后找到最小化 A 和 B 行之间的角度之和的旋转矩阵(还不知道如何做到这一点)
另请检查http://nlp.stanford.edu/projects/histwords/ http://nlp.stanford.edu/projects/histwords/,mb它将有助于方法论。
看来这是一个很好的问题https://math.stackexchange.com/ https://math.stackexchange.com/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)