Я работаю над проектом, чтобы классифицировать отзывы клиентов по группам на основе темы комментария обратной связи. Итак, мне нужно классифицировать предложение в одну из тем из списка предопределенных тем.
Например:
«Я получаю сообщение об ошибке каждый раз, когда я вхожу в систему», должен быть помечен как «логин» в качестве темы.
«сделать экран более красочным» следует пометить как «улучшения» в качестве темы.
Таким образом, темы очень специфичны для продукта и контекста .
LDA, похоже, не работает для меня (поправьте меня, если я ошибаюсь). Он определяет темы в общем смысле, такие как «Спорт», «Политика», «Технологии» и т. Д. Но мне нужно определить конкретные темы, как упомянуто выше.
Кроме того, у меня нет данных для обучения. Все, что у меня есть, это комментарии.
Таким образом, контролируемый подход к обучению не выглядит как вариант.
Что я пробовал до сих пор:
Я обучил модель Gensim с Google News Corpus (около 3,5 ГБ).
Я очищаю предложение, удаляя стоп-слова, знаки препинания и т. Д.
Я нахожу, к какой теме из множества тем каждое слово ближе всего и помечаю слово этой темой. С мыслью, что предложение может содержать больше слов, ближе к теме, на которую оно ссылается, чем нет, я выбираю тему (и), в которую отображается максимальное количество слов в предложении.
Например:
Если 3 слова в предложении сопоставлены с темой «вход в систему», а 2 слова в предложении сопоставлены с темой «улучшение», я помечаю предложение как тему «вход в систему».
Если между счетами нескольких тем есть конфликт, я возвращаю все темы с максимальным количеством в качестве списка тем.
Этот подход дает мне справедливые результаты. Но это не достаточно хорошо.
Как лучше всего решить эту проблему?