Индексирование текста для поиска с учетом орфографических

advertisement
УДК: 004.7 : 004.512
О.А. Тодорико, Г.А. Добровольский
ОЦЕНКА СИГНАТУРНЫХ АЛГОРИТМОВ ПОИСКА ПО СХОДСТВУ В
СЛОВАРЕ
Постановка проблемы. По данным системы Яндекс, около 10% запросов
содержат ошибки или опечатки [1]. Поисковая система должна это учитывать, и на
этапе обработки информации, и на этапе выполнения запроса пользователя.
Одной из проблем, возникающих при обработке текстов на украинском, русском
и других синтетических языках, является большое количество форм одного слова,
которые нужно или постоянно хранить, или составлять во время поиска, или
кодировать в поисковом индексе. Первый способ нуждается в больших объемах
памяти, второй требует большего времени выполнения, третий, насколько известно,
рассматривался лишь в некоторых роботах [2, 3, 4].
Целью работы является исследование разработанных словарных алгоритмов
поиска по сходству [Error! Bookmark not defined.], когда требуется найти в словаре
записи, похожие на заданную строку. Промежуточной задачей было построение
индекса, занимающего минимальный объем, учитывающего всевозможные формы
слова и позволяющего приближенно сравнивать содержимое словаря с образцом.
Индекс должен обеспечивать быстрое выявление нерелевантных записей и допускать
параллельное выполнение.
Анализ публикаций. На сегодняшний день в качестве контрольной меры
степени «похожести» между словами используются различные модификации метрики
Левенштейна [5], однако значительная вычислительная сложность алгоритмов делает
неэффективным их использование для поиска в больших массивах данных.
Аналогичное препятствие возникает при поиске по сходству с использованием полного
перебора, или последовательного поиска [6, 7]. Метод расширения выборки, или метод
спел-чекера[6] опирается на известные способы поиска точного соответствия, однако
при допущении 2-х и более ошибок расширенная выборка становится слишком
большой. Различные типы деревьев [7] за счёт структуры данных уменьшают
количество сравнений, но сложно составить их хорошо сбалансированные
параллельные аналоги.
Предварительная фильтрация с помощью быстрых и неточных функций
сравнения проста для реализации. Наиболее известными из таких методов являются
метод n-грамм[6] и хеширование по сигнатуре[4]. Похожим целям в случае поиска
точного соответствия служит фильтр Блума[8]. Такие алгоритмы легко адаптируются
для параллельных вычислений и оптимальны при обработке больших объемов данных.
Метод n-грамм [6] основан на предположении, что похожие слова обладают
достаточным количеством общих подстрок длины n (n-грамм). Однако этот подход не
работает для коротких терминов, когда изменение одной буквы приводит к
«непопаданию» слова в выборку.
В методе хеширования по сигнатуре [4] для каждого слова v при заданном
алфавите А вычисляется сигнатура sign(v) — битовый вектор размерности m, k-ый
элемент которого равняется единице, если в слове v есть k-й символ алфавита. Битовый
вектор sign(v) интерпретируется как двоичная запись числа - значения хеш-функции
H(v), что позволяет организовать словарь в виде хеш-таблицы. Если слово v получено
из u в результате одной операции редактирования, то в силу определения сигнатуры,
битовые векторы sign(v) и sign(u) отличаются не более чем в двух разрядах. Это
свойство позволяет использовать сигнатуры для поиска по сходству.
Фильтр Блума [8] — вероятностная структура данных, позволяющая
компактно отображать множество элементов в битовый массив и проверять
принадлежность заданного элемента к множеству. Ниже будет показано, что структура,
аналогичная фильтру Блума, при подходящих хеш-функциях может быть успешно
использована для поиска по сходству.
Основная часть
Пусть существует словарь S, состоящий из n записей, где каждая запись u (в
дальнейшем просто запись) содержит слово и все его словоформы, h – искомый
образец, который может отличаться от слов записи наличием лишних, пропущенных,
изменённых или переставленных символов. Необходимо получить ранжированный
набор записей, содержащих слова, которые находятся от образца на расстоянии
редактирования, не превышающем заданного количество ошибок d.
Предложенные в работе алгоритмы базируются на сопоставлении каждой записи
набора сигнатур таким образом, чтобы сигнатуры похожих записей отличались
незначительно. По аналогии с фильтром Блума один набор сигнатур описывает всю
запись, а не отдельно слово и все его словоформы. Тогда необходимый для их хранения
объем памяти сокращается. Построение сигнатур является подготовительным этапом и
выполняется один раз.
Было исследовано четыре различных варианта построения сигнатур. Исходные
данные одинаковы для всех алгоритмов, отличаются только способы построения
индекса, ранжирования результатов. Рассмотрим эти отличия более подробно.
Вариант 1. Каждая запись описывается в поисковом индексе набором сигнатур
H, в котором H0 - учитывает все буквы записи, Hi (i=1,2,3,...,n-1) - все символы записи,
находящиеся на i-й позиции, Hn - длина словарной формы слова.
Перед вычислением релевантности записи вычисляется количество общих бит
dw сигнатур H0(u) и H0(h). Если значение dw меньше минимально допустимого, то
запись считается неподходящей и пропускается.
В отличие от метода хеширования по сигнатуре [4], дополнительные хеши Hi
(i=1,2,3,...,n) используются для ранжирования результатов поиска с помощью
релевантности, вычисляемой по формуле:
n
Re l = const  Lu  Lh  + dw +  wi ,
(1)
i=1
где Lu, Lh - длины образца и слова, dw - количество общих букв у образца и слова, с
учетом его словоформ, wi - количество совпадающих бит i-й сигнатуры образца Hi(h) с
объединенными сигнатурами слова Hi(u), Hi-1(u), Hi+1(u).
Вариант 2. Способ построения сигнатур и формула вычисления релевантности
отличаются от варианта 1 добавочными хешами: минимальная Lmin и максимальная Lmах
длины слов записи, и способом вычисления вклада i-й сигнатуры в релевантность - wi.
Для фильтрации, кроме сигнатур H0(u) и H0(h), используются Lmin и Lmах.
В данном варианте wi - количество совпадений комбинации сигнатур образца
Hi(h), Hi+1(h), Hi+2(h) с комбинацией сигнатур записи Hi(u), Hi+1(u), Hi+2(u). Таким
образом сравниваются все подстроки длиной в три символа. Если i равно длине строки,
недостающие символы берутся из ее начала. Строки из 1-й, 2-х символов
рассматриваются целиком. Отдельно обрабатывается отсутствие в образце первого
символа, так как в этом случае известные методы коррекции ошибок дают наибольшую
погрешность [Error! Bookmark not defined.].
Вариант 3. Для каждой записи поисковый индекс описывается сигнатурой H0
всех символов записи, длиной самого короткого Lmin и самого длинного Lmах слова
записи. Далее строятся сигнатуры Hi непересекающихся подстрок длиной три символа
(i=1,2,...,n, где n=L/3, L — длина слова записи). Если количество символов не кратно
трем, то в конец добавляются пробелы. Релевантность записи вычисляется по формуле:
n
Rel= ∑ wi ,
(2)
i=0
где wi - количество общих бит i-й сигнатуры образца и i-й сигнатуры записи.
Если w0 меньше предельного значения, зависящего от допустимого количества
ошибок d, то запись считается нерелевантной и далее не рассматривается.
Вариант 4. В этом варианте сигнатура H0 хранит длину самого короткого Lmin и
самого длинного Lmах слова записи; H1 отражает все символы записи; H2 — символы,
присутствующие в каждом слове записи. Для определения Hi (i=2,...,n+1) привлекается
окрестность каждого из первых n наиболее часто употребляемых символов алфавита.
Ранжирование использует величину Dist, возрастающую одновременно с расстоянием
редактирования:
n
Dist = Lu  Lh  + diff + dw +  wi .
(3)
i=1
где Lh — длина образца; Lu = Lmin, если длина образца меньше минимальной длины
записи и Lu = Lmах, иначе Lu = Lh, если длина образца больше максимальной длины
слова; diff - количество символов, которые есть в записи, но нет в образце; dw количество символов, которые есть в образце, но нет в записи; wi - количество
несовпадающих бит i-й сигнатуры образца и i-й сигнатуры записи, если и в образце и в
записи i-я сигнатура не равна нулю, wi=0, если обе сигнатуры нулевые, иначе wi=1.
Если при вычислении по формуле (3) какое-то из слагаемых превышает
допустимое количество ошибок, запись считается нерелевантной и отбрасывается.
Оценка качества представленных алгоритмов.
Предложенные выше разработанные алгоритмы сравниваются с известными
методами нечеткого словарного поиска: n-граммы, частотные деревья, kd-деревья,
хеширование по сигнатуре.
Тестирование производилось на объединенных в одно множество словах из
орфографического словаря под ред. проф. Лопатина, словаря русской литературы
(http://www.serann.ru/vocabuli/) и всех слов романов Льва Толстого «Война и мир» и
«Анна Каренина». Из этого множества выбирались наборы в 100, 200, 400 тысяч слов.
Поисковыми образцами служили слова с типичными для русского языка
ошибками, перечисленные в статье [9]. Такой набор образцов ближе к реальным
задачам и поэтому предпочтительнее автоматически сгенерированного.
Результатом работы описанных в данной статье алгоритмов является
упорядоченный набор записей, которые могут оказаться релевантными. Адекватными
численными характеристиками качества поиска в этом случае служат
макроусредненная средняя точность и эффективность отбора индекса.
Макроусредненная средняя точность (Mean Average Precision - МАР) [6] - это
усреднённый по разным поисковым запросам и по количеству найденных записей
процент релевантных слов в результатах поиска. Вычисленные значения МАР (табл. 1)
показывают, что на больших словарях значение МАР определяются способами
нахождения релевантности и условиями фильтрации, а не размером словаря.
Эффективность отбора индекса — это процент слов, которые могут оказаться
релевантными [10]. Таким образом, чем больше доля правильно отброшенных слов, тем
меньше показатель эффективности и тем качественнее работает алгоритм.
В табл. 2 выписаны показатели эффективности отбора индекса для
предложенных алгоритмов и других распространенных методов поиска, значения
которых опубликованы в работе [10]. Из таблицы видно, что показатель эффективности
отбора зависит исключительно от способа фильтрации (варианты 1 и 2 имеют
одинаковый алгоритм определения нерелевантных слов).
Таблица 1 Макроусредненная средняя точность (MAP) при максимальном
расстоянии редактирования d = 2
Методы
вариант 1
вариант 2
вариант 3
вариант 4
100 тыс. слов
0.0170
0.0835
0.0756
0.1506
Размер словаря
200 тыс. слов
400 тыс. слов
0.0170
0.0170
0.0835
0.0835
0.0756
0.0756
0.1506
0.1506
Таблица 2 Показатель эффективности отбора индекса при максимальном
расстоянии редактирования d = 2
Методы
част. дерево
n-грамм(1)
kd-дерево
хеш. сигнат.
вариант 1
вариант 2
вариант 3
вариант 4
100 тыс. слов
0.021
0.045
0.081
0.075
0,056
0,056
0,053
0,002
Размер словаря
200 тыс. слов
400 тыс. слов
0.021
0.021
0.045
0.046
0.079
0.076
0.075
0.074
0,028
0,019
0,028
0,019
0,027
0,018
0,001
0,001
Выводы. Предложенные алгоритмы охватывают все формы слова и проявляют
стойкость к вставке, замене, удалению символа, перестановке символов. В процессе
поиска записи, которые точно не удовлетворяют условию поиска, отбрасываются, и их
релевантность не вычисляется. Таким образом, происходит сужение выборки уже в
процессе обработки, что позволяет экономить вычислительные ресурсы.
Численные характеристики качества поиска - макроусредненная средняя
точность и показатель эффективности отбора индекса, - показали высокое качество
выполняемого ими предварительного поиска по сходству в словаре. Эти алгоритмы
оказались способны находить слова, близкие к образцу, отсутствующему в словаре.
Недостатком вариантов 1, 2 является чувствительность к вставке 2-х и более
символов, которая отдаляет все остальные буквы от «правильной» позиции. Их же
преимуществом является простота и малое количество сигнатур. Варианты 2, 3 хорошо
показали себя при поиске с отсутствием первой буквы, или поиске образца,
отсутствующего в словаре. Вариант 3 обходится наименьшим количеством сигнатур
при относительной простоте реализации.
Главной особенностью варианта 4 является малая чувствительность к вставке и
удалению, т.к. он учитывает только относительные позиции символов. Большое
количество сигнатур делает эффективность отбора индекса очень высокой —
правильно отвергаются 99,9% и более явно непохожих на образец слов. Однако
большое количество признаков требует для хранения большего объёма памяти и
большего времени для построения поискового индекса.
В текущей реализации основной упор делался на качество поиска, а
вычислительная сложность, сжатие индекса и скорость работы пока остались без
внимания. В дальнейшем, можно увеличить скорость поиска, используя одну из
сигнатур в качестве ключа для организации хеш-таблицы. Другим способом ускорения
может стать разделение словаря на части с последующим параллельным поиском в
этих фрагментах.
ЛИТЕРАТУРА:
1 Поиск в Интернете: региональные особенности [Электронный ресурс]. – Режим
доступа: http://company.yandex.ru/facts/researches/ya_regions_search_2010.xml#2.3
2 Тодоріко О.О. Словниковий пошук за схожістю за допомогою хешів на основі
сигнатур / О.О. Тодоріко, Г.А. Добровольський // Вісник ХНТУ. – № 3(39). – Херсон:
ХНТУ. – 2010. – С. 467-471
3 Гниловская Л. П. Автоматическая коррекция орфографических ошибок /
Л. П. Гниловская, Н. Ф. Гниловская // Культура народов Причерноморья. – 2004. –
Т. 2, № 48. – С. 171–180
4 Бойцов Л.М. Использование хеширования по сигнатуре для поиска по сходству /
Л.М. Бойцов // Прикладная математика и информатика. М. Изд-во факультета
ВМиК, МГУ 2001, № 8 стр. 135-154
5 Navarro G. A guided tour to approximate string matching / G Navarro // ACM Computing
Surveys 2001, 33 (1): P. 31–88
6 Manning Christopher Introduction to Information Retrieval / Christopher D. Manning,
Prabhakar Raghavan, Hinrich Schütze // Cambridge University Press, 2008, 496 р.
7 Бойцов Л. M. Современные поисковые системы: структуры данных и стратегии
поиска [Электронный ресурс] . – Режим доступа:
http://www.itman.narod.ru/ir/review/review.pdf
8 Bloom Burton Howard Space/time trade-offs in hash coding with allowable errors / Burton
H. Bloom // Communications of the ACM 1970, Т. 13 (7): P.422–426
9 Лавошникова Э.К. О компьютерной коррекции психологически обусловленных
ошибок правописания в текстах на русском языке [Электронный ресурс]/
Э.К. Лавошникова // М., 2008.– Режим доступа: lcl.srcc.msu.ru/library/EL_MISTAKES
10 Бойцов Л. М. Классификация и экспериментальное исследование современных
алгоритмов нечеткого словарного поиска [Электронный ресурс] / Л. М. Бойцов //
Труды 6-ой Всероссийской научной конференции “Электронные библиотеки:
перспективные методы и технологии, электронные коллекции” - RCDL2004,
Пущино, Россия, 2004. – Режим доступа: http://www.rcdl.ru/papers/2004/paper27.pdf
ТОДОРИКО Ольга Алексеевна – ассистент кафедры информационных
технологий Запорожского национального университета.
Научные интересы:
- методы и технологии информационного поиска.
ДОБРОВОЛЬСКИЙ Геннадий Анатольевич - зав. лаб. веб-технологий и
дистанционного обучения ЗНУ
Научные интересы:
- информационные технологии в образовании, разработка архитектуры
современного программного обеспечения.
Download