Я выбросил из системы Good Read Review несколько тысяч рецензий на книги на индонезийских книгах. Затем, используя эти данные, я попытался построить модель, способную предсказать, принадлежит ли отзыв (текст) к положительной, отрицательной или неизвестной группе.

Утилизация обзоров является закрытым исходным кодом. Количество образцов, которые мне удалось собрать, составляет 3800 образцов, и все они прошли функцию очистки, которая удалит неиндонезийский текст и присвоит ему класс. Класс определялся количеством звезд, присваиваемых обзору, 1–3 звезды будут отрицательным отзывом, а обзор 4–5 звезд считается положительным отзывом.

Теперь наступает часть векторизации, именно здесь текстовые файлы превращаются в числа, которые может классифицировать большинство алгоритмов машинного обучения, таких как машина опорных векторов, наивный байесовский алгоритм, деревья решений. Для этого шага я использовал fasttext для векторизации текстов. Существуют и другие методы, такие как TF-IDF, которые вычисляют частоту термина, нормализованную частотой документа. Но я выбрал fasttext, так как он способен генерировать векторы для ранее не встречавшихся слов (более предсказуемая сила) и улавливает внутреннее значение слов внутри текста.

Для самого алгоритма обучения я выбрал GNB, поскольку это один из самых известных алгоритмов с проверенной репутацией, способный генерировать сложные границы решений. Модель оказалась быстрой для обучения и дает точность около 50–60 процентов при разделении тестов на 70–30 тренировок. Это означает, что модель вообще не учится. Мог бы и монетку кинуть.

Однако во всем этом процессе был пропущен шаг, не было исследования данных. Когда я заметил, что данные сильно смещены в сторону положительных отзывов ({nan: 7, "unk": 329, "neg": 313, "pos": 3189}). Так же было несколько нан (ошибки при списании). Поэтому я решил попробовать по 300 штук из каждой категории. Переобучение модели дало следующий график точности

Которая колеблется от 66 до 80 процентов точности, что намного лучше, чем предыдущая производительность, что превращает ее в более осуществимую модель. Обратите внимание на небольшое соотношение (гораздо больше тренировочных точек к контрольным точкам), производительность модели подскочила до 80 процентов, модель переоснащена. Также кажется, что в производительности режима есть колебания, вероятно, из-за начального начального значения из модели GNB. В целом тенденция, кажется, усиливается, поэтому для модели лучше чем больше точек тестирования, тем меньше точек обучения?

TLDR; Проверьте распределение данных, нормализуйте его. Похоже, что модель быстрого текста в сочетании с моделью GNB дала лучшую производительность всего за несколько баллов обучения.