如何获取文档查询的余弦相似度分数

问题描述 投票:0回答:1

我正在做一个文本分类程序,其中有一个包含 5 个类别的数据集(“商业”、“娱乐”、“本地”、“体育”、“世界”)。该数据集包含 5 个文件夹(针对 5 个类别),其中包含 100 个 txt 文件。我的要求是,当我插入一个文本文件(查询)时,我想检查该文件是否与 5 个类中的任何一个相似或不适合任何一个类。

为此,我打算写一段python代码。为此,我找到了五个类别的 TFIDF(每个类别使用 100 个文本文件),并找到每个特定类别的平均值,并在新文本文件中使用 TFIDF 的表兄弟相似度。并获得余弦相似度得分。我提到的这个分数是一个数字,而不是每个单词的相似度。这意味着当我们将文本文件与任何类、整个文档进行比较时,插入的文本文件的相似度分数应该给出一个数字。 (例如,分数 = 5)。

但是我很难为此编写 python3 代码,任何人都可以帮我编写此代码来获取文档(文本文件集)和文本文件(查询)的余弦相似度分数。

这是我到目前为止所做的,

import numpy as np
import pandas as pd
#importing test, train data
from  sklearn.datasets import load_files

sinhala_entertainment = load_files('Testing data set\stemmed_filtered_sinhala-set1\entertainment', encoding= 'utf-8')

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer

count_vectorization = CountVectorizer()
tfidf_trans = TfidfTransformer()

entertainment_data_tf = count_vectorization.fit_transform(sinhala_entertainment.data)
entertainment_data_tfidf = tfidf_trans.fit_transform(entertainment_data_tf)

sample_test1 = open("adaderana_67571.txt", encoding='utf-8')  
sample_test = sample_test1.read() 

sample_data_tf = count_vectorization.fit_transform([sample_test])
sample_data_tfidf = tfidf_trans.fit_transform(sample_data_tf)

from sklearn.metrics.pairwise import cosine_similarity
similarity = cosine_similarity(sample_data_tfidf , entertainment_data_tfidf )

我在查找余弦相似度时遇到错误。

sinhala_entertainment
是一个类(包含100个txt文件),
sample_test1
是查询。

python python-3.x tf-idf cosine-similarity
1个回答
0
投票

最后一行想要成为,

similarities_tfidf = cosine_similarity(sample_data_tfidf, entertainment_data_tfidf)[0]
© www.soinside.com 2019 - 2024. All rights reserved.