【问题标题】:fastText and word2vec: NaNs in accuracy computation codefastText 和 word2vec:精度计算代码中的 NaN
【发布时间】: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 文件来获得提出的数字。那么有人可以解释一下出了什么问题吗?

【问题讨论】:

  • 对于对此投反对票的人:还请在此处评论该问题缺少的内容,以便我进行必要的改进。简单地否决我的问题而不提供反馈以改进是不公平的。

标签: c nlp word2vec fasttext


【解决方案1】:

compute-accuracy 是否适用于本地训练的向量? (也就是说,您的设置是否在不添加 Facebook 来源向量的额外变量的情况下工作。)

如果是这样,那么与“computer-accuracy”一起使用的本地训练向量集是否与 Facebook 下载的文件格式/编码相同?

如果我理解正确,.vec 文件是文本格式。在 word2vec.c 存储库中使用 compute-accuracy 可执行文件的示例表明将 binary 格式的向量作为参数传递。见:

https://github.com/tmikolov/word2vec/blob/master/demo-word-accuracy.sh#L7

【讨论】:

  • 感谢您的回复!我还没有让compute-accuracy 使用我的任何本地训练的向量(所有这些都是.vec 文件)。是的,我注意到文件compute-accuracy.crb 模式读取输入文件,所以我什至将代码更改为r 并尝试了,它仍然没有帮助。请参阅第 41 行:github.com/tmikolov/word2vec/blob/master/compute-accuracy.c#L41
  • 我还使用mv file.vec file.txt 将我的文件从.vec 转换为.txt,然后使用名为convertvec 的以下工具将.txt 文件转换为二进制.bin 文件:@987654323 @ 然后我将.bin 文件传递​​给compute-accuracy 可执行文件——这也没有帮助。请帮忙,我已经被困在这个问题上太久了!
  • 我不熟悉那个convertvec 工具,所以无法评论它的可靠性或适当性。我建议首先尝试使用经过本地训练的保存到二进制模式的向量(例如在demo-word-accuracy.sh 脚本中),以确保您的本地 word2vec 工具甚至可以正常工作。只有在这工作之后,尝试额外的步骤将 FB 的 .vec 转换为原始 word2vec .bin
  • 过去几天我使用convertvec,它有时无法将.vec 转换为二进制格式。哟需要验证文件的标题。不幸的是,convertvec 不会打印日志记录或可能的错误。也试试其他机器..
猜你喜欢
  • 2018-02-18
  • 2018-08-16
  • 2017-07-06
  • 2015-12-08
  • 1970-01-01
  • 2019-03-15
  • 2012-11-26
  • 2020-11-08
  • 1970-01-01
相关资源
最近更新 更多