57
SentiScan система автоматического анализа тональности в social media AI '14

SentiScan presentation @ AI Ukraine'14

Embed Size (px)

Citation preview

Page 1: SentiScan presentation @ AI Ukraine'14

SentiScanсистема автоматического анализа

тональности в social media

AI '14

Page 2: SentiScan presentation @ AI Ukraine'14

whois

Леонид ЛитвиненкоCTO

Дмитрий КанCEO

&

Page 3: SentiScan presentation @ AI Ukraine'14

Мониторинг ВК, Facebook, Twitter, Instagram, форумов, сайтов отзывов Встроенная аналитика и инструменты командной работыИспользуют отделы маркетинга, PR, поддержки клиентов крупных компаний

YouScan: система мониторинга соцмедиа

Page 4: SentiScan presentation @ AI Ukraine'14

Лингвистические алгоритмы и API

www.semanticanalyzer.info

[email protected]

Page 5: SentiScan presentation @ AI Ukraine'14

outline

- Постановка задачи- Теоретические границы- Why not machine learning- Алгоритм- Типичные проблемы- Метрики качества- Continuous integration- Система оценки- Планы на будущее

Page 6: SentiScan presentation @ AI Ukraine'14

пример

Object: ПутинSentiment tag?

Page 7: SentiScan presentation @ AI Ukraine'14

неоднозначность постановки задачи

- Настроение автора?- Настроение читающего?- Личное отношение к теме?- Что-то ещё, что предписал заказчик?

Page 8: SentiScan presentation @ AI Ukraine'14

тональность для компьютера

- Общий тональный фон- Извлечение мнений- Извлечение мнения по конретному

объекту- Определение силы тональности или

эмоции

Page 9: SentiScan presentation @ AI Ukraine'14

от задачи к решению: уровень качества

MTurk, ручная аннотация: 80% согласия [1]

Реальное качество -- то, которое система показывает на неаннотированных данных

Page 10: SentiScan presentation @ AI Ukraine'14

why not machine learning?

Некоторые методы дают 90% на тестовых данных

Page 11: SentiScan presentation @ AI Ukraine'14

why not machine learning?

Сложно (невозможно?) сделать таргет-ориентированный метод

Page 12: SentiScan presentation @ AI Ukraine'14

why not machine learning?

CEO of the company turned 50.

Page 13: SentiScan presentation @ AI Ukraine'14

переобучение моделей

[2]

Page 14: SentiScan presentation @ AI Ukraine'14

потенцильно работающие методы

Naive Bayes -- для которотких сообщений (твитов) [3]

SVM -- для длинных (блог пост или статья)

Page 15: SentiScan presentation @ AI Ukraine'14

свежие веяния: deep learning

Back to the future: нейронные сети из 80-х [4]

Многонейронная логистическая регрессия

Требует больших вычислений

Не требует экспертных знаний

Page 16: SentiScan presentation @ AI Ukraine'14

[5]

Page 17: SentiScan presentation @ AI Ukraine'14

тональность в реальной жизни

Контроль над качеством

Быстрая аннотация

Высокая точность (precision) при возможных потерях в выдаче

Page 18: SentiScan presentation @ AI Ukraine'14

алгоритм (sketch)

- Лемматизация- Полярные лексиконы- Правила для русского языка- Shallow parsing + анафора- Учёт опечаток (Levenstein)

Page 19: SentiScan presentation @ AI Ukraine'14

полярные лексиконы

