Я новичок в области ML и пытаюсь создать модель, которая будет предсказывать семантическое сходство между двумя предложениями.Я использую следующий подход:
1. Используя модель word2vec в пакете gensim, векторизуйте каждое слово, присутствующее в рассматриваемых предложениях
2. Вычислите средний вектор для всех слов в каждом предложении / документе
import numpy as np
from scipy import spatial
index2word_set = set(model.wv.index2word)
def avg_feature_vector(sentence, model, num_features, index2word_set):
words = sentence.split()
feature_vec = np.zeros((num_features, ), dtype='float32')
n_words = 0
for word in words:
if word in index2word_set:
n_words += 1
feature_vec = np.add(feature_vec, model[word])
if (n_words > 0):
feature_vec = np.divide(feature_vec, n_words)
return feature_vec
3. Далее вычислите косинусное сходство между этими двумя усредненными векторами
s1_afv = avg_feature_vector('this is a sentence', model=model,
num_features=300, index2word_set=index2word_set)
s2_afv = avg_feature_vector('this is also sentence', model=model,
num_features=300, index2word_set=index2word_set)
sim = 1 - spatial.distance.cosine(s1_afv, s2_afv)
print(sim)
Контрольный вопрос stackoverflow: Как рассчитать сходство предложений с помощью модели gensim word2vec с python
Требуется помощь для следующей задачи:
Поскольку я хочу создать модель, которая предсказывала бы семантическое сходство между двумя предложениями, я не совсем уверен насчет:
1Какая модель лучше всего подходит для этой задачи
2.Следующее более важно, как обучить эту модель?
Должен ли я создать матрицу, в которой каждая строка будет содержать два предложения: sen1 и sen2, и я бы векторизовал их и вычислил косинусное сходство (согласно вышеупомянутому подходу)
Затем для обучающих данных:
X_Train: средние векторы для sen1 и sen2 и их значение сходства косинусов
y_Train (прогноз): набор двоичных значений (1 или аналогичный, если сходство косинусов> 0,7 и 0 в противном случае)
Я совершенно сбит с толку, является ли мой подход правильным и как представить правильный подход в форме работающей кодовой базы.
Интернет и материалы, доступные в Интернете, - мои единственные учителя, которые изучают ML;таким образом, запрашивая ваше руководство в помощи, чтобы устранить пробел в понимании и помочь найти хорошую рабочую модель для моей проблемы.