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 )

Зачем нужна декомпозиция оценки сентимента на полярность и упоминание аспекта (и еще facets)

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

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

Collapse )

PS:

Collapse )

Сверточная сетка для оценки полярности предложений в отзывах

Итак, на "прямоточной" feedforward сетке с 4 слоями корпус оценок начал обрабатываться с точностью до 91% (тут http://kelijah.livejournal.com/199059.html). При этом на входе были word2vec векторы слов без лемматизации. В принципе, уже неплохо. Но!

Оказалось, что если взять сверточную сетку, подать ей лемматизированные предложения с cutoff по частоте дабы уменьшить размерность, то точность модели достигает почти 96%!

Сам корпус оценок - это что-то типа:
Collapse )

Важнейший ингредиент хорошего отдыха - это когда тебя понимают

Не претендую на фундаментальность вывода.
Разбор примерно 7000 отзывов по отдыху на острове в средиземноморье немного удивил.
Вот top-10 словосочетаний после подбивки статистики:
Collapse )
Строка про полотенца - скорее артефакт аспектной базы, хотя тоже забавно.

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

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

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