我想评估我的 FastText 模型(在我自己的语料库上训练)。
对于语义意义,我知道我们可以使用包含几对由人类评分的两个词的数据集,看看我们的模型与“人类评分”的接近程度,例如this
问题是 FastText 没有对语义进行建模,即
car
和 carrot
应该比 car
和 train
更接近(如果我是正确的话)。
FastText 是否存在这样的数据集,或者我们可以用任何其他方式来做(而不是手动做,而是随机查看特定的单词)?
由于 FastText 词向量是否“好”的标准与其他词向量相同,因此您不需要一组特定于 FastText 的测试。
Python Gensim 库的词向量支持,在其类
KeyedVectors
(以及像FastTextKeyedVectors
这样的专门子类)中,包括一些通过一些流行的评估对词向量质量进行评分的方法。
方法
.evaluate_word_pairs()
(docs) 使用人工评分的词对,就像您所描述的那样。它的方法文档提到了一些词对数据的来源,并且一个这样的小文件(353 个词)wordsim353.tsv
包含在 Gensim 安装的 test_data
目录中,用于一些 Gensim 的单元测试。
方法
.evaluate_word_analogies()
(docs) 在原始 word2vec 论文中使用的同类类比解决方法上测试词向量,并且在这些评估中使用的相同 questions-words.txt
文件也捆绑在 Gensim 的 test_data
目录中.
因此,您可以将 FastText 向量加载到 Gensim 中并执行这些评估,并使用其他已发布作品使用的标准单词列表。
如果您想测试 FastText 为词汇外单词构建合成猜测向量的独特能力,请务必从 FastText
.bin
文件加载向量——.vec
文件仅包含全词向量——并且使用像 load_facebook_vectors()
. 这样的 Gensim 方法