Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法使用sklearn TF-IDF模型解决单词类比?_Python_Scikit Learn_Nlp - Fatal编程技术网

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

我使用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的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之类的单词嵌入模型中,我建议您看看这一点以及相关的