2017-10-20 122 views
1

我正在学习使用TensorFlow教程的Word2Vec。我为Word2Vec运行的代码也来自TensorFlow教程:https://github.com/tensorflow/models/blob/master/tutorials/embedding/word2vec_optimized.py。当我运行15个纪元的代码时,测试精度为30%左右。当我跑100个纪元时,测试精度达到了39%左右。我正在使用Text8数据集进行培训,并使用questions-words.txt进行评估。Word2Vec应该培养多少个时代?什么是推荐的训练数据集?

我是否需要跑更多的时代?我应该使用不同的数据集吗?我怎样才能提高测试的准确性?

回答

0

较大的数据集更好; text8是非常非常小 - 足以显示一些类似字词向量的解决能力,但不足以满足其他目的。

更多的迭代可能有助于从较小的数据集中挤出略强的向量,但收益递减。 (在弱数据集上没有额外的迭代次数可以提取相同的丰富的相互关系,从而可以提供更大,更多样化的语料库。)

从相同的来源获得相关的text9,如果我记得正确的话,大10倍。与使用text8进行10倍以上的迭代相比,使用它可能会获得更好的评估结果。

我相信谷歌曾发布的300万预训练载体 - GoogleNews集合 - 训练了1000亿字的新闻文章的语料库,但只有3次通过。

请注意,单词矢量质量没有单一的标准:questions-words.txt类比解法只是一个方便的评估,但它可能是最好的单词矢量在你自己的领域特定分析中不是最好的。类似地,在文本的一个域上训练的单词向量(如从新闻文章中设置的GoogleNews)可能会比与您的域更好匹配的文本(例如论坛帖子,科学文章等)不同 - 它们都以不同的方式使用不同的单词)。

因此,通常最好使用自己的语料库和自己的目标特定量化评估来帮助调整语料库/参数选择。

+0

谢谢!我会尝试一个更大的数据集。 –

+0

较大的数据集的确提高了测试的准确性。还要感谢关于将数据集和测试与主题材料进行匹配的建议。 –

相关问题