Это в основном зависит от того, сколько «современного уровня» (SOTA) вы хотите против того, как глубоко вы хотите пойти (каламбур ...).
Если вы можете жить с небольшими вложениями слов, предоставляемыми word2vec, Glove или fastText, я думаю, что Word Mover Distance (WMD [да, действительно ...]) - хорошая функция для измерения (коротких) расстояний до документов [1] , Я даже видел несколько ноутбуков Python в прошлом, которые предоставляют «учебные пособия» для этой меры расстояния, поэтому ее действительно легко начать.
Однако, если вас больше интересует SOTA, вам придется изучить глубокое (представление последовательности) обучение, используя какую-то рекуррентную сеть, которая изучает тематическую модель из ваших предложений. Помимо интеграции (семантического) встраивания слов, эти подходы выходят за рамки [доброго, старого] подхода «мешок слов», изучая представления тем с использованием зависимостейслов в предложении [с]. Например, Рекуррентная модель темы уровня предложения (SLRTM) является довольно интересной глубокой, рекуррентной моделью, основанной на идеях более традиционного LDA (Блей и др.) Или LSA (Ландауэр и др.), Но это всего лишь arXiv. бумага (поэтому все стандартные предупреждения «возьми это с зерном соли» о нерецензированных исследованиях должны применяться ...) [2]. Тем не менее, в статье есть много отличных указателей и ссылок для начала вашего исследования, если вы захотите пройти по этой кроличьей норе.
Наконец, следует уточнить, что я не утверждаю, что это согласованные наиболее эффективные методы для моделей слов и последовательностей, соответственно. Но они должны приблизить вас к тому, каким может быть «лучший» SOTA, и, по крайней мере, послужить отличной отправной точкой.
[1] Matt J. Kusner et al. От вложений в слова до расстояний между документами. Материалы 32-й Международной конференции по машинному обучению, JMLR, 2015.
[2] Fei Tian et al. SLRTM: пусть темы говорят сами за себя. arXiv 1604.02038, 2016.
https://github.com/RandyPen/TextCluster
Это метод Cluster, специфичный для короткого текста, который превосходит KMeans и т. д. Нет необходимости устанавливать число скрытой переменной.
Основная идея состоит в том, чтобы разбить предложение на слова. Затем направьте в другую корзину в соответствии с текстовым компонентом. В каждом сегменте вычислите сходство между предложением и блоком. Если показатель сходства выше, чем конкретное значение, добавьте это предложение в этот сегмент, иначе ищите следующий.
источник