Vector 用于局部单词嵌入的全局单词嵌入

Vector 用于局部单词嵌入的全局单词嵌入,vector,word2vec,word-embedding,python-embedding,Vector,Word2vec,Word Embedding,Python Embedding,想象一下,根据一些标准,我们有三个向量(vec1,vec2,vec3)表示国王,我们称这三个向量为国王的局部向量。哪种方法足以从这三个可用于下游任务的局部向量(vec1、vec2、vec3)生成单词king的全局(单个或唯一)向量。 有三种可能的选择: Concat(vec1, vec2, vec3) average(vec1, vec2, vec3) sum(vec1, vec2, vec3) 是否足够?为什么? 有参考资料吗?您没有说明这3个向量是如何创建的,这很重要。如果创建它们的

想象一下,根据一些标准,我们有三个向量(vec1,vec2,vec3)表示国王,我们称这三个向量为国王的局部向量。哪种方法足以从这三个可用于下游任务的局部向量(vec1、vec2、vec3)生成单词king的全局(单个或唯一)向量。 有三种可能的选择:

Concat(vec1, vec2, vec3) 
average(vec1, vec2, vec3) 
sum(vec1, vec2, vec3) 
是否足够?为什么?
有参考资料吗?

您没有说明这3个向量是如何创建的,这很重要。如果创建它们的方法意味着它们在某种重要意义上共享“相同的坐标系”,那么将它们相加或求平均值可能是合适的

但是,如果它们是以不相关的方式推导出来的,因此它们各自的坐标不是同一个自洽/可比系统的一部分,那么串联就更有意义,保留它们各自的信息——将所有这些信息转发给下游步骤,而不需要对什么更重要进行任何假设,也不允许从无关坐标系的随机/任意交互中“取消”位置信息

此外,如果
vec1
vec2
vec3
具有不同的维度,则串联始终有效,但求和/平均无效


(如果您能提供更多关于
vec1
vec2
vec3
不同来源的具体信息,我可能会给出更多的理由)

谢谢。假设我们有三个数据集d1,d2,d3。国王这个词在所有三个数据集中都很常见。我们想在这三个数据集中跟踪单词king的语义变化。为此,我们必须根据每个数据集中与术语king同时出现的上下文向量,为术语king生成三个不同的语义向量。所以,我们给v1,v2,v3分配一个初始唯一的随机向量。我们通过分别浏览d1、d2、d3来更新这三个向量。如果您单独训练这三个数据集,而不需要任何努力使它们“对齐”,各种随机化源可以将
king
向量发送到任意不同的结束位置,即使事实上它有本质上或相同的含义。(你甚至会看到使用完全相同的数据重复训练。确保相同的初始化可能会抵消这一点,但以不可量化的方式,这样我就不想指望了。)在这种情况下,你可能想学习独立空间之间的转换,也许基于对……锚定词的一些选择,你有理由认为这些锚定词在数据集之间的意义不会改变。gensim中有一个类
TransformationMatrix
,带有一个示例笔记本,可以学习这样的映射,这对机器翻译也很有用。或者,考虑到word2vec模型需要大量数据,并且您希望大多数单词在不同的数据集中是相似的,您可以在一个模型中训练所有单词,但对于在不同示例中可能具有不同含义的单词,有时会使用另一个特定于数据集的标记。在前面的回答中,有一些关于这方面的想法:谢谢你的评论。