Как отнести текстовые строки к категориям в R?

Есть ответы людей на вопрос "Почему вы не покупете моющие средства марки Х?". Необходимо отнести каждый ответ к категории, но списка категорий нет (возможно, его потребуется создать). Для решения этой задачи я построила dtm матрицу в R и применила функцию LDA. В результате получила список тем и вероятности попадания каждого ответа в эту тему. Но темы получились расплывчатыми и непонятными. То есть очевидных тем "Цена", "Качество" и тд. там нет. Есть идея создать список категорий и соотнести половину ответов с этими категориями. Затем построить дерево решений или логистическую регрессию, чтобы предсказать категории оставшейся части ответов. Я новичок в НЛП и машинном обучении и очень нуждаюсь в совете. Какой метод можно использовать для разбиения текстовых строк на категории? Обязательно ли при этом сразу определять список категорий?

P.S. Работаю в R


Ответы (2 шт):

Автор решения: aGricolaMZ

Если хочется конкретных тем, то я бы создал словари уникальных слов для каждой темы, а дальше взвешивал бы строку, на основании слов ассоциированных с темой. Такая разновидность sentiment analysis.

Посмотрите книжку Text Mining with R, там подробно обсуждается как LDA так и другие NLP задачи.

→ Ссылка
Автор решения: Дима Мандрик

Если говорить об LDA, то стоит обратить внимание на две вещи:

1) Стоп-слова, которые Вы удаляете, важны. Если Вы этого не делаете, то,возможно, стоит:)

-Пакет stopwords ("rus") должен помочь, но стоит посмотреть, не удаляется ли что то лишнее.

-Второй способ- удалить наиболее частотные слова, кроме тех, которые важны для расшифровки получившихся тем (возможно, Вы использовали пакет и удалили лишнего.

2) Полученные темы в LDA очень часто корявые и не очевидные:) Здесь либо полагаться на искусство их трактовки, либо играть с числом тем, которое задается в lda. В прекрасной книге @aGricolaMZ вроде было описание тестов полученной модели. Тут либо по ним, либо, если есть время, играть с числом тем, смотря на частотные слова и наиболее вероятные тексты для каждой из тем. Теоретически, Вы просто могли задать либо слишком маленькое, либо слишком большое число тем.

P.S. а сколько всего ответов и есть какие либо метаданные?

→ Ссылка