УДК: 004.7 : 004.512 О.А. Тодорико, Г.А. Добровольский ОЦЕНКА АЛГОРИТМОВ ПОИСКА ПО СХОДСТВУ Постановка проблемы. На сегодняшний день задачи создания эффективных средств автоматизированного исправления разного рода ошибок в текстовой информации все еще актуальны [1]. По данным поисковой системы Яндекс, около 10% запросов содержат ошибки или опечатки [2]. Поэтому поисковый механизм должен учитывать возможные ошибки как на стадии обработки информации, так и на стадии выполнения запроса пользователя. Одной из проблем, возникающих при обработке текстов на украинском, русском и других синтетических языках, является большое количество форм одного слова, которые нужно или постоянно хранить, или составлять во время поиска, или кодировать в поисковом индексе. Первый способ нуждается в больших объемах памяти, второй требует большего времени выполнения, третий, насколько известно, рассматривался лишь в некоторых роботах [3, 4]. Целью работы является исследование разработанных словарных алгоритмов поиска по сходству с учётом всех возможных форм слова, когда требуется найти в словаре записи, похожие на заданную строку. Промежуточной задачей было построение индекса, занимающего минимальный объем, учитывающего всевозможные формы слова и позволяющего приближенно сравнивать содержимое словаря с образцом. Полученный индекс должен обеспечивать поиск по сходству и допускать параллельное выполнение. Анализ публикаций. На сегодняшний день в качестве контрольной меры степени «похожести» между словами u и v используется метрика ДамерауЛевенштейна Lev(u,v)[5], или, как ее еще называют, расстояние редактирования, равное минимальному количеству операций вставки, замены, удаления символа и перестановки соседних символов, необходимых для преобразования u в v. Существует множество алгоритмов его вычисления [5], но при этом основной проблемой является их значительная вычислительная сложность, что делает неэффективным их использование для поиска на больших массивах данных. Аналогичное препятствие возникает при поиске по сходству с использованием полного перебора, или последовательного поиска [6, 7], когда каждое слово из словаря сравнивается с образцом. Метод расширения выборки, или метод спел-чекера[6] опирается на известные способы поиска точного соответствия, однако при допущении 2-х и более ошибок расширенная выборка становится слишком большой. Построение различных типов деревьев: trie-деревья, триангуляционные деревья, частотные деревья, kd-деревья [7], - позволяет за счёт структуры данных уменьшить количество сравнений. К недостаткам таких алгоритмов можно отнести сложность составления их хорошо сбалансированных параллельных аналогов. Предварительная фильтрация с помощью быстрых и неточных функций сравнения проста для реализации как в обычном последовательном варианте, так и в параллельном. Наиболее известными из таких методов являются метод n-грамм[6] и хеширование по сигнатуре[4]. Похожим целям в случае поиска точного соответствия служит фильтр Блума[9]. Алгоритмы предварительной фильтрации легко модифицируются для параллельных вычислений, что делает оптимальным их применение на больших объемах данных. Остановимся на них более подробно. Метод n-грамм [6] основан на предположении, что похожие слова обладают достаточным количеством общих подстрок длины n (n-грамм). Однако этот подход не работает для коротких терминов, когда изменение одной буквы приводит к «непопаданию» слова в выборку. В методе хеширования по сигнатуре [4] для каждого слова v при заданном алфавите А вычисляется сигнатура sign(v) — битовый вектор размерности m, k-ый элемент которого равняется единице, если в слове v есть k-й символ алфавита. Битовый вектор sign(v) интерпретируется как двоичная запись числа - значения хеш-функции H(v), что позволяет организовать словарь в виде хеш-таблицы. Если слово v получено из u в результате одной операции редактирования, то в силу определения сигнатуры, битовые векторы sign(v) и sign(u) отличаются не более чем в двух разрядах. Это свойство позволяет использовать сигнатуры для поиска по сходству. Фильтр Блума [9] — вероятностная структура данных, позволяющая компактно отображать множество элементов в битовый массив и проверять принадлежность заданного элемента к множеству. Ниже будет проверена гипотеза о том, что структура аналогичная фильтру Блума, при подходящих хеш-функциях может быть успешно использована для поиска по сходству. Основная часть Пусть существует словарь 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 , i=1 (1) где Lu, Lh - длины образца и слова, dw - количество общих букв у образца и слова, с учетом его словоформ, wi - количество совпадающих бит i-й сигнатуры образца Hi(h) с объединенными сигнатурами слова Hi(u), Hi-1(u), Hi+1(u). Вариант 2. Способ построения сигнатур и формула вычисления релевантности отличаются от варианта 1 добавочными хешами: минимальная Lмин и максимальная Lмах длины слов записи, и способом вычисления вклада i-й сигнатуры в релевантность - wi. Для фильтрации, кроме сигнатур H0(u) и H0(h), используются Lмин и Lмах . В данном варианте wi - количество совпадений комбинации сигнатур образца Hi(h), Hi+1(h), Hi+2(h) с комбинацией сигнатур записи Hi(u), Hi+1(u), Hi+2(u). Таким образом сравниваются все подстроки длиной в три символа. Если i равно длине строки, недостающие символы берутся из ее начала. При длине меньше трех, рассматривается вся строка. Отдельно обрабатывается отсутствие в образце первого символа, так как в этом случае известные методы коррекции ошибок дают наибольшую погрешность [1]. Вариант 3. Для каждой записи поисковый индекс описывается сигнатурой H0 всех символов записи, длиной самого короткого Lмин и самого длинного Lмах слова записи. Далее строятся сигнатуры непересекающихся подстрок длиной три символа Hi (i=1,2,...,n, где n=L/3, L — длина слова записи). Если количество символов не кратно трем, то в конец добавляются пробелы. Релевантность записи вычисляется по формуле: n Rel= ∑ wi , (2) i=0 где wi - количество общих бит i-й сигнатуры образца и i-й сигнатуры записи. Если w0 меньше предельного значения, зависящего от допустимого количества ошибок d, то запись считается нерелевантной и далее не рассматривается. Вариант 4. В этом варианте сигнатура H0 хранит длину самого короткого Lмин и самого длинного Lмах слова записи; H1 отражает все символы записи; H2 — символы, присутствующие в каждом слове записи. Для определения Hi (i=2,...,n+1) извлекается окрестность каждого из первых n наиболее часто употребляемых символов алфавита. Для ранжирования используется величина Dist, возрастающая одновременно с расстоянием редактирования: n Dist = ∣Lu− Lh∣ + diff + dw +∑ wi . i=1 (3) где Lh — длина образца; Lu = Lмин, если длина образца меньше минимальной длины записи и Lu = Lмах, если длина образца больше максимальной длины слова; diff количество символов, которые есть в записи, но нет в образце; dw - количество символов, которые есть в образце, но нет в записи; wi - количество несовпадающих бит i-й сигнатуры образца и i-й сигнатуры записи, если и в образце и в записи i-я сигнатура не равна нулю, wi=0, если обе сигнатуры нулевые, иначе wi=1. Если при вычислении по формуле (3) какое-то из слагаемых превышает допустимое количество ошибок, запись считается нерелевантной и в дальнейшем не рассматривается. Оценка качества представленных алгоритмов. Предложенные выше разработанные алгоритмы сравниваются с известными методами нечеткого словарного поиска: trie-деревья, n-граммы, частотные деревья, kdдеревья, хеширование по сигнатуре, метрические деревья, расширения выборки, последовательный перебор. Тестирование производилось на объединенных в одно множество словах из орфографического словаря под ред. проф. Лопатина, словаря русской литературы (http://www.serann.ru/vocabuli/) и всех слов романов Льва Толстого «Война и мир» и «Анна Каренина». Из этого множества выбирались наборы в 100, 200, 400 тысяч слов. Поисковыми образцами служили слова с типичными для русского языка ошибками, перечисленные в статье [10]. Такой набор образцов ближе к реальным задачам и поэтому предпочтительнее автоматически сгенерированного. Результатом работы описанных в данной статье алгоритмов является упорядоченный набор записей, которые могут оказаться релевантными. Адекватными численными характеристиками качества поиска в этом случае служат макроусредненная средняя точность и эффективность отбора индекса. Макроусредненная средняя точность (Mean Average Precision - МАР) [6] - это усреднённый по разным поисковым запросам и по количеству найденных записей процент релевантных слов в результатах поиска. Вычисленные значения МАР (табл. 1) показывают, что на больших словарях значение МАР определяются способами нахождения релевантности и условиями фильтрации, а не размером словаря. Эффективность отбора индекса — это процент слов, которые могут оказаться релевантными[11]. Таким образом, чем больше доля правильно отброшенных слов, тем меньше показатель эффективности и тем качественнее работает алгоритм. В табл. 2 выписаны показатели эффективности отбора индекса для предложенных алгоритмов и других распространенных методов поиска, значения которых опубликованы в работе [11]. Из таблицы видно, что показатель эффективности отбора зависит исключительно от способа фильтрации (варианты 1 и 2 имеют одинаковый алгоритм определения нерелевантных слов). Таблица 1 Макроусредненная средняя точность (MAP) при максимальном расстоянии редактирования d = 2 Методы вариант 1 вариант 2 вариант 3 вариант 4 100 тыс. слов 0.0170 0.0835 0.0756 0.1506 МАР 200 тыс. слов 0.0170 0.0835 0.0756 0.1506 400 тыс. слов 0.0170 0.0835 0.0756 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 О.О. Тодоріко, Г.А. Добровольський «Словниковий пошук за схожістю за допомогою хешів на основі сигнатур» // Вісник Херсонського державного технічного університету. – № 3(39). – Херсон: ХДТУ. – 2010. – С. 467-471 2 Поиск в интернете: региональные особенности [Электронный ресурс]. – Режим доступа: http://company.yandex.ru/facts/researches/ya_regions_search_2010.xml#2.3 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 9 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 10 Лавошникова Э.К. О компьютерной коррекции психологически обусловленных ошибок правописания в текстах на русском языке [Электронный ресурс]/ Э.К. Лавошникова // М., 2008. 1,1 п.л. – Режим доступа: lcl.srcc.msu.ru/library/EL_MISTAKES 11 Бойцов Л. М. Классификация и экспериментальное исследование современных алгоритмов нечеткого словарного поиска [Электронный ресурс] / Л. М. Бойцов // Труды 6-ой Всероссийской научной конференции “Электронные библиотеки: перспективные методы и технологии, электронные коллекции” - RCDL2004, Пущино, Россия, 2004. – Режим доступа: http://www.rcdl.ru/papers/2004/paper27.pdf ТОДОРИКО Ольга Алексеевна – ассистент кафедры информационных технологий Запорожского национального университета. Научные интересы: - методы и технологии информационного поиска. ДОБРОВОЛЬСКИЙ Геннадий Анатольевич - зав. лаб. веб-технологий и дистанционного обучения ЗНУ Научные интересы: - информационные технологии в образовании, разработка архитектуры современного программного обеспечения.