Python 使用COSADD、COSMUL和欧氏距离测试word2vec模型的准确性
我已经用word2vec训练了一个模型,想用谷歌的类比测试集来测试它的准确性。我想用COSADD,COSMUL,还有欧几里德距离 要使用COSADD,我只需使用以下代码: model.wv.accurity('questions-words.txt') 我不知道如何使用其他的。精度方法具有以下可选参数 准确性(.txt文件,限制声音=…,最相似=…) 我觉得我应该能够写出最相似的=COSMUL 但这是行不通的:(Python 使用COSADD、COSMUL和欧氏距离测试word2vec模型的准确性,python,machine-learning,nlp,word2vec,Python,Machine Learning,Nlp,Word2vec,我已经用word2vec训练了一个模型,想用谷歌的类比测试集来测试它的准确性。我想用COSADD,COSMUL,还有欧几里德距离 要使用COSADD,我只需使用以下代码: model.wv.accurity('questions-words.txt') 我不知道如何使用其他的。精度方法具有以下可选参数 准确性(.txt文件,限制声音=…,最相似=…) 我觉得我应该能够写出最相似的=COSMUL 但这是行不通的:( 有人知道如何使用COSMUL或euclidean距离(或两者)进行精度测试吗?精度
有人知道如何使用COSMUL或euclidean距离(或两者)进行精度测试吗?精度()的
最相似的参数采用python函数,因此您需要提供一个函数,该函数具有与执行替代计算相同的方法签名
类似的内容可能适用于cosmul计算
但是,您应该查看源代码,以查看预期的内容,以及代码中某些默认选项的使用方式(如单元是否规范化字向量)将影响您的结果。我正在努力编写一个可接受的函数……即使我编写了他们说的默认参数most\u similor=most\u similor,我也会遇到以下错误:NameError:name'most\u similor'未定义。当我尝试编写keyedVector时。most\u similor\u cosmul(),我得到了相同的错误。源代码可以使用最相似的
,因为它是在该上下文中定义的函数名。如果您想从自己的代码模块中指定相同的函数,您必须指定WordEmbeddingSkeyedVector.most\u相似的
。另外,请注意,在我上面的回答中,我建议WordEmbeddingSkeyedVector.most_-cosmul()
出于同样的原因:如果您导入了WordEmbeddingsKeyedVectors
,这是函数的全名。它没有在KeyedVectors
本身上定义。好的,谢谢,我没有从gensim.models.KeyedVectors导入WordEmbeddingsKeyedVectors。我的代码现在告诉我这个错误:大多数类似的cosmul()缺少1个必需的位置参数:“self”。有什么想法吗?如果您只提供函数对象,请不要使用()
括号-这意味着“执行函数”,在这种情况下,您需要提供所有必要的参数,然后是精度()
方法正在接收该执行的结果,而不是函数本身。请尝试作为参数:most\u-similure=wordembeddingskeyevectors.most\u-similure\u-cosmul
。我现在通过覆盖most\u-similure\u-cosmul方法以包含restrict\u-vocab参数使其工作。非常感谢您的帮助,非常感谢。