Python 有没有办法使用sklearn TF-IDF模型解决单词类比?
我使用Python的sklearn库和我自己的数据集拟合了TF-IDF模型:Python 有没有办法使用sklearn TF-IDF模型解决单词类比?,python,scikit-learn,nlp,Python,Scikit Learn,Nlp,我使用Python的sklearn库和我自己的数据集拟合了TF-IDF模型: tfidf\u featureuriser=sklearn.feature\u extraction.text.tfidfVectorier(停止\u单词=None) tfidf_featuriser.fit(文档) tfidf\u docterm\u matrix=tfidf\u featuriser.transform(文档) 我正在尝试解决单词类比(男人::国王作为女人::王后),因为这可能与gensim的Wo
tfidf\u featureuriser=sklearn.feature\u extraction.text.tfidfVectorier(停止\u单词=None)
tfidf_featuriser.fit(文档)
tfidf\u docterm\u matrix=tfidf\u featuriser.transform(文档)
我正在尝试解决单词类比(男人::国王作为女人::王后),因为这可能与gensim的Word2Vec模型有关。到目前为止,我已经尝试了以下方法:
vec1=tfidf\u docterm\u matrix.transpose()
vec2=tfidf_docterm_matrix.transpose()[tfidf_featuriser.词汇表['woman',:]
vec3=tfidf_docterm_matrix.transpose()
vec4=vec2+vec3-vec1
我如何检索与vec4相似的向量,希望其中一个词向量是“queen”?tf idf不[试图]捕获单个词的语义信息-它是一个纯粹基于频率的模型。因此,你不应该期望看到简洁的词语类比出现(想想看,为什么“男人”、“女人”、“国王”和“女王”的相对频率应该如此简洁地关联起来) 在Word2Vec模型中,queen~=king+女性-男性词语类比的出现部分是因为我们表示为n维向量(希望)编码每个词语的语义 另一方面,在tf idf矩阵中,我们的词向量的每个元素仅代表其在特定文档中的频率函数,因此您设置的约束条件不仅是这些词的相对频率强相关,而且在单个文档的级别上发生,这对于一个只计算词频的模型来说是一个很大的要求 如果您想了解为什么单词类比出现在Word2Vec之类的单词嵌入模型中,我建议您看看这一点以及相关的