180 likes | 477 Views
Обнаружение и исправление ошибок в словах. Докладчик: Анна Вероника Дорогуш, разработчик группы Морфологии. Зачем это нужно?. Первое применение: нахождение ошибочные записи в базах данных Сегодня используется повсеместно. Проверка орфографии в текстовых редакторах
E N D
Обнаружение и исправление ошибок в словах Докладчик: Анна Вероника Дорогуш, разработчик группы Морфологии
Зачем это нужно? Первое применение: нахождение ошибочные записи в базах данных Сегодня используется повсеместно. • Проверка орфографии в текстовых редакторах • Подсказки пользователю при наборе текста • Распознавание речи(ASR) • Оптическое распознавание текста (OCR) Оснавнаязаадча–исправялтьопичаткииошипки.
Типы ошибок в словах • Опечатки (случайный набор неверного символа) Матрос →Мартос Матрос → Матрас • Орфографические ошибки (пользователь не знает, как пишется слово) Матрос →Мотрос Бодаться →Бадаться • Ошибки распознавания layer→Iayer (второе слово начинается на iбольшое) Щупальца → Шупальца Макушка→Манушка
Задача 1: Обнаружить ошибки Постановка задачи: Необходимо ответить на вопрос, есть ли в тексте слова с ошибками, и если таковые имеются, указать их. Вчера Георгий колбякнулсясо стула. WARNING !!!Найдена ошибка!!!
Понятие N-граммы • Символьные триграммы: матрос →#ма, мат, атр, тро, рос, ос# • Словные биграммы Мама мыла раму.→<s Мама, Мамамыла, мылараму, раму /s> • Биграммы из признаков (например, части речи) Мама мыла.→<s сущ., сущ. гл., гл /s>
Методы решения • На основе N-грамм • Проверка по допустимым триграммам • Насколько часто данная триграмма встречается в тексте • Поиск слова в словаре • Словарь в виде бора, отдельное хранение окончаний и основ • Хэширование
Задача 2: Исправление ошибок Постановка задачи: Необходимо ответить на вопрос, правильно ли написано слово, и если нет, представить набор вариантов исправления Шёл геркчерез реку. Вариант исправления: грек
Исправление ошибок Необходимо: • Уметь строить похожие варианты • Уметь их сравнивать 1 способ: рассматриваем все слова в словаре, до каждого считаем расстояние Левенштейна, выбираем ближайшее слово. Это долго….
Исправление ошибок 2 способ: • Генерируем все строки, которые можно получить из данной за одну или две ошибки. • Проверяем есть ли они в словаре. • Выбираем лучший вариант. Вопрос: а как понять, какой лучший?
Вычисление схожести • Штраф за ошибки по Левенштейну. • Одинаковый штраф за любое изменение. • Эвристики для вычисления штрафов. • Таблица частотностей ошибок. • Триграммы: • Штраф - число различных триграмм. • Триграммам назначаем веса (у первой и последней большой вес, вес в зависимости от символов-участников) • XOR по битовому вектору флагов наличияуниграмм и биграмм • Использование частотности вариантов-ответов
Проблемы В некоторых языках есть составные слова. Например, в немецком. Donaudampfschiffahrtselektrizitätenhauptbetriebs- werkbauunterbeamtengesellschaft
Проблемы • Есть более сложные ошибки. • Транспозиция соседних символов. Матрос →Маторс • Транспозиция несоседних символов. Опечатка →Очепятка • Ошибок может быть больше двух. Если допускать сложные ошибки и разрешать много ошибок, возможных вариантов исправления будет много. Решение Бор (Trie) + Очередь с приоритетами (Priority queue)
Проблема: ложные тревоги Автозамены • Неполнота покрытия лексикона словарем • Термины, имена собственные • Возможные решения • Расширение словаря • Использование дополнительных словарей терминов и редких слов • Автоматическое определение имен собственных Эллочка → Ёлочка Два ужика→ Два ёжика Himmler → Hitler
Проблема: пропуск ошибок Слово с ошибкой оказывается словарным • Возможные решения • На основе грамматического анализа Отличный день, чтобы расслабится и ничего не делать. • Правила, написанные экспертом • Триграммы из грамматических значений • На основе семантического анализа Кошка родила китёнка. • На основе словных N-грамм
Алгоритм Витерби для исправления ошибок Задача: Подобрать значения, которые скорее всего были на входе. Зашумленный канал Исходные данные Наблюдаемое значение На сталележит рамб от картины. На столе лежит рама от картины.
Что еще интересного? • Как реализовать дополнение слов? • Как узнать слово, записанное со звука, то есть звучащее похоже, но записанное с ошибками?
SOUNDEX • Оставляем первую букву • Заменяем следующие буквы дефисами: a,e,i,o,u,y,h,w. • Остальные буквы заменяем цифрами следующим образом: • b,f,p,v : 1 • c,g,j,k,q,s,x,z : 2 • d,t : 3 • l : 4 • m,n : 5 • r : 6 • Удаляем повторяющиеся цифры из записи • Удаляем дефисы • Оставляем первые три числа, дополняем нулями
Спасибо за внимание Вапросы ? Ворпосы Вопрооы ? ? ? Вопорсы Вопрось ? Вопросы ? ? ? Вопроссы Вонросы Dопросы Вопросьi