- Автоматический mining из twitter: :) & :(- Ручная вычитка частотных таблиц n-

грамм- Отбор полярно-однозначных кандидатов

Page 20: SentiScan presentation @ AI Ukraine'14

полуавтоматическое расширение

Vatzivassiloglou & McKeown, 1997

Page 21: SentiScan presentation @ AI Ukraine'14

правила

не / без / нет / … + {LEXICON_ENTRY} => инвертированная полярность

Page 22: SentiScan presentation @ AI Ukraine'14

правила

а / но / хотя / зато / ... - противопоставление полярностей левой и правой части

Page 23: SentiScan presentation @ AI Ukraine'14

правила: мультипасс оконный алгоритм

Page 24: SentiScan presentation @ AI Ukraine'14

shallow parsing

Большинство любит это, амне это не нравится.

Отрицание

Противительный союз

Score = totalPosScore - totalNegScore - { 0 | ½ *

sentimentCount }

без, не, еле, ни, нет (проблем)

Page 25: SentiScan presentation @ AI Ukraine'14

shallow parsing

Мне понравился новый iPhone, а GalaxyS неудобен в использовании.

Противительный союз

Score = totalPosScore - totalNegScore - { 0 | ½ *

sentimentCount }

а, но, зато, только, хотя

Page 26: SentiScan presentation @ AI Ukraine'14

schematic flow on sentence level

Большинство любит это, а мне не нравится.Phase 1 (negations): posScore = 0 - NEGATION_WEIGHT= -2

Phase 2 (individual words):“любит” posScore = -2 + 1 = -1“не” negScore = 0 + 1 = 1“нравится” posScore = -1 + 1 = 0

Phase 3 (opposite conjunctions): sentimentCount = 3

totalScore = posScore - negScore - ½ * sentimentCount == 0 - 1 - 3/2 = -5/2

Sentiment: NEGATIVE

Page 27: SentiScan presentation @ AI Ukraine'14

анафора

Джон встретил сегодня Ивана. Он передал Ивану текст договора.

Page 28: SentiScan presentation @ AI Ukraine'14

анафора

Джон встретил сегодня Ивана. Он передал Ивану текст договора.

Page 29: SentiScan presentation @ AI Ukraine'14

cтруктурный подход

∃ местоимение (м.р., ед.ч., им.п.) ⊂ P2 � (Джон ⊄ P2) => Он Джон

Struct 1 {

Джон встретить Иван}

Struct 2{

Он передавать Иван}

Page 30: SentiScan presentation @ AI Ukraine'14

анафора: симметрия

Джон встретил Ивана. Тот передал Джону ответ директора.

Page 31: SentiScan presentation @ AI Ukraine'14

анафора: симметрия

Джон встретил Ивана. Тот передал Джону ответ директора.

Page 32: SentiScan presentation @ AI Ukraine'14

поиск ссылки

∃ местоимение (м.р., ед.ч., им.п.) ⊂ P2 � (Иван ⊄ P2) => Тот Иван

Struct 1 {

Джон встретить Иван}

Struct 2{

Тот передавать Джон}

Page 33: SentiScan presentation @ AI Ukraine'14

гео-словарный подход (Interfax)

США?Америка?

Geo словарь

Соединенные Штаты

Глава Америки… Сегодня президент США Б. Обама

Глава

президент

премьер-министр

директор

страна, государство

правительство

завод

leader

leader

leader

[7]

Page 34: SentiScan presentation @ AI Ukraine'14

типичные проблемы

Мне от похмелья помогают ужасные бичевые кружки магги с сухариками, открыла чудо

Алгоритм: NEUTRALРучная: NEGATIVE

Исправление: пополнить словарь лемматизатора словами бичевый (-ая, -ое, ые)

Page 35: SentiScan presentation @ AI Ukraine'14

типичные проблемы #2

своих близких. Мы знаем несколько мест, где можно это сделать в Апатитах: - Магазин электротоваров “АКЦЕНТ+” на ул. Дзержинского, 35 (брелоки). - Гипермаркет “Твой” (дорожные жилеты, брелоки). - Магазин “Зооландия” (майки, шлейки, ошейники для собак). - Магазин “Спортмастер” (браслеты, полоски на велосипедные спицы). - Магазины “Евророс” (жилеты, брелоки). - Книжный магазин “Студент” на ул. Бредова, 13 (брелоки). - Обувной отдел в магазине “Силуэт” (браслеты, брелоки). - Магазин игрушек “Фантик” (брелоки). - Заправка “Статойл” (дорожные жилеты ...

Алгоритм: NEGATIVEРучная: NEUTRAL

Исправление: В негативный словарь закрались слова: “близкий” и “близко”. Их удаление исправило ситуацию.

Page 36: SentiScan presentation @ AI Ukraine'14

сложный случай

Ужасно замерзли( сейчас в Мак Кафе пьем горячий шоколад, ммм ... наслаждение)

Проблема: missing sentence boundary => sentiment overlap

Page 37: SentiScan presentation @ AI Ukraine'14

пополнение базы лексем

пичаль печальинет интернетваще вообще

Page 38: SentiScan presentation @ AI Ukraine'14

качество =

Page 39: SentiScan presentation @ AI Ukraine'14

какие задачи решает клиент

анализ отношения к продуктам

реагирование

Page 40: SentiScan presentation @ AI Ukraine'14

какие задачи решает клиент

общая картина (recall)

точный негатив (precision)

Page 41: SentiScan presentation @ AI Ukraine'14
Page 42: SentiScan presentation @ AI Ukraine'14

качество =max precision

max recall

Page 43: SentiScan presentation @ AI Ukraine'14

качество = max F (P, R)

F (P, R) = 2 P * R / (P + R)

Page 44: SentiScan presentation @ AI Ukraine'14

качество это не только

max F (P, R)

Page 45: SentiScan presentation @ AI Ukraine'14

качество это процесс

Page 46: SentiScan presentation @ AI Ukraine'14

инструментарий

- эталонная выборка- QA для новых версий- A/B тесты конфигураций- ошибки определения контекста- поток исправлений от клиентов

Page 47: SentiScan presentation @ AI Ukraine'14

эталонная выборка

- согласие в оценке 3-х лингвистов

- легко пополнять

Page 48: SentiScan presentation @ AI Ukraine'14

QA новых версий

- по тональности - конкретные

тексты

todo- те же метрики,

разные тексты

Page 49: SentiScan presentation @ AI Ukraine'14

A/B тесты конфигов

- title & text - emoticons- words boosters

todo- levenstein typos- версии словарей

Page 50: SentiScan presentation @ AI Ukraine'14

определение контекста

- ошибка лемматайзера

todo- тест с другими

лемматайзерами

Page 51: SentiScan presentation @ AI Ukraine'14

поток исправлений

- инсайты

todo- больше инсайтов- авто улучшение

Page 52: SentiScan presentation @ AI Ukraine'14

human vs algorithm

Page 53: SentiScan presentation @ AI Ukraine'14

Банк

и постригуткакого лохадополнительный доходэти ребусыобнулить абонку

Page 54: SentiScan presentation @ AI Ukraine'14

Michelin

бешено дрифтитединственная компанияколёса tweelпневма рулитnokian hakkapeliitta

Page 55: SentiScan presentation @ AI Ukraine'14

больше инсайтов

- частотные биграммы -> кандидаты в полярный словарь

- какое направление исправлений превалирует

- moving average precision/recall -> сигнал для движка

Page 56: SentiScan presentation @ AI Ukraine'14

we’re hiring :)

@dmitrykan@llytvynenko

Page 57: SentiScan presentation @ AI Ukraine'14

Литература

[1] Bermingham, A. and Smeaton, A.F. (2009). A study of interannotator agreement for opinion retrieval. In SIGIR, 784-785.[2] http://habrahabr.ru/company/yandex/blog/206058/ [3] http://habrahabr.ru/post/229779/[4] http://vimeo.com/77050653[5] http://nlp.stanford.edu/sentiment/ [6] Hatzivassiloglou & McKeown: Predicting the semantic orientation of adjectives. 1997[7] Zharikov A et al. Information Retrieval System for News Articles in Russian // The joint RuSSIR/EDBT 2011 Summer School, pp. 5-14. August 15-19, 2011