我有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()
答案 0 :(得分:0)
使用tf-idf
将输入转换为TfidfVectorizer
格式。然后,您可以使用距离度量(余弦,欧几里德,曼哈顿,...)来计算最接近您输入的文档。
每个文档都应使用相同的词汇表。我假设您的8个文档向量具有相同的长度?您创建的sklearn_tfidf
对象具有属性vocabulary_
,其中包含向量中使用的所有单词。您的输入查询应缩减为仅包含这些单词。
示例强>
Document1: dogs are cute
Document2: cats are awful
导致[dogs, cats, are, cute, awful]
的词汇量。不能使用包含除这些之外的其他单词的查询。例如,如果您的查询为cute animals
,则animals
没有意义,因为在其中一个文档中找不到它。因此,查询简化为以下向量:[0,0,0,1,0]
,因为cute
是可以在文档中找到的唯一单词。