Gensim中sort_by_descending_frequency改变most_similar结果原因咨询
问题原因分析
- 该现象是Gensim的
sort_by_descending_frequency方法未兼容FastText的子词向量结构导致的,属于功能设计层面的不兼容问题。 - 对于Word2Vec这类仅包含整词向量矩阵的模型,调用该排序方法时只需按照新的词序重排整词向量矩阵即可,词向量本身数值不会变化,因此
most_similar的返回结果不会发生改变。但FastText的词向量计算依赖两部分核心数据:- 词汇表中每个整词对应的独立向量
- 所有n-gram子词的向量矩阵、以及子词哈希值到子词向量索引的映射表
sort_by_descending_frequency方法执行时,仅重排了index_to_key词表顺序和对应的整词向量矩阵顺序,完全没有处理FastText特有的子词相关映射和向量矩阵,导致后续计算词向量时,整词和对应子词的匹配关系发生错乱。- 你可以自行验证:排序前后分别打印
model.wv['human']的向量值,会发现二者数值完全不同,因此基于词向量计算的余弦相似度结果自然会出现排名和数值的双重变化。 - 目前该方法仅支持没有子词结构的词向量模型(如Word2Vec),请勿在FastText、Char2Vec这类带子词结构的模型上调用这个排序方法。
内容的提问来源于stack exchange,提问作者Jinhua Wang
相关产品推荐
相关产品推荐

