Прежде всего, конец вашего вопроса не имеет никакого смысла, потому что вы не сказали, на какие классы вы хотите классифицировать текстовые фразы. Теперь я могу помочь вам с векторизацией текстовых фраз.
Tf-idf довольно хорош, но для этого нужна хорошая предварительная обработка. Кроме того, вам придется создавать векторы самостоятельно. Проблема в том, что вы дадите вектор длины всех отдельных слов в вашем наборе данных, даже те же слова в разных формах, в которых они встречаются в наборе данных. Поэтому, если в вашем наборе данных есть слово go
, вполне вероятно, что будет несколько форм этого слова, включая going
, Go
, gone
, went
и так далее. Вот почему вы должны иметь хорошую предварительную обработку, чтобы поместить все эти формы слова go
в его корневую форму. Кроме того, вы должны использовать весь набор данных в нижнем регистре, потому что слова go
и Go
не совпадают. Но даже если вы сделаете все это и создадите идеальный конвейер предварительной обработки, вы получите вектор длиной 20k +. Затем вам нужно будет вручную выбрать элементы (слова), которые вы хотите оставить в векторе, и удалить остальные. Это означает, что если вы хотите иметь вектор размером 300, вам придется удалить 19 700 слов из вектора. Конечно, вы останетесь с 300 лучших отличительных. Если вы хотите углубиться в это и посмотреть, как именно это работает, вы можете проверить это здесь
С другой стороны, word2vec отображает любое слово в 300-мерный вектор. Конечно, вам придется выполнить некоторую предварительную обработку, аналогичную tf-idf, но этот метод гораздо менее чувствителен. Вы можете найти, как работает word2vec здесь
В заключение я бы порекомендовал вам перейти с word2vec, потому что с ним гораздо проще начать. Есть предтренированная модель от Google, которую можно скачать здесь