Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nlp 我们可以使用迁移学习比较不同模型中的词向量吗?_Nlp_Word2vec_Glove - Fatal编程技术网

Nlp 我们可以使用迁移学习比较不同模型中的词向量吗?

Nlp 我们可以使用迁移学习比较不同模型中的词向量吗?,nlp,word2vec,glove,Nlp,Word2vec,Glove,我想在不同的语料库上训练两个单词2VEC/手套模型,然后比较单个单词的向量。我知道这样做是没有意义的,因为不同的模型从不同的随机状态开始,但是如果我们使用预先训练好的词向量作为起点呢。我们是否可以假设这两个模型将通过合并各自的领域特定知识继续建立在预先训练的向量上,而不是进入完全不同的状态 试图找到一些讨论这个问题的研究论文,但没有找到。简单地用预先训练过的BECTOR开始你的模型可以消除一些随机性,但是在你的新语料库上的每个训练阶段: 如果使用默认模式,负采样、如果使用word2vec中样本参

我想在不同的语料库上训练两个单词2VEC/手套模型,然后比较单个单词的向量。我知道这样做是没有意义的,因为不同的模型从不同的随机状态开始,但是如果我们使用预先训练好的词向量作为起点呢。我们是否可以假设这两个模型将通过合并各自的领域特定知识继续建立在预先训练的向量上,而不是进入完全不同的状态


试图找到一些讨论这个问题的研究论文,但没有找到。

简单地用预先训练过的BECTOR开始你的模型可以消除一些随机性,但是在你的新语料库上的每个训练阶段:

如果使用默认模式,负采样、如果使用word2vec中样本参数的默认值,频繁的字下采样以及不同线程的相互作用仍然会引入随机性 每个新语料库的时代都会将当前单词的单词向量拉到新的、更好的位置,但保留原始单词不变。由于整个语料库对所有单词的影响,跨越多个时代的网络移动可以任意地将单词移动到远离起始位置的地方。 因此,这样做不一定能以可靠或理论上合理的方式实现您的目标,尽管它可能会起到一定的作用——至少比从纯粹的随机初始化开始要好——特别是如果您的语料库很小,并且您很少进行训练。这通常不是一个好主意——你需要大量不同的训练数据和足够多的传球来获得额外的传球,从而产生微小的增量差异。但是,在这种情况下,错误地执行这些操作可能会使您的结果看起来更好,因为您不希望您的培训过多地更改原始坐标空间。我不会依赖这种方法

特别是如果你需要比较的单词只是整个词汇表的一小部分,你可以考虑以下几点:

将语料库合并成一个训练语料库,并将其混合在一起,但对于那些需要比较的单词,请使用特定于语料库的标记替换它们。例如,将“sugar”替换为“sugar_c1”和“sugar_c2”——让周围的绝大多数单词都是相同的标记,从而在整个语料库中学习单个向量。然后,同一单词的两个变体标记将根据它们仍然共享许多相同标记的不同上下文学习不同的向量

使用一些你知道的或自信推测的锚定词集,在两种上下文中都是相同的意思,或者应该是相同的意思,训练两个模型,但学习基于这些引导词的两个空间之间的转换。然后,当你将这种转换应用到其他单词上时,这些单词没有被用来学习转换,它们会在彼此的空间中处于不同的位置,也许可以实现你需要的比较。这是一种用于语言到语言翻译的技术,Python gensim库中包含了一个和

可能还有其他更好的方法,这只是两个快速的想法,可能不会对现有库进行太多更改。像这样的一个项目,它使用词向量训练来跟踪词义随时间的变化,也可能有可用技术的想法