Добрый день
Нарисовалась такая задачка, к которой хотелось бы найти оптимальный с точки зрения машинного обучения подход. Велосипед изобретать не хочется.
Дано: два массива текстов одинаковой размерности Q[n] и A[n]. Условно говоря, Q[i] содержит вопрос, A[i] содержит ответ на этот вопрос. То есть все тексты сгруппированы парами вопрос-ответ. Все эти тексты принадлежат некоему объемлющему корпусу текстов M.
Q и A - это обучающая выборка.
Для разных вопросов, вообще говоря, могут быть одинаковые ответы.
Требуется: по новому тексту
выдавать несколько ответов
с ранжированием по вероятности.
Вопрос: как решать сие?
Пока думаю о следующих подходах:
1. в качестве обучающей выборки взять массив (Q[i],A[j],[i=j]), где третий параметр будет либо 1 либо 0, и это будет признак класса. Но тогда у нас выборка вместо n элементов будет иметь n^2, да и подбор ответа мне кажется будет слишком трудоемким.
2. Научиться классифицировать тексты на два класса (1)вопрос или (2)ответ, и провести предварительное разбиение массива M на эти два класса на основе обучающей выборки (тоже долгая операция)
Затем по заданному тексту q искать максимально похожие (например. с помощью word2vec) тексты в M среди тех, что были отклассифицрованы как ответ.
3. все тексты перегнать в векторное пространство и попытаться найти линейную регрессию A = kQ + b, тогда по заданному Q буде вычислять A, и затем искать ближайшее к нему значение в M.
Что реально на практике используется и какими силами на Питоне можно реализовать?