Word2Vec在Tensorflow上的版本以及与Gensim之间的运行对比

2022-02-05

接昨天的博客,这篇随笔会比较不同算法版本下运行算法的结果。在运行过程中,我对参数调整和迭代决策的经验不是很好,希望大家在展示运行参数和结果的同时批评和指正。感谢您的支持!

对比背景:

比较实验中使用的所有文本8.txt 文件均可免费下载。在这里下载。训练时word的维数调整为200,除了.py版本的步长,其余都是15。运行结果除了基础版本使用 -words.txt文件计算准确率。精度计算文件的格式是每行四个字。计算准确率时,系统选取前三个词的向量,计算从词2-词1+词3得到的向量,通过该方法搜索最接近的词。并选择top N(N为自定义量,一般为1或4),查看-words中每一行的第四个词是否存在于top N个词中。另外,操作结束后,,我还根据论文中的提示,使用了几种常见的向量算术测试来测试各个模型的准确性。我使用的测试是:

1.,巴黎,,中国或,巴黎,罗马,

2.男人,国王,女人,王后

3. 慢,,快,

等等……

比较结果:

框架:

1..py:

图片[1]-Word2Vec在Tensorflow上的版本以及与Gensim之间的运行对比-唐朝资源网

.py 是概念阐述示例的正式版代码。这段代码以最简单的方式实现了一些主要功能,即 Skip-Gram 模型和加速分类算法。设置word维度为200,num step为 后,运行结果如下:

从上图可以看出,词向量是init,所以他认为六是相似或相似。另外,在init的时候,loss的数量是302.11。 200,000 次迭代后,损失为 4.96。此时的测试结果如下:

我们可以看到此时类似于六的词有七、五、四、八,类似于has的有had、have等。这个结果初步证明了系统学习到了一些特征,但是一些词如 all 对应的词是,这个意思不明确的词与明显的意思无关。所以可以看出系统并不完善,但是简单的单词先学起来比较容易。此外,从第 200,000 步到第 400,000 步,我们发现损失没有显着降低。训练结束时,结果如下所示:

北美环境也有一些类似的组件,所以可以看出系统越差越好。同时,i本身作为罗马数字的一面(即ii)和作为我的一面(即我们)也得到了很好的展示。这个结果是肯定的,因为系统其实已经变好了。但是直到步,loss仍然停留在4.52左右,和的4.96相差不大,可见学习进入了区域。

但最终系统从单词的含义开始 语音的结果是什么?我们通过以下实验为您证明。具体代码如下:

# Testing final embedding
input_dictionary = dict([(v,k) for (k,v) in reverse_dictionary.iteritems()])

图片[2]-Word2Vec在Tensorflow上的版本以及与Gensim之间的运行对比-唐朝资源网

#找寻france, paris和rome的word index test_word_idx_a = input_dictionary.get('france') test_word_idx_b = input_dictionary.get('paris') test_word_idx_c = input_dictionary.get('rome') #在final_embeddings(也就是我们系统学到的embedding)里寻找上述词 a = final_embeddings[test_word_idx_a,:] b = final_embeddings[test_word_idx_b,:] c = final_embeddings[test_word_idx_c,:] #通过algebra的方式寻找预测词

图片[3]-Word2Vec在Tensorflow上的版本以及与Gensim之间的运行对比-唐朝资源网

ans = c + (a - b) similarity = final_embeddings.dot(ans) print similarity.shape print similarity[0:10] #选取最近的4个词展示出来 top_k = 4 nearest = (-similarity).argsort()[0:top_k+1] print nearest for k in xrange(top_k+1): close_word = reverse_dictionary[nearest[k]] print(close_word)

结果如下:

当输入 a = , b = paris, c = rome 时,系统 me 词汇类似于 [rome, , , mnras, ]。当输入为 a = king, b = man, c = woman 时,系统回答 [king, woman, , mayr, ]。这里的结果并不理想。就训练时间而言,60万步的时间不是很长也不是很短。之前没注意时间,但是操作时间一般在1小时左右。

2..py:

该模型是word的增强示例,默认迭代次数为15。运行结果如下:

15后的准确率为36.7%。将迭代次数设置为50次后,结果为39%,当迭代次数为100次时,不超过40%,保持在39.7%。运行了 200 次迭代后,最终达到了 40%,虽然花了大约 7 个小时。对于系统在一些基本问题上的运行结果,我们测试了15字迭代的结果,结果如下:

通过上面的简单测试,我们发现它的效果一般,但还是比基础版好很多。其中,著名的国王、男人、王后、女人问题系统没有正确回答。

的:

是一个非常常用的深度学习主题工具。一个肯定会在写作、工作方式和工作方式方面表现出色的版本。系统有很多教程。运行结果如下:

在运行时,我们将大小设置为 128 并迭代运行 15 次。模型训练好后,使用-words.txt文件对模型进行评估:

这不仅我们观察它的工作情况,而且我们更直观地了解系统在哪些方面表现良好,在哪些方面存在不足。例如,在这个类别中,问题是 [ ]。系统在这方面准确率高达82%,但在预测省内城市时,效果只有18.1%。这个直观的系统可以让我们快速了解学习效率和学习优缺点,但是对于我们常用的问题它又会如何呢?测试结果如下:

可以看出系统正确回答了我们提出的所有问题。可以很好,可以更好!

分类:

技术要点:

相关文章:

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片