Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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 从一组文档进行输入查询的最佳匹配_Python_Tf Idf - Fatal编程技术网

Python 从一组文档进行输入查询的最佳匹配

Python 从一组文档进行输入查询的最佳匹配,python,tf-idf,Python,Tf Idf,我有8个文档,我在上面运行了TF-IDF,以获得一个数组。我不明白如何找出给定输入查询的最佳文档匹配 all_documents = [doc1, doc2, ...., doc7] sklearn_tfidf = TfidfVectorizer(norm='l2',min_df=0, use_idf=True, smooth_idf=False, sublinear_tf=True, tokenizer=tokenize) sklearn_representation = sklearn_tf

我有8个文档,我在上面运行了
TF-IDF
,以获得一个数组。我不明白如何找出给定输入查询的最佳文档匹配

all_documents = [doc1, doc2, ...., doc7]
sklearn_tfidf = TfidfVectorizer(norm='l2',min_df=0, use_idf=True, smooth_idf=False, sublinear_tf=True, tokenizer=tokenize)
sklearn_representation = sklearn_tfidf.fit_transform(all_documents).toarray()

使用
TFIDFvectorier
将输入转换为
tf idf
格式。然后,可以使用距离度量(余弦、欧几里德、曼哈顿等)来计算最接近输入的文档


每个文档应使用相同的词汇表。我假设您的8个文档向量具有相同的长度?您创建的
sklearn\u tfidf
对象具有一个属性
词汇表
,该属性包含向量中使用的所有单词。您的输入查询应简化为仅包含这些单词

示例

Document1: dogs are cute
Document2: cats are awful

引出了
[狗、猫、可爱、可怕]
的词汇表。不能使用包含这5个词以外的其他词的查询。例如,如果您的查询是
可爱的动物
,则
动物
没有意义,因为在其中一个文档中找不到它。因此,查询简化为以下向量:
[0,0,0,1,0]
,因为
cute
是文档中唯一可以找到的单词

“最佳文档”是指最接近输入查询的文档吗?您必须调整
TfidfVectorizer
以输入查询,然后从您拥有的7个文档中找到到矢量的距离(可以是余弦距离/欧几里德距离)。@titipat感谢您的方法。但据我所知,要找到上述任何距离,向量的长度应该是相同的。我该怎么做?谢谢你的帮助。但据我所知,要找到上述任何距离,向量的长度应该是相同的。我该怎么做?每个文档都应该使用相同的词汇表。我假设您的8个文档向量具有相同的长度?您创建的
sklearn\u tfidf
对象具有一个属性
词汇表
,该属性包含向量中使用的所有单词。您的输入查询应该减少到只包含这些单词。是的,每个向量的长度是1058。但如何将输入字符串转换为长度为1058的大小向量呢?我试过了,可以看到长度为1058的词汇表。我应该建立一个长度为1和0的向量,将输入查询中的每个单词与
词汇表进行比较,还是scikit learn中有一种方法可以直接使用?我想可以帮你。