Другие ответы были очень полезны, но не совсем то, что я искал, поскольку они не помогли мне преобразовать мой запрос, чтобы я мог сравнить его с документами.
Чтобы преобразовать запрос, я сначала подгонял егок матрице документа:
queryTFIDF = TfidfVectorizer().fit(allDocs)
Затем я преобразую его в форму матрицы:
queryTFIDF = queryTFIDF.transform([query])
И затем просто вычисляю косинусное сходство между всеми документами и моим запросом, используя sklearn.metrics.pairwise.cosine_simility function
cosineSimilarities = cosine_similarity(queryTFIDF, docTFIDF).flatten()
Хотя я понимаю, что, используя решение Нихала, я мог бы ввести свой запрос в качестве одного из документов, а затем рассчитать сходство между ним и другими документами, но это то, что лучше всего сработало для меня.
Полный код выглядит примерно так:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
def get_tf_idf_query_similarity(documents, query):
allDocs = []
for document in documents:
allDocs.append(nlp.clean_tf_idf_text(document))
docTFIDF = TfidfVectorizer().fit_transform(allDocs)
queryTFIDF = TfidfVectorizer().fit(allDocs)
queryTFIDF = queryTFIDF.transform([query])
cosineSimilarities = cosine_similarity(queryTFIDF, docTFIDF).flatten()
return cosineSimilarities