Сначала мы можем подгонять к исходным предложениям
from sklearn.feature_extraction.text import TfidfVectorizer
vect = TfidfVectorizer()
text = ['This is the first test ','This is the sentence', 'this is a third sentence']
vect.fit(text)
tfidf = vect.transform(text).A
>>> tfidf
array([[0.55249005, 0.32630952, 0. , 0.55249005, 0.42018292,
0. , 0.32630952],
[0. , 0.43370786, 0.55847784, 0. , 0.55847784,
0. , 0.43370786],
[0. , 0.39148397, 0.50410689, 0. , 0. ,
0.66283998, 0.39148397]])
Затем использовать его для преобразования новых:
new = vect.transform(['this sentence 1','new sentence 2']).A
>>> new
array([[0. , 0. , 0.78980693, 0. , 0. ,
0. , 0.61335554],
[0. , 0. , 1. , 0. , 0. ,
0. , 0. ]])
А затем использовать некоторую метрику расстояния для вычисления сходства между предложениями:
import scipy
>>> scipy.spatial.distance.cdist(tfidf, new, 'euclidean')
array([[1.26479741, 1.41421356],
[0.76536686, 0.93970438],
[0.85056925, 0.99588464]])