Вы можете рассмотреть возможность кодирования вашего текста с помощью word2vec.
Вы можете использовать предварительно обученную модель в новостях Google
wget https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz
gunzip GoogleNews-vectors-negative300.bin.
Использование:
import gensim
# Load Google's pre-trained Word2Vec model.
model = gensim.models.Word2Vec.load_word2vec_format('./model/GoogleNews-vectors-negative300.bin', binary=True)
corpus = [
'good person',
'good human being'
]
# For each sentence in corpus, generate a vector.
# using any similarity measure, you can compute similarity once you encode your text to vector.
corpus_vec = []
for sentence in corpus:
sent_vec = np.zeros(300)
for word in sentence:
sent_vec += model[word]
corpus_vec.append(sent_vec)
Это дает вам 300мерный вектор для каждого слова. Преобразуйте все слова в 300-мерный вектор и сложите их для каждого текста.
Теперь вы можете использовать косинусное сходство или любую другую меру сходства.