词汇A和B的语义相似性:依赖于语料库中A和B的出现频率?

2024-10-01 02:18:37 发布

您现在位置:Python中文网/ 问答频道 /正文

背景:

给定一个语料库,我想用word2wec(Gensim)的实现来训练它。你知道吗

想了解两个标记之间的最终相似性是否取决于语料库中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”在所有上下文中仍像在原始语料库中一样至少被使用一次),那么snd和B之间的相似性会是相同的吗?你知道吗

“A”在上下文中的新分布

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

有什么线索吗


Tags: 标记示例timecontext相似性单词频率背景
3条回答

Gensim实现了两个词向量模型:

  1. 跳过克
  2. CBOW公司

两者的区别在于如何使用特征化和标签来训练单词向量模型。你知道吗

这两个模型都是在令牌上下文上训练的,以便将令牌自动编码到一个连续的语义向量空间中。你知道吗

跳过克

训练的输入是上下文窗口n-grams,而预测的标签是第n个标记。你知道吗

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

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

要预测的标签是

Token_n

CBOW公司

训练的输入是上下文窗口n-grams,而预测的标签是第n个标记。你知道吗

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

Token_n

要预测的标签是

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

目的是什么?你知道吗

显然,这是一个严重的过于简单化,但它帮助我们问,什么是单词向量模型做的?你知道吗

在gensim中实现单词向量模型的目的是什么?你知道吗

这两个模型为给定的标记编码语义上下文。你知道吗

因此,询问模型中有多少相似的单词应该与他们训练的上下文成正比。你知道吗

TL;博士

WV模型在表示中对单词上下文进行编码。你知道吗

因此,词语的相似性并不与它们的数量成正比,而是与它们出现的语境成正比。你知道吗

如果你“精简”了一个单词的示例上下文,而不是其他单词的示例上下文,那么相似度肯定会改变。你知道吗

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

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

它是所有这些更新的聚合效果,经过多次迭代,最终将每个单词的向量推到一个有用的位置,而不是其他向量。(这是改进一些示例和改进其他示例之间的“拉锯战”。)

任何改变例子组合的东西都会改变最终结果。特别是,如果单词A的例子总体上较少,那么使模型在包括A在内的上下文中表现良好所花费的总体训练时间将更少。它的最终位置,以及相关的权重,将更多地受到其他词更多例子的影响。你知道吗

此外,缩小A的例子实际上也改变了它与所有单词的共现率。更少的A上下文意味着A -> BB -> A上下文的数量也会改变,这也会改变单词B的最终位置。这适用于所有其他单词CD,等与A同时出现的词,尤其是当某些上下文比其他上下文更稀疏时。(在A的新发行版示例中,'context 2'出现的频率为5000分之一,而'context 3'出现的频率为1000分之一。)

请注意,在大多数Word2Vec实现中都有一个频繁字下采样功能,通常由名为sample的参数控制,该参数故意丢弃非常频繁字的许多外观。这确实有意地改变了训练语料库中单词的相对频率。你知道吗

与不进行下采样相比,在这里选择一个合适的值有助于速度训练和提高最终单词向量的质量。为什么?一旦你有了成百上千个不同的频繁词的例子,额外的边缘例子并不能帮助你提高这个词的水平,但是它花费了更多的时间,而且总的来说,训练时间的比例更高,从而改善了那些频繁词的模型。这些单词的微小改进,在许多例子中,必然是按照上面描述的过程进行的,而不是用更罕见的例子对更多的单词进行改进。丢弃一些“过度频繁”的单词可以让其他单词对模型的最终状态产生更大的相对影响,甚至可以有效地缩小稀有单词之间的有效上下文距离(当更频繁的中间单词被丢弃时)。你知道吗

我的感觉是(#翻译成直觉,而不是数学):

相似度将根据这两个词彼此接近或在同一上下文中使用的频率来计算。你知道吗

如果你从那里出发:

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

如果使用这两个词时有更多的上下文,那么它们的关系就会更密切。你知道吗

然而,如果它们在语料库中出现的频率较低,而在一起出现的频率较高,它们之间的关系也会更紧密。你知道吗

所以它更像是一个(frequency\u same\u context)/(frequency\u overall)。 如果你不改变,我想你应该没事吧?你知道吗

相关问题 更多 >