170 likes | 473 Views
Быстрая коррекция ошибок в поисковых запросах. Сметанин Н. А. РИ-480208. Требования. Высокая скорость работы Интеграция с поисковой машиной Исправление орфографических ошибок Исправление склеек и разрывов слов Исправление контекстных ошибок Устранение морфологических ошибок
E N D
Быстрая коррекция ошибок в поисковых запросах Сметанин Н. А. РИ-480208
Требования • Высокая скорость работы • Интеграция с поисковой машиной • Исправление орфографических ошибок • Исправление склеек и разрывов слов • Исправление контекстных ошибок • Устранение морфологических ошибок • Избавление от фонетических неоднозначностей • Множественные варианты возможных исправлений
Существующие программные решения Поисковые машины • Apache Lucene, FAROO, Sphinx, Dataspark Engine, Open Search Server, Xapian Поисковые системы • Google, Яндекс, Bing, Duck Duck Go, Wikia Search
Apache Lucene Исправление орфографических ошибок Исправление контекстных ошибок
Поисковые системы – Google, Yandex Достоинства: поддерживают наибольшее число методов коррекции поисковых запросов. Недостатки: закрытые системы – невозможно интегрировать в свой проект, расширять и адаптировать их.
Сравнение функциональных возможностей поисковых машин
Разработка модуля коррекции ошибок На основе поисковой машины «Xapian» на языке «С++» мной был разработан полноценный модуль коррекции ошибок в поисковых запросах. Данный модуль реализует исправление всех типов ошибок, указанных в требованиях.
Поиск возможных исправлений– метод N-грамм Индексация – слово разбивается на множество N-грамм (подстрок длины N) В таблицу заносится соответствие N-граммы списку слов, содержащих её. Подбор кандидатов на исправление – исходное слово запроса разбивается на N-граммы, для каждой N-граммы перебирается все слова, содержащие её
Улучшения метода N-грам Так как метод N-грамм является фильтрующим методом (отсеивает около 95% слов), То имеется возможность еще больше сократить обрабатываемое множество слов. Каждая N-грамма заносится только в таблицу с номером, соответствующим положению N-граммы в исходном слове.
Метрика Левенштейна Метрика Левенштейна – расстояние между двумя словами, определяемое минимальным числом операций удаления, добавления или замены единичных символов, которые преобразует одно слово в другое. Значение метрики Левенштейна определяет степень сходства двух слов. • Преобразование «Дагестан» в «Арестант»: • 1. Дагестан → Агестан – операция удаления одного символа «Д». • 2. Агестан→ Арестан– операция замены символа «Г» на «Р». • 3. Арестан→ Арестант– операция добавления символа «Т». • Таким образом, результирующее значение метрики будет = 3.
Вычисление метрики Левенштейна Метрика Левенштейна вычисляется с помощью алгоритма Вагнера-Фишера Формула вычисления значения очередного элемента матрицы Хв, Xз, Ху– предыдущие значения метрики, соответственно, для вставок, замен и удалений символов. Сзамены – «стоимость» замены символа Dij – результирующее значение метрики Матрицапроцесса вычисления метрики
Метрика Дамерау-Левенштейна Метрика Дамерау-Левенштейна – расстояние между двумя словами, определяемое минимальным числом операций удаления, добавления или замены единичных символов, а также перестановки двух соседних символов, которые преобразует одно слово в другое. Метрика Дамерау-Левенштейна является усовершенствованным вариантом метрики Левенштейна, увеличивая количество обнаруживаемых ошибок в запросе. Формула вычисления значения очередного элемента матрицы при расчёте метрики Дамерау-Левенштейна Хв, Xз, Ху, Хт– предыдущие значения метрики, соответственно, для вставок, замен, удалений и транспозиций символов. Сзамены – «стоимость» замены символа Странспозиции– «стоимость» транспозиции двух смежных символов Dij – результирующее значение метрики
Фонетические алгоритмы Задача – исправить ошибки фонетической природы, т.е. найти все слова, схожие по звучанию с исходным словом Таблица преобразованийдля алгоритма Daitch-MokotoffSoundex
Дополнительная функциональность • Исправление контекстных ошибок • Исправление морфологических ошибок • Исправление склеек и разрывов слов • Исправление клавиатурных раскладок • Специальный оператор запроса «FUZZY» • Автоматическое определение языка запроса
Тестирование функциональности • Исправление орфографических и контекстных ошибок:«the unknown brown quikforsjumpsover the lazy fogx»«the unknown brown quick fox jumps over the lazy dog» • Исправление склеек и разрывов слов:«drckingthedrckingthe»«docking the docking the» • Транслитерации слов из нелатинских алфавитов:«привет howare ты pozhivaesh»«privethowareti поживаешь» • Исправление некорректных раскладок клавиатуры:«trfnthby,ehuisшьзкуыыштп»«екатеринбургisimpressing» • Исправления фонетических искаженийФонетический код («Шварцнегер») = Фонетический код («Швэртснегир») • Классификация языков запросов:Английский: «london is the capital of great Britain»;Русский: «мама мыла раму»;Японский: «みつびしお疲れさん»;Китайский: «拼音漢字汉字官話»;Украинский: «мовакорінногонаселенняУкраїни».
Тестирование производительности Результат сравнительного тестирования производительности различных алгоритмов: Среднее время поиска возможных исправлений слов на множестве из 3.2 млн слов. Время поиска (мс) (меньше – лучше)
Заключение • Рассмотрены и проанализированы 11 поисковых машин и систем, проведен сравнительный анализ и выявлены их достоинства и недостатки. • Описаны подходы и алгоритмы, позволяющие реализовать функциональность коррекции ошибок в поисковых запросах. • Разработана полноценная подсистема коррекции ошибок на базе поисковой машины «Xapian».