首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统计推理: tf.keras.preprocessing.sequence skipgrams如何以及为什么以这种方式使用sampling_table?

统计推理: tf.keras.preprocessing.sequence skipgrams如何以及为什么以这种方式使用sampling_table?
EN

Stack Overflow用户
提问于 2021-04-24 06:04:54
回答 1查看 59关注 0票数 0

sampling_table parameter仅在tf.keras.preprocessing.sequence.skipgrams方法中使用一次,以测试目标单词在sampling_table中的概率是否小于从0到1 (random.random())的某个随机数。

如果你有一个很大的词汇量,并且一个句子使用了很多不常用的单词,这不是会导致该方法在创建skipgrams时跳过很多不常用的单词吗?给定一个像zipf分布一样呈对数线性的sampling_table的值,这不意味着您可以完全不跳过gram吗?

对此感到非常困惑。我正在尝试复制Word2Vec tutorial的手,我不明白sampling_table是如何被使用的。

source code中,下面是有问题的行:

代码语言:javascript
复制
            if sampling_table[wi] < random.random():
                continue
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-24 06:25:53

这看起来像word2vec实现中常见的频繁词下采样特性。(在最初的Google word2vec.c代码发行版和Python Gensim库中,它是由sample参数调整的。)

在实践中,很可能已经预先计算了sampling_table,所以总是使用最稀有的单词,跳过一些常用单词,跳过很多最常用的单词。

这似乎是comment for make_sample_table()所反映的意图。

您可以继续使用探针值调用它,比如100个单词的词汇表,比如1000,然后看看它返回了什么sampleing_table。我猜想它会是早期接近1.0的数字(省略许多常用单词),而接近0.0的数字(保留大部分/所有稀有单词)。

这往往会提高词向量的质量,因为它将更多的相对注意力保留在中频和低频单词上,而不是过度地过度训练/过度加权大量的单词。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67237327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档