Назад в библиотеку

УДК 004.67

ПРИМЕНЕНИЕ АЛГОРИТМОВ НЕЧЕТКОГО ПОИСКА ДЛЯ ОПТИМИЗАЦИИ ПОИСКА ИНФОРМАЦИИ В ИНТЕРНЕТ-МАГАЗИНЕ

 

 

Моргун И.С., Савкова Е.О.

Донецкий национальный технический университет

кафедра автоматизированных систем управления

E-mail: igooorr21@gmail.com

 

Аннотация:

Моргун И.С. Применение алгоритмов нечеткого поиска для оптимизации поиска информации в интернет-магазине. Рассмотрен основной принцип отбора данных. Проведен анализ существующих методов и алгоритмов, решающие поставленные задачи. Определен подход оптимизации данных.

Annotation:

Morgun I.S. Application of fuzzy search algorithms to optimization of information in online-shop. The basic principle of data selection. The analysis of existing methods and algorithms that will help to solve tasks. The approach to data optimization is defined.

Введение

В современном мире актуально заказывать различную продукцию через интернет-магазин. Пользователю не нужно тратить особо много времени и сил, что б добраться до магазина, а всего лишь достаточно иметь дома выход в сеть Интернет. Пользователь заходит в Интернет, находит любой интернет-магазин, в котором подбирает себе нужный товар и оформляет заказ. Популяризация такого вида продаж товаров привела к росту количества интернет-магазинов.

Наверное, не многие задумывались, как реализован поиск в интернет-магазине?

В большинстве случаев пользователь, впервые посетив Ваш сайт в поисках чего-либо важного, не станет разбираться в панелях навигации, меню и прочих элементах, а в спешке попытается найти что-нибудь похожее на поисковую строку. Введет туда свой запрос и будет ожидать ответа. Но может случиться так, что Ваша система слишком долго будет обрабатывать запрос пользователя или вовсе не сможет выдать ему ответ. В результате чего, пользователь Вашего сайта просто закроет вкладку и пойдет искать другой сайт.

Общая постановка проблемы

Поиск информации в интернет-магазине - это важная составляющая, и многие посетители будут пользоваться данной функцией. Поэтому, необходимо уделить должное внимание поиску в интернет-магазине. Рассмотрим принцип работы одного из интернет-магазина.

Посетитель заходит на сайт интернет-магазина. Ищет поисковую строку и вводит свой запрос, подтверждает его и ожидает ответа. Система, после отправки запроса пользователем, ожидает его приема и начинает его обрабатывать.

Внутри системы поиск работает так:

Отобранные товары с минимальной информацией (цена, название, характеристики и т.д.), будут переданы назад пользователю в виде ответа на его запрос.

Но существуют ряд недостатков, которые мешают нормальному выполнению поиска и отбора информации в системе. Это могут быть проблемы, связанные с:

Одним из методов устранения этих недостатков и оптимизации поиска информации по запросам пользователей является использование алгоритмов нечеткого поиска (известных как поиск по сходству или fuzzy string search).

Цель данной работы заключается в обзоре и анализе существующих методов и алгоритмов поиска в интернет-магазине.

Постановка задачи

Исходя из трех основных задач нечеткого поиска:

  1. Разработкой подсистемы сбора, обработки и передачи запросов пользователей;
  2. Задача, связанная со сравнением пользовательских строк со «словарем»;
  3. Разработкой подсистемы для хранения данных (индексация данных).

Первая задача является достаточно «тривиальной», имеет достаточное число реализованных методов оптимально выполняющие эту задачу и не требует детального анализа. Для данной исследовательской работы будет рассмотрена вторая задача.

Задачи нечеткого поиска сводятся к тому, что необходимо для каждого слова из заданного n-размерного текста (массива слов), найти совпадения в m-размерном словаре. При этом поиск необходимо выполнить с учетом всевозможных различий (совпадение корня слова и т.п.).

С учетом этого принципа работы поиска, выделим следующие задачи:

Математическая постановка

Для данной задачи мы имеем исходные данные, представленные в виде запроса пользователя W, который он ввел в поисковой строке. Длина этого запроса может быть Wn-слов. Данный запрос имеет такие ограничения:

формула поиска метрики

s – любая длина поискового запроса,

