Upload
-
View
164
Download
3
Embed Size (px)
DESCRIPTION
2013 осень
Citation preview
Анализ речевых команд методом опорных векторов
в приложении-помощнике
Николай Иванов, 525 группа
Научный руководитель:
Елена Анатольевна Бордаченкова
8 октября, 2013
2
План доклада
1. Интеллектуальные персональные помощники
2. Проект русскоязычного помощника
3. Анализ команд с помощью SVM
4. Оценка работы анализатора
3
Интеллектуальные помощники
● телефонный вызов● отправка sms и электронных писем● поиск информации в интернете● и т. д. и т. п.
помощь человеку в использовании мобильного устройства
Назначение –
голосовое управлениеОсобенности –
Функции:
Позвони, пожалуйста, Васе
Напиши sms с текстом «привет»
Скажи мне, что такое «перцептрон»
Интеллектуальные персональные помощники
4
Apple Siri
Интеллектуальные персональные помощники
5
Google Glass
Интеллектуальные персональные помощники
6
Интерфейс
Проект русскоязычного помощника
7
Функциональность
● позвонить
● отправить sms
● написать email
● открыть сайт
1. Запись и распознавание речевых команд
2. Извлечение из команд нужной информации
3. Запуск функции мобильного устройства:
● искать в интернете
● поставить будильник
● проверить баланс
Проект русскоязычного помощника
8
Требования
1. Устойчивость – нейтрализация ошибок распознавания речи.
2. Применимость к различным формулировкам команд
3. Языковая расширяемость – добавление новых формулировок команд.
4. Функциональная расширяемость – добавление нового типа команды
5. Автоматическая обучаемость – накапливание полезной информации
Проект русскоязычного помощника
9
Устойчивость
Найди мне в википедии значение слова «интерференция»
«википедия значение слова интерференция»
Поиск в интернете
Сайт: «википедия»
Запрос: «интерференция»
неточная команда:
извлеченнаяинформация:
Проект русскоязычного помощника
Rino Recognizer
Google Speech API
Пример:
10
Архитектура приложения
Проект русскоязычного помощника
11
Метод опорных векторов (SVM)
Применение SVM:
● категоризация текстов
● выделение в тексте
собственных имен, дат
● распознавание лиц,
рукописного текста
● классификация
химических веществ
определение разделяющей гиперплоскости,
максимизирующей расстояние между классами.
Задача –
Анализ команд с помощью SVM
12
Особенности пользовательских команд
1. Отсутствие знаков препинания и заглавных букв: « позвони васе »
2. Ошибки распознавания:« позвони асе »« звонить в асе »
3. Неправильные предложения:
« вася »« васю мне »
4. Многообразие формулировок:« набери васю » « набери мне василия ивановича »« а теперь набери ка мне пожалуйста василия ивановича »
…
Позвони ВасеПример:
Анализ команд с помощью SVM
13
Задача анализатора
На входе — текстовое представление команды:
На выходе — сформированная команда со всем необходимыми параметрами:
Задача анализатора — извлечение из текстовой строки нужной информации и формирование команды.
Отправка SMS
Телефон 8-495-123-45-67 (Вася)
Текст «перезвони»
«отправь смс васе с текстом перезвони»
Анализ команд с помощью SVM
RinoRecognizer
14
Этапы анализа команд
«отправь смс васе с текстом перезвони»
Отправка SMS
Получатель 84951234567
Текст «Перезвони»
Отправка SMS
Получатель: ВасяТекст: «перезвони»
1.
2.
3.
Анализ команд с помощью SVM
Определение типа команды(анализ всей команды целиком)
Определение параметров команды(анализ каждого слова команды)
Формирование фрейма команды
(дополнительныйанализ параметров)
15
Определение типа команды
Признаки команд: Для каждого слова команды определить, входит ли слово в определенную семантическую группу и сколько раз?
● позвонить ● отправить sms● написать email
● открыть сайт● искать в интернете● поставить будильник● проверить баланс
Типы команд:
«позвонить по номеру 8 917 123 45 67»
(2, 0, 0, 1, 0, 0, 1, 1, 5,...)вектор признаков:
Анализ команд с помощью SVM
команда:
1. «позвонить», «телефон», «номер», ...2. «отправить», «sms», «сообщение», ...3. «email», ...
Семантические группы:
команда:
16
Семантические группы слов
a_call
a_sms
a_email
...
\w*звон\w+|набрать|набер\w+|набир\w+|соедин\w+|...
смс\w*|sms|сообщение|смс|напиш\w+|напис\w+|...
e?mail|письмо|напиш\w+|напис\w+|набрать|...
...
s_text
s_search
s_prepos
текст\w*
такое|значит|про|о|слов\w*|поняти*|...
в|без|до|из|к|на|по|о|от|перед|при|через|с|...
p_name
p_number
p_email
p_site
p_time
Имя|Фамилия|Отчество|мам\w+|вас\w*|леш\w*|...
Номер|\d+|\+|плюс
Адрес|[^S]+@[^S]+|e?mail|письмо
Сайт|\w+\.+ru|com|org|net|su
Время|\d{1,2}|утр\w+|вечер\w*|час\w*|минут\w*|...
Регулярное выражение:Группа:
Анализ команд с помощью SVM
1
2
3
...
8
9
10
11
12
13
14
15
№
17
Получение вектора признаков команды
Правило получения вектора:i-ая компонента вектора признаков показывает, сколько раз слово из i-oй семантической группы входит в текст команды.
«напиши смс сообщение василию ивановичу с текстом здравствуйте»
(0, 3, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0)
команда:
вектор признаков:
(0, 0.75, 0.25, 0, 0, 0, 0, 0.67, 0, 0, 0, 0, 0, 1, 0)
Корткая запись вектора признаков (формате libsvm):
«нормализованный» вектор признаков:
(2:0.75, 3:0.25, 8:0.67, 14:1)
Анализ команд с помощью SVM
v[i] = v[i] / max v[i]
18
241...
a_smsa_searcha_call...
Коллекция размеченных команд
отправь смс с текстом _напиши _мненайди в интернете что такое _смспожалуйста позвони леше...
2:0.5 13:1 15:1 2:0.5 4:1 14:1 1:0.333333 8:0.5 ...
Векторы признаков:
~400 предложений
№ типа:
Анализ команд с помощью SVM
Внутреннее представление коллекции:
a_call ~75a_sms ~75a_email ~80a_search ~100a_site ~20a_alarm ~30a_balance ~20
Кол-во размеченных команд по типам:
19
241...
Обучение модели для классификации команд по типам
2:0.5 13:1 15:1 2:0.5 4:1 14:1 1:0.333333 8:0.5 ...
библиотека libsvm
Файл модели (включает в себя перечисление всех опорных векторов)
Внутреннее представление коллекции:
Анализ команд с помощью SVM
20
Применение модели для классификациикоманд по типам
«позвони пожалуйста васе»
(1:0.5, 8:0.33)
Тип команды: a_call
библиотека libsvm + обученная модель
Применение модели:
Анализ команд с помощью SVM
Rino Recognizer
21
Определение параметров команды
«отправь пожалуйста смс васе с текстом привет»
action other action
p_name
other
q_mark
quote
action «позвони», «смс»
p_name «васе»p_number «8», «917»p_email «[email protected]»
Разметка команды:
Метка Пример: p_site «yandex.ru»p_time «7», «часов»
quote слово из текста смсq_mark «текстом»
other «пожалуйста»
Метка Пример:Используемые метки:
Анализ команд с помощью SVM
22
Получение вектора признаков слова
Правило получения вектора слова:если данное слово входит в i-ое множество ключевых слов, то i-ая компонента вектора равна 1, иначе – 0.
« отправь васе смс c текстом набери сашу »Пример:
(1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
Контекстслова «набери»: (0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0)
Итоговый вектор признаковв формате libsvm для слова «набери»: (1:1 2:1 3:1 28:1 38:1)
Анализ команд с помощью SVM
23
Применение модели для определения параметров команд
Метка: quote
библиотека libsvm +обученная модель SVM_sms
« отправь васе смс c текстом набери сашу »
Пример: определение метки для слова «набери»
(1:1 2:1 3:1 28:1 38:1) Rino Recognizer
Анализ команд с помощью SVM
24
Семантическая группировка слов
«отправь василию ивановичу смс привет как дела»
action p_name p_name action quote
«отправь василию ивановичу смс привет как дела»
action p_name action
После группировки:
quote
До группировки:
quote quote
Внутреннее представление:
(«отправь», «василию ивановичу», «смс», «привет как дела»)
(action, p_name, action, quote)
Анализ команд с помощью SVM
25
«отправь»action
Заполнение фрейма команды
private class SmsFrame {private Uri numUri;private String text;
public SmsFrame();public void fill();private boolean check();
}
«привет как дела»
Программная реализация
фрейма отправки SMS:
p_name
quoteaction
«василию ивановичу»
«смс»
8-495-123-45-67
«Привет как дела»
Работа функции fill():
= numUri
= text
Анализ команд с помощью SVM
26
Демонстрация работы приложения
Анализ команд с помощью SVM
27
Модели: «25/75» «50/50» «80/20»
action 89.2% 96.7% 97.4%
a_call 100% 100% 100%
a_sms 92.8% 95.7% 96.7%
a_email 94.2% 93.6% 94.6%
a_search 99.3% 98.9% 100%
a_site 84.6% 100% 100%
a_alarm 93.9% 98.5% 100%
a_balance 97.5% 98% 100%
Average 94.0% 97.7% 98.6%
Оценки точности классификации
обучение: 25% 50% 80%тестирование: 75% 50% 20%
Разбиение коллекции на обучающую и тестовую выборки:
Оценка работы анализатора
28
Преимущества метода опорных векторов
1. Повышение устойчивости анализа пользовательских команд
к некоторым ошибкам распознавания речи
2. Применимость к произвольным формулировкам команд
3. Учёт скрытых закономерностей и зависимостей при обучении
классификатора на большом количестве размеченных данных
Оценка работы анализатора
29
Литература и ссылки
1. Intelligent personal assistant, Wikipedia
http://en.wikipedia.org/wiki/Intelligent_personal_assistant
2. Автоматическая обработка текстов на естественном языке и
компьютерная лингвистика : учеб. пособие / Большакова Е. И.,
Клышинский Э. С., Ландэ Д. В. и др. – М.: МИЭМ, 2011. – с.181-184.
3. LIBSVM — A Library for Support Vector Machines
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
4. Иванов Н.И. Применение метода опорных векторов для анализа речевых
команд в приложении-помощнике для мобильных устройств, – 2013
https://docs.google.com/file/d/0B6_tjXwNAFn0anJ6WHU4dFNULUU/
30
Спасибо за внимание!