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