如何解决统计推理: tf.keras.preprocessing.sequence skipgrams 如何以及为什么以这种方式使用sampling_table?
sampling_table parameter
只在 tf.keras.preprocessing.sequence.skipgrams
方法中使用一次,以测试 sampling_table
中目标词的概率是否小于某个从 0 到 1 的随机数({ {1}})。
如果你有一个很大的词汇量并且一个句子使用了很多不常用的词,这会不会导致方法在创建skipgrams时跳过了很多不常用的词?给定对数线性的采样表的值,就像 zipf 分布一样,这是否意味着您最终可以完全没有跳跃克数?
对此感到非常困惑。我正在尝试复制 Word2Vec tutorial 手不明白或如何使用 random.random()
。
在 source code 中,这是有问题的行:
sampling_table
解决方法
这看起来像 word2vec 实现中常见的频繁词下采样功能。 (在原始 Google word2vec.c
代码版本和 Python Gensim 库中,它由 sample
参数调整。)
实际上,很可能已经预先计算了 sampling_table
,以便始终使用最稀有的词,跳过一些常用词,跳过一些最常用的词。
这似乎是 comment for make_sample_table()
所反映的意图。
您可以继续使用探测值调用它,例如对 100 个单词的词汇表说 1000,然后看看它返回什么 sampleing_table
。我怀疑它会在早期接近 1.0
(删除大量常用词),并接近 0.0
晚期(保留大多数/所有稀有词)。
通过为中频和低频词保留更多的相对注意力,而不是过度训练/过度加权大量词,这往往会提高词向量的质量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。