Category: отзывы

Category was added automatically. Read all entries about "отзывы".

Оценка качества RnnMorph по ручной морфологической разметке из OpenCorpora

Оценка точности разметки существительных для морфологического анализатора RnnMorph.
В качестве эталона разметки взят "Подкорпус со снятой омонимией" из OpenCorpora.

NOUN recall=0.9931500509117838
NOUN precision=0.9943005421435522
NOUN+tags precision=0.9590843797785089


NOUN precision - точность без учета тегов, NOUN+tags - точность с учетом тэгов Case, Number.

Побочный эффект от генеративной грамматики: режим шаблонизатора

Фрагмент тестового диалога с экспериментальной версией чатбота (H:> реплики человека, B:> реплики бота)
Collapse )

Инструменты для Sentiment Analysis: Редактор Оценок, сверточная сеточная модель, база оценок

Закомитил в репозиторий https://github.com/Koziev/SentimentAnalysis все свои черновики, разработанные примерно год назад.

1. Редактор Оценок - десктопная прога на C# WinForms, работающая с текстами в БД SQLite. Позволяет быстро расставлять и редактировать оценки, а также выгружать корпус в текстовый формат (CSV с табуляцией в качестве разделителя полей). Выглядит как и положено прототипу под MVP:

Collapse )

Черновое сравнение XGBoost, LightGBM и CatBoost на классификации MNIST

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

Снижение размерности

Датасет представляет из себя набор из нескольких десятков черно-белых картинок размером 28*28 пикселей с 256 градациями. Развернув картинку в вектор, получаем 784 признака на сэмпл. Многовато. XBGoost на таких сэмплах учится более часа на моем железе, и это сильно снижает возможности пройтись по пространству гиперпараметров и получить оптимальный набор настроек. То есть эксперименты затруднены.

Поэтому я решил сжать каждое изображение с помощью Variational AutoEncoder до 64 параметров. Реализацию VAE я взял прямо из репозитория Keras  https://github.com/fchollet/keras/blob/master/examples/variational_autoencoder.py.

Такая трансформация немного ухудшает достигаемую точность. С другой стороны, более быстрый обсчет одного варианта гиперпараметров позволяет лучше настроить модель.

Исходный текст моделей

Лежит тут: https://github.com/Koziev/MNIST_Boosting

Простой запуск модели с XGBoost: https://github.com/Koziev/MNIST_Boosting/blob/master/xgb_solver.py

Модель для XGBoost с автоподбором оптимальных гиперпараметров: https://github.com/Koziev/MNIST_Boosting/blob/master/xgb_hyperopt_solver.py

Collapse )

Перестановочная нормализация фраз в результатах оценки сентимента

Сделал очень простой алгоритм, который подбирает правильный порядок слов в ходе нормализации словосочетаний.

Выдержка из результатов тестового прогона по моей базе оценок из отзывов:

Collapse )

Сейчас в базе 23990 уникальных словосочетаний по которым сделана оценка или обнаружен факт наличия/отсутствия какого-то аспекта. Общее количество оценок и фактов равно 9677415. Думаю, можно попытаться поучить RNN/LSTM модель нормализовать словосочетания по такому шаблону:

Collapse )

100% качества добиться, наверное, вряд ли получится из-за ограничений на объем памяти в сетке, но общие закономерности рекуррентная модель должна уловить. Например:

приведение к нейтральной форме:
анимация бедноватенькая ==> бедноватая анимация

приведение главного существительного к словарной форме и пересогласование зависимого прилагательного:
анимационные программы очень веселые ==> очень веселая анимационная программа

и так далее.

Особенности лексики в отзывах

Бросается в глаза невероятная, статистически выраженная склонность авторов отзывов к усилительным/уменьшительным вариантам слов. Интересно, что же побуждает людей менять свой активный лексикон? Ведь обычно мы так не говорим (под катом краткий перечень несловарных производных):
Collapse )

В качестве гипотезы предположу, что при написании отзыва желание дать оценку заставляет ту часть коры, которая подбирает слова при синтезе, выдавать преимущественно не-нейтральную лексику, порождая забавности типа "штормик" (маленький шторм? брр).

Как будем проверять word embeddings

1. Если/когда заработает вторая модель получения word embeddings - то для нее проверка будет аналогичная нижеописанной.

2. Получение кластеров и просмотр их содержимого является только предварительной, грубой оценкой. Практического применения этим кластерам я пока не вижу. Если смутные мысли по поводу использования для machine translation, но смутность и необходимость получения еще и японских векторов пока меня расстраивает.

3. Сделаем POS Tagger на Support Vector Machine классификаторе, на входе - только полученные вектора для слов, на выходе - целевые теги (часть речи + падеж + число + ....). Сравнение с разметкой эталонного корпуса сразу покажет числовую оценку качества, от которой уже можно отталкиваться при подборе гиперпараметров модели.

4. Если вдруг POS Tagger на векторах окажется на уровне текущего варианта, то встанет вопрос о введении в него работы с неизвестными словами. Это будем решать по факту.

5. Если качество будет хорошим, то, к.м.к, можно будет добавить марковскую модель и получить MEMM со всеми плюшками глобальной оптимизации цепочки тегов.

6. Отдельная проверка - через использование векторов для shift-reduce парсера. С этой штукой будем возиться только после окончания проверки на pos tagging модели.

Коррекция опечаток как побочный эффект морфологического анализа

Это действительно забавный побочный эффект, возникающих из-за особенностей нового алгоритма нечеткого поиска слов с опечатками.

Проще всего его пронаблюдать вживую на online анализаторе.

Collapse )