УДК: 004.7 : 004.512
О.А. Тодорико, Г.А. Добровольский
ОЦЕНКА СИГНАТУРНЫХ АЛГОРИТМОВ ПОИСКА ПО СХОДСТВУ В СЛОВАРЕ
Постановка проблемы. По данным системы Яндекс, около 10% запросов содержат ошибки или опечатки [1]. Поисковая система должна это учитывать, и на этапе обработки информации, и на этапе выполнения запроса пользователя.
Одной из проблем, которая возникает при обработке текстов на украинском, русском и других синтетических языках, является большое количество форм одного слова, которые нужно или хранить заранее, или составлять во время поиска, или кодировать в поисковом индексе. Первый способ нуждается в больших объемах памяти, второй требует большего времени выполнения, третий, насколько известно, рассматривался лишь в некоторых роботах [1, 2, 3].
Целью работы является исследование разработанных словарных алгоритмов поиска по сходству [Ошибка! Закладка не определена.] с учётом всех возможных форм слов, когда требуется найти в словаре записи, похожие на заданную строку. В процессе работы необходимо было построить индекс, который бы занимал минимальный объем, учитывал всевозможные формы слова и позволял приближенно сравнивать содержимое словаря с образцом. Полученный индекс должен обеспечивать возможность поиска по сходству и допускать параллельное выполнение.
Анализ публикаций. На сегодняшний день в качестве контрольной меры степени «похожести» между словами часто используются различные модификации метрики Левенштейна [1] или, как ее еще называют, расстояние редактирования, равное минимальному количеству операций вставки, замены, удаления символа и перестановки соседних символов, необходимых для преобразования иву. Расстояние редактирования формализует интуитивное понятие об «ошибке», и существует множество алгоритмов эффективного его вычисления, однако значительная вычислительная сложность делает неэффективным их использование для поиска в больших массивах данных. Аналогичное препятствие возникает при поиске по сходству с использованием полного перебора, или последовательного поиска [1,2]. Метод расширения выборки, или метод спел-чекера[Ошибка! Закладка не определена.] опирается на известные способы поиска точного соответствия, однако при допущении 2-х и более ошибок расширенная выборка становится слишком большой. Построение различных типов деревьев[Ошибка! Закладка не определена.]: Ме-деревья, триангуляционные деревья, частотные деревья, к^-деревья, -позволяет за счёт структуры данных уменьшить количество сравнений. К недостаткам таких алгоритмов можно отнести сложность составления их хорошо сбалансированных параллельных аналогов.
Предварительная фильтрация с помощью быстрых и неточных функций сравнения проста для реализации, как в обычном последовательном варианте, так и в параллельном. Наиболее известными из таких методов являются метод п-грамм[Ошибка! Закладка не определена.] и хеширование по сигнатуре [Ошибка! Закладка не определена.]. Похожим целям в случае поиска точного соответствия служит фильтр Блума[3]. Такие алгоритмы легко адаптируются для параллельных вычислений и оптимальны при обработке больших объемов данных. Остановимся на них более подробно.
Метод п-грамм [Ошибка! Закладка не определена.] основан на предположении, что похожие слова обладают достаточным количеством общих подстрок длины п (п-грамм). При создании индекса для каждого слова составляется список содержащихся в нем п-грамм, который сохраняется в инвертированном виде. При такой организации данных для каждого указателя в инвертированном списке п-грамм нужно в произвольном порядке считывать ключевые слова из словаря, но скорость произвольного доступа во много раз меньше чем последовательного. Еще одна проблема связана с поиском по коротким терминам, когда изменение одной буквы приводит к «непопаданию» слова в выборку.
Идея, лежащая в основе хеширующих методов, состоит в следующем: придумать отображение (хеш-функцию) слова, например, во множество чисел, или строк, описывающие основные характеристики исходного слова, и устойчивое к его искажениям. На основании хеш-функции можно сохранить словарь в виде хеш-таблицы, что значительно ускоряет поиск.
В методе хеширования по сигнатуре [Ошибка! Закладка не определена.] для каждого слова V при заданном алфавите А вычисляется сигнатура sign(v) — битовый вектор размерности т, к-ый элемент которого равняется единице, если в слове V есть к-й символ алфавита. Битовый вектор sign(v) интерпретируется как двоичная запись числа - значения хеш-функции Н(V), что позволяет организовать словарь в виде хеш-таблицы. Если слово V получено из и в результате одной операции редактирования, то в силу определения сигнатуры, битовые векторы sign(v) и sign(u) отличаются не более чем в двух разрядах. Это свойство позволяет использовать сигнатуры для поиска по сходству.
Фильтр Блума [Ошибка! Закладка не определена.] — вероятностная структура данных, позволяющая компактно отображать множество элементов в битовый массив и проверять принадлежность заданного элемента к множеству. Для создания фильтра следует определить к независимых хеш-функций hi, ..., hk, отображающих каждый элемент в одну из позиций битового массива длины m достаточно равномерным образом. Для добавления элемента e необходимо записать единицы на каждую из позиций hi(e), ...,hk(e) битового массива. Для проверки принадлежности элемента e к множеству хранимых элементов, необходимо убедиться, что все биты hi(e), ...,hk(e) совпадают. В таком случае е может принадлежать множеству, иначе элемент не принадлежит множеству. Ниже будет проверена гипотеза о том, что структура аналогичная фильтру Блума, при подходящих хеш-функциях может быть успешно использована для поиска по сходству.
Основная часть
Пусть существует словарь S, состоящий из n записей, где каждая запись u (в дальнейшем просто запись) содержит слово и все его словоформы, h - искомый образец, который может отличаться от слов записи наличием лишних, пропущенных, изменённых или переставленных символов. Необходимо получить ранжированный набор записей, содержащих слова, которые находятся от образца на расстоянии редактирования, не превышающем заданного количество ошибок d.
Предложенные в работе алгоритмы базируются на сопоставлении каждой записи набора сигнатур таким образом, чтобы сигнатуры похожих записей отличались незначительно. По аналогии с фильтром Блума один набор сигнатур описывает всю запись, а не отдельно слово и все его словоформы. Тогда необходимый для их хранения объем памяти сокращается. Построение сигнатур является подготовительным этапом и выполняется один раз.
Было исследовано четыре различных варианта построения сигнатур. Исходные данные одинаковы для всех алгоритмов, отличаются только способы построения индекса, ранжирования результатов. Рассмотрим эти отличия более подробно.
Вариант 1.
Каждая запись описывается в поисковом индексе набором сигнатур H, в котором H0 - учитывает все буквы записи, Ht (i=i,2,3,...,n-i) - все символы записи, находящиеся на i-й позиции, Hn - длина словарной формы слова.
Перед вычислением релевантности записи вычисляется количество общих бит dw сигнатур H0(u) и H0(h). Если значение dw меньше минимально допустимого, то запись считается неподходящей и пропускается.
В отличие от метода хеширования по сигнатуре [Ошибка! Закладка не определена.], дополнительные хеши Ht (i=i,2,3,...,n) используются для ранжирования результатов поиска с помощью релевантности, вычисляемой по формуле:
n
Rel = const -\Lu - Lh \ + dw + X wi ((E))
i=i
где Lu, Lh - длины образца и слова, dw - количество общих букв у образца и слова, с учетом его словоформ, wi - количество совпадающих бит i-й сигнатуры образца Hi(h) с объединенными сигнатурами слова Hi(u), Hi-i(u), Hi+i(u).
Вариант 2.
Способ построения сигнатур и формула вычисления релевантности отличаются от варианта 1 добавочными хешами: минимальная Lmin и максимальная Ьшах длины слов записи, и способом вычисления вклада 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-й, E-х символов рассматриваются целиком. Отдельно обрабатывается отсутствие в образце первого символа, так как в этом случае известные методы коррекции ошибок дают наибольшую погрешность [Ошибка! Закладка не определена.].
Вариант 3.
Для каждой записи поисковый индекс описывается сигнатурой H0 всех символов записи, длиной самого короткого Lmin и самого длинного Lmах слова записи. Далее строятся сигнатуры Hi непересекающихся подстрок длиной три символа (i=1,2,...,n, где n=L/3, L — длина слова записи). Если количество символов не кратно трем, то в конец добавляются пробелы. Релевантность записи вычисляется по формуле:
n
Rel = X Wi (E)
i=0
где wi - количество общих бит i-й сигнатуры образца и i-й сигнатуры записи.
Если w0 меньше предельного значения, зависящего от допустимого количества ошибок d, то запись считается нерелевантной и далее не рассматривается.
Вариант 4.
В этом варианте сигнатура H0 хранит длину самого короткого Lmin и самого длинного Ьшах слова записи; 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) какое-то из слагаемых превышает допустимое количество ошибок, запись считается нерелевантной и отбрасывается.
Оценка качества представленных алгоритмов.
Предложенные выше разработанные алгоритмы сравниваются с известными методами нечеткого словарного поиска: trie-деревья, n-граммы, частотные деревья, kd-деревья, хеширование по сигнатуре, метрические деревья, расширения выборки, последовательный перебор.
Тестирование производилось на объединенных в одно множество словах из орфографического словаря под ред. проф. Лопатина, словаря русской литературы (http://www.serann.ru/vocabuli/) и всех слов романов Льва Толстого «Война и мир» и «Анна Каренина». Из этого множества выбирались наборы в 100, 200, 400 тысяч слов.
Поисковыми образцами служили слова с типичными для русского языка ошибками и опечатками, перечисленные в статье [5]. Такой набор образцов ближе к реальным задачам и поэтому имеет преимущество перед автоматически сгенерированным.
Результатом работы описанных в данной статье алгоритмов является упорядоченный набор записей, которые могут оказаться релевантными. Адекватными численными характеристиками качества поиска в этом случае служат макроусредненная средняя точность и эффективность отбора индекса.
Макроусредненная средняя точность (Mean Average Precision - МАР) [Ошибка! Закладка не определена.] - это усреднённый по разным поисковым запросам и по количеству найденных записей процент релевантных слов в результатах поиска. Вычисленные значения МАР (табл. 1) показывают, что на больших словарях значение МАР определяются способами нахождения релевантности и условиями фильтрации, а не размером словаря.
Эффективность отбора индекса — это процент слов, которые могут оказаться релевантными [6]. Таким образом, чем больше доля правильно отброшенных слов, тем меньше показатель эффективности и тем качественнее работает алгоритм.
Таблица 1
Макроусредненная средняя точность (MAP) при максимальном расстоянии редактирования d = 2
Методы Размер словаря
100 тыс. слов 200 тыс. слов 400 тыс. слов
вариант 1 0.0170 0.0170 0.0170
вариант 2 0.0835 0.0835 0.0835
вариант 3 0.0756 0.0756 0.0756
вариант 4 0.1506 0.1506 0.1506
В табл. 2 выписаны показатели эффективности отбора индекса для предложенных алгоритмов и других распространенных методов поиска, значения которых опубликованы в работе [Ошибка! Закладка не
определена.]. Из таблицы видно, что показатель эффективности отбора зависит исключительно от способа фильтрации (варианты 1 и 2 имеют одинаковый алгоритм определения нерелевантных слов).
Таблица 2
Показатель эффективности отбора индекса при максимальном расстоянии редактирования d = 2
Методы Размер словаря
100 тыс. слов 200 тыс. слов 400 тыс. слов
Trie-дерево 0.137 0.078 0.041
^грамм(2) 0.016 0.016 0.014
част. дерево 0.021 0.021 0.021
n-граммф 0.045 0.045 0.046
kd-дерево 0.081 0.079 0.076
хеш. сигнат. 0.075 0.075 0.074
метр. дерево 0.209 0.165 0.170
расш. выборки 3.538 1.769 0.885
n-грамм част. trie 0.930 0.932 0.933
посл. перебор 1.000 1.000 1.000
вариант 1 0,056 0,028 0,019
вариант 2 0,056 0,028 0,019
вариант 3 0,053 0,027 0,018
вариант 4 0,002 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. Тодоршэ, О.О. Словниковий пошук за схожютю за допомогою хешiв на основi сигнатур / О.О. Тодорко, Г.А. Добровольський // Вюник ХНТУ. - Херсон: ХНТУ. - 2010. - № 3(39). - С. 467-471
3. Гниловская, Л. П. Автоматическая коррекция орфографических ошибок / Л. П. Гниловская, Н. Ф. Гниловская // Культура народов Причерноморья. - 2004. - Т. 2. - № 48. - С. 171-180
4. Бойцов, Л.М. Использование хеширования по сигнатуре для поиска по сходству / Л.М. Бойцов // Прикладная математика и информатика. М.: Изд-во факультета ВМиК, МГУ 2001. - № 8. - С. 135154.
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. Бойцов, Л. М. Классификация и экспериментальное исследование современных алгоритмов нечеткого словарного поиска [Электронный ресурс] / Л. М. Бойцов // Электронные библиотеки: перспективные методы и технологии, электронные коллекции: Труды шестой всероссийской научной конференции (RCDL'2004). - Пущино, Россия, 2004. - Режим доступа: http://www.rcdl.ru/papers/2004/paper27.pdf
ТОДОРИКО Ольга Алексеевна - ассистент, кафедра информационных технологий, Запорожский
национальный университет
Научные интересы: системы поддержки принятия решений, поисковые системы
ДОБРОВОЛЬСКИИ Геннадий Анатольевич - зав. лабораторией веб-технологий и дистанционного
обучения, Запорожский национальный университет
Научные интересы: системы поддержки принятия решений, поисковые системы