Также, имеется словарь U размерности m.  Словарь содержит подмножество  

формула поиска метрики - содержащий некую информацию о товарах, которые он и индексирует у себя.  Словарь имеет такие ограничения: 

формула поиска метрики

Имея заданный поисковый запрос W пользователя, нам необходимо выбрать из словаря U подмножество P всех слов. А мера отличия d при сравнении поискового запроса между словарем должна не превышать некоторого порогового числа N. Если подмножество P удовлетворяет этому условию, то из словаря будет добавлено это подмножество (товар и его информация) в массив ответа пользователю с информацией о товаре.

формула поиска метрики

Мера отличия стремиться к минимальному числу расхождения при сравнении поискового запроса с подмножеством из словаря. Для нахождения меры отличия используем один из нижеописанных методов.

Обзор алгоритмов и методов поиска

Задача методов нечеткого поиска заключается в отборе совпадений заданного слова (или начинающиеся с этого слова) из N-размерного текста или словаря. Одной из характерных черт алгоритма нечеткого поиска является метрика.

Метрика – это функция расстояния между двумя словами, позволяющая оценить степень их сходства в данном контексте. Строгое математическое определение метрики (X — множество слов, p — метрика) [1]:

формула поиска метрики

Расстояние Хемминга

Расстояние Хэмминга – мера различающихся позиций для объектов с одинаковой длинной. Широко используется для различных задач, таких как поиск близких дубликатов, распознавание образов, классификация документов, исправление ошибок, обнаружения вирусов и т.д [2].

Основным недостатком расстояния редактирования Хэмминга является требование одинаковой длины строк, таким образом, расстояние Хэмминга подходит для расчета расстояния редактирования с учетом таких искажений, как замена и транспозиция, но не подходит при вставках и удалениях.

Джаро-Винклер

Сходство Джаро-Винклера (Jaro-Winkler similarity) было применено в переписи США и использовано в последующей обработке [2].

Для данных строк string1 и string2, их сходство задаётся формулой:

формула поиска метрики

m - число соответствующих символов

a - длина string1

b - длина string2

t - число перестановок

Два символа считаются соответствующими, только если они находятся не дальше чем (max(a,b)/2 - 1). Первый соответствующий символ в string1 сравнивается с первым соответствующим символом в string2; второй соответствующий символ в string1 сравнивается со вторым соответствующим символом в string2, и так далее. Число соответствующих символов делённое на 2 даёт число перестановок.

Улучшенный метод Джаро-Винклера использует веса отличные от 1/3. Он также даёт меньший вес некоторым типам ошибок: визуального сканирования, клавишного ввода и в конце строки.

Распознавание форм Ратклиффа/Обершелпа (алгоритм Оливера)

  1. Алгоритм Ратклиффа/Обершелпа (Ratcliff/Obershelp pattern recognition) вычисляет сходство двух строк как удвоенное число соответствующих символов разделённое на полное число символов в строках. Соответствующие символы находятся в самой длинной общей подпоследовательности плюс, рекурсивно, соответствующие символы в остальной части по любую сторону от самой длинной общей подпоследовательности. Формула данного алгоритма: [4]
формула поиска метрики

Km - число совпадающих символов,

|S1|, |S2| - длина сравнивающихся слов

Дистанция редактирования (Расстояние Левенштейна и Дамерау – Левенштейна)

Расстояние Левенштейна ищет минимальное количество действий (вставок, удаления и замены одного символа на другой), необходимых для превращения одной строки в другую. Метод широко используется для исправления ошибок в словах (грамматика поисковых систем), сравнения текстовых файлов или даже генов и хромосом. [3]

Преобразовать одно слово в другое можно различными способами, количество действий также может быть разным. При вычислении расстояния Левенштейна следует выбирать минимальное количество действий.

Если поиск слова осуществляется в тексте, который набран с клавиатуры, то вместо расстояния Левенштейна используют усовершенствованное расстояние Дамерау – Левенштейна.

Алгоритм Вагнера – Фишера позволяет получать расстояние Дамерау – Левенштейна.

Методы поиска с использованием индексов

Особо интересными являются алгоритмы поиска с индексацией.

Представим, одновременно более 30 человек выполняют поисковые запросы. Сервер принимает каждое соединение, управление потоком передается интерпретатору. При каждом запросе заново инициализируется поисковый движок, заново прерывается содержимое сайта. Сложно сказать, сколько времени и ресурсов потребуется, чтобы обработать все эти запросы. Для исключения проделывания одной и той же работы, была придумана технология индексирования. 

Индексирование выполняется только при изменении или добавлении содержимого сайта, а поиск выполняется уже по индексу, а не по содержимому.

Особенностью всех алгоритмов нечеткого поиска с индексацией является то, что индекс строится по словарю, составленному по исходному тексту или списку записей в какой-либо базе данных.

Наиболее распространенные из алгоритмов:

Алгоритм расширения выборки

Он основан на сведении задачи о нечетком поиске к задаче о точном поиске.

Суть данного метода заключается в построении множества всевозможных «ошибочных» слов, например, получающихся в результате одной операции редактирования Левенштейна, после чего построенные поисковые запросы ищутся в словаре на точное совпадение.

Одним из недостатков данного алгоритма то, что время его работы сильно зависит от числа k ошибок и от размера алфавита A, и в случае использования поиска по словарю составляет [5]:

формула поиска метрики

Σ – размер алфавита,

n – размер слова,

k – число ошибок.

Например, если для поиска с k = 1 требуется выполнить 300-500 «точных» запросов к словарю, то для k = 2 требуется не менее 10000 запросов.

Следует отметить, что в некоторых случаях можно ограничить класс операций замен и достичь приемлемого сочетания полноты и качества поиска.

Особенность данного алгоритма заключается в том, что он: не требует никакой предварительной обработки словаря; экономит память за счет использования не всего словаря.

Метод Триграмма (N-грамма)

Триграммное сходство (trigram similarity) между двумя строками определяется числом совпадающих символьных триплетов в обоих строках. Алгоритм можно обобщить на n-граммы, где n=1, 2, ... Строки string1 и string2 пополняются слева и справа одним символом пробела. Затем строки разделяются на триплеты (триграммы). Окончательно, сходство вычисляется по формуле [2]:

формула поиска метрики

m - число совпадающих триграмм,

a и b - число триграмм в string1 и string2

Особенность данного метода заключается в простоте реализации. Но чем меньше длина слова и чем больше в нем ошибок, тем выше шанс того, что оно не попадет в соответствующие N-граммам запроса списки, и не будет присутствовать в результате. За счет чего необходимо модифицировать данный метод или же использовать более эффективных методов.

Эти все методы и алгоритмы используют различные подходы к решению проблемы — одни из них используют сведение к точному поиску, другие используют свойства метрики для построения различных пространственных структур. Но все они очень чувствительны к изменениям содержимого и длине сравниваемых слов. Например:

Скорость выполнения работы алгоритмов нечеткого поиска обычно напрямую зависит от размера словаря. Но, модификации и доработки этих алгоритмов позволяют добиться достаточного малого времени работы даже при весьма больших объемах словарей.

Выводы

В результате проведенного обзора актуальных методов и алгоритмов нечеткого поиска, были отмечены достоинства и недоставки этих методов.

Также, выделим алгоритмы с индексацией. Они имеют сложную реализацию, а также требуют подготовленный словарь для сравнений, но, значительно быстрее выполняют сравнение строк большой размерности, а также более точно определяют схожесть этих строк. Данные алгоритмы с их модификацией наиболее подойдут для реализации поставленных задач в пределах исследуемой области.

Литература

  1. Нечёткий поиск в тексте и словаре [Электронный ресурс] //Сохабр URL: https://sohabr.net/habr/post/114997/
  2. Алгоритмы приблизительного сравнения текста [Электронный ресурс] URL: http://alexandrerodichevski.chiappani.it/doc.php?n=222&lang=ru#PhoneticCoding
  3. Вычисление редакционного расстояния [Электронный ресурс] //Хабрахабр URL: https://habr.com/post/117063/
  4. Comparison of Jaro-Winkler and Ratcliff/Obershelp algorithms in spell check [Электронный ресурс] //ilyankou URL: https://ilyankou.files.wordpress.com/2015/06/ib-extended-essay.pdf
  5. Классификация современных алгоритмов нечеткого словарного поиска  [Электронный ресурс] //rcdl URL: http://rcdl.ru/doc/2004/paper27.pdf