单词A和B之间的语义相似性:语料库中A和B频率的依赖性?

问题描述 投票:1回答:3

背景 :

给定一个语料库我想用word2wec(Gensim)实现它。

想要了解2个令牌之间的最终相似性是否取决于语料库中的A和B的频率(保留所有上下文),或者它是否不可知。

示例:(可能不太理想,但用它来详细说明问题陈述)

假设单词'A'正在语料库中的3个不同的上下文中使用:

Context 1 : 1000 times
Context 2 : 50000 times
Context 3 : 50000 times

'B'用于两种不同的环境:

Context 1 : 300 times 
Context 5 : 1000 time

题 :

如果我改变语料库中'A'的频率(确保没有上下文丢失,即'A'在原始语料库中的所有上下文中仍然至少使用一次),A snd B之间的相似性是是相同的 ?

跨越背景的新“A”分布

 Context 1 : 5 times
 Context 2 : 10 times
 Context 3 : 5000 times

任何线索赞赏

python nlp gensim word2vec word-embedding
3个回答
0
投票

我的感觉是(#translate到直觉,而不是数学):

相似性将根据这两个单词彼此接近或在相同上下文中使用的频率来计算。

只要你去那里:

如果这两个词实际上相似,那么它们的使用频率越高=>您拥有的训练数据越多=>模型越好=>它们越接近。

如果你有更多的背景,那么这两个词被使用,那么他们的关系将更加接近。

然而,如果它们在语料库中出现的频率较低,但更常见的是,它们的关系也会更紧密。

所以它更像是(frequency_same_context)/(frequency_overall)。如果你不改变它,我猜你应该没问题?


0
投票

Gensim实现了两个单词矢量模型:

  1. 跳过克
  2. CBOW

两者之间的区别在于如何使用特征和标签来训练单词矢量模型。

两个模型都在令牌上下文上进行训练,以将令牌自动编码到连续的语义向量空间中。

skip-gram

训练的输入是上下文窗口n-gram,而预测的标签是第n个标记。

如果我们使用了一个bigram上下文窗口,输入向量将使用标记;

[Token_(n-2), Token_(n-1), Token_(n+1), Token_(n+2)]

而预测的标签将是

Token_n

CBOW

训练的输入是上下文窗口n-gram,而预测的标签是第n个标记。

如果我们使用了一个bigram上下文窗口,输入向量将使用该标记;

Token_n

而预测的标签将是

[Token_(n-2), Token_(n-1), Token_(n+1), Token_(n+2)]

what's the purpose?

显然这是一个粗略的过度简化,但它有助于我们问,矢量模型这个词有什么作用?

在gensim中实现的单词矢量模型的目的是什么?

这两个模型为给定令牌编码语义上下文。

因此,询问模型中的相似词应该与他们训练的上下文成比例。

TL;DR

WV模型在表示中编码单词上下文。

因此,单词的相似性与它们的计数不成比例,而是与它们出现的上下文成正比。


0
投票

如果你“减少”一个单词的示例上下文的数量,而不是其他单词,则相似性肯定会改变。

Word2Vec依赖于许多不同的单词用法示例。培训过程仅考虑一次同时出现的单个例子。 (在流行的skip-gram模式中,只有单个context-word -> target-word示例。)。

训练反复向神经网络呈现单个上下文,检查网络沿着一些有趣的小路径子集的响应,并通过改变网络的内部权重和“投影权重”来略微推动网络做得更好。定义一个单词的向量。

与其他向量相比,在多次迭代中,所有这些更新的总体效果最终将每个单词的向量推送到有用的位置。 (在改进一些例子和改进其他例子之间,这是一场“拉锯战”。)

任何改变所用示例组合的内容都会改变最终结果。特别是,如果整体上单词A的例子较少,那么将花费较少的整体训练时间使该模型在包括A在内的情境中表现良好。它的最终位置和相关权重将受到其他词语“更多例子”的影响。

此外,减少A的例子也实际上改变了它的共生率与它曾经共同训练的所有单词。更少的A背景意味着A -> BB -> A背景的数量也将改变,这也将改变B这个词的最终位置。这与CD等与A共同出现的所有其他词语相同,尤其是当某些语境比其他语境更薄时。 (因为,在你的A新发行版的例子中,'context 2'经常出现1/5000,但'context 3'经常出现1/10。)

请注意,在大多数Word2Vec实现中都存在频繁的单词下采样功能,通常使用名为sample的参数进行控制,该参数故意丢弃非常频繁的单词的许多外观。这有意地改变了训练语料库中单词的相对频率。

与非下采样相比,这里精心选择的值往往既可以加速训练,又可以提高最终字矢量的质量。为什么?一旦你有数百或数千个频繁单词的不同例子,那么额外的边缘例子并没有帮助改善这个词 - 但它需要更多的时间,而且整体训练时间的比例更高,改善了那些人的模型经常说话。在许多例子中,这些词语“微小的改进”必然是按照上面描述的过程进行的,而不是用更少的例子来改进更多的词。丢弃一些“过于频繁”的单词会让其他单词对模型的最终状态产生更大的相对影响,甚至可以有效地缩小稀有单词之间的有效上下文距离(当更频繁的插入单词被删除时)。

© www.soinside.com 2019 - 2024. All rights reserved.