Если вам нужен простой, но эффективный подход, Встраивание Sif отлично подойдет. Он усредняет вектор слов в предложении и удаляет его первый главный компонент. Это намного превосходит усреднение векторов слов. Код доступен на сайте здесь . Вот основная часть:
svd = TruncatedSVD(n_components=1, random_state=rand_seed, n_iter=20)
svd.fit(all_vector_representation)
svd = svd.components_
XX2 = all_vector_representation - all_vector_representation.dot(svd.transpose()) * svd
Где all_vector_representation
- среднее вложение всех предложений в ваш набор данных.
Существуют и другие сложные подходы, такие как ELMO , Transformer и т. Д.