【发布时间】:2017-07-14 18:41:11
【问题描述】:
我从 fastText Github 存储库页面下载了预训练的英语维基百科向量文件 (wiki.en.vec),并尝试按照 Mikolov 的 word2vec 论文的第一篇中所述计算句法和语义类比任务的准确性,如下所示:
我只是通过 make 构建了 word2vec 存储库。
我运行了./compute-accuracy wiki.en.vec 0 < questions-words.txt,即,我将预训练的向量文件与阈值 0 一起从 word2vec 传递给计算精度二进制文件,以便考虑整个词汇表,而不是默认将其限制为 30000,并且我还使用< 发送精度计算数据集questions-words.txt,因为我注意到代码从标准输入读取数据集。
作为回应,我只是得到了一堆像下面这样的 NaN。即使我将阈值更改为 30000 或其他任何值,这也不会改变。
>capital-common-countries:
ACCURACY TOP1: 0.00 % (0 / 1)
Total accuracy: -nan % Semantic accuracy: -nan % Syntactic accuracy: -nan %
有人能解释一下为什么英语预训练向量似乎不适用于 word2vec 的准确度计算代码吗?我查看了compute-accuracy.c,它看起来确实需要标准矢量文件格式约定,我也查看了wiki.en.vec,它看起来确实像标准约定格式。
此外,在 fastText 论文中,提出了使用 fastText 向量的词类比精度,并且该论文引用了 Mikolov 的 word2vec 论文——显然,使用了相同的数据集,并且可能使用了相同的 word2vec compute-accuracy.c 文件来获得提出的数字。那么有人可以解释一下出了什么问题吗?
【问题讨论】:
-
对于对此投反对票的人:还请在此处评论该问题缺少的内容,以便我进行必要的改进。简单地否决我的问题而不提供反馈以改进是不公平的。