Научная статья на тему 'ПРОГРАММНАЯ РЕАЛИЗАЦИЯ НЕЧЕТКОГО ПОИСКА ТЕКСТОВОЙ ИНФОРМАЦИИ В СЛОВАРЕ С ПОМОЩЬЮ РАССТОЯНИЯ ЛЕВЕНШТЕЙНА'

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ НЕЧЕТКОГО ПОИСКА ТЕКСТОВОЙ ИНФОРМАЦИИ В СЛОВАРЕ С ПОМОЩЬЮ РАССТОЯНИЯ ЛЕВЕНШТЕЙНА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
176
21
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
НЕЧЕТКИЙ ПОИСК / ПОИСК ПО СХОДСТВУ / РАССТОЯНИЕ ЛЕВЕНШТЕЙНА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Траулько М.В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

PROGRAM IMPLEMENTATION OF THE FUZZY SEARCH OF TEXT INFORMATION IN THE DICTIONARY WITH THE HELP OF THE LEVENSHTEIN DISTANCE

The article discusses the concept of «fuzzy information retrieval», presents a software implementation of the fuzzy search of the text information in the dictionary using Levenshtein distance in the programming language PHP.

Текст научной работы на тему «ПРОГРАММНАЯ РЕАЛИЗАЦИЯ НЕЧЕТКОГО ПОИСКА ТЕКСТОВОЙ ИНФОРМАЦИИ В СЛОВАРЕ С ПОМОЩЬЮ РАССТОЯНИЯ ЛЕВЕНШТЕЙНА»

УДК 004

Траулько М.В. студент

Новосибирский государственный университет экономики и управления Россия, г. Новосибирск ПРОГРАММНАЯ РЕАЛИЗАЦИЯ НЕЧЕТКОГО ПОИСКА

ТЕКСТОВОЙ ИНФОРМАЦИИ В СЛОВАРЕ С ПОМОЩЬЮ РАССТОЯНИЯ ЛЕВЕНШТЕЙНА

Аннотация: в статье рассматривается содержание понятия «нечеткий поиск информации», представлена программная реализация нечеткого поиска текстовой информации в словаре с помощью расстояния Левенштейна на языке программирования PHP.

Ключевые слова: нечеткий поиск, дистанция редактирования, поиск по сходству, расстояние Левенштейна, fuzzy string search.

Traulko M. V., student Novosibirsk state University of economics and management

Russia, Novosibirsk PROGRAM IMPLEMENTATION OF THE FUZZY SEARCH OF TEXT INFORMATION IN THE DICTIONARY WITH THE HELP OF

THE LEVENSHTEIN DISTANCE

Аннотация: the article discusses the concept of «fuzzy information retrieval», presents a software implementation of the fuzzy search of the text information in the dictionary using Levenshtein distance in the programming language PHP.

Ключевые слова: editing distance, similarity search, Levenshtein distance, fuzzy string search.

Нечеткий поиск (поиск по сходству, fuzzy string search) - это поиск информации, при котором выполняется сопоставление информации заданному образцу поиска или близкому к этому образцу значению. Алгоритмы нечеткого поиска используются, например, для: распознавания рукописных символов (как в режиме офлайн - распознавание символов, написанных на бумаге с помощью систем оптического распознавания, так и в онлайн-режиме - считывание движений кончика стилуса, например, по поверхности сенсорного экрана гаджета); проверки орфографии в информационно-поисковых системах (Google, Yandex и др.) а также в системах проверки правописания; решения ряда вычислительных задач в области биоинформатики (например, для сравнения генов, белков и хромосом).

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

Пусть пользователь вводит слово «града» в поле для ввода запроса. Необходимо найти в БД информационно-поисковой системы все совпадения с заданным запросом (словом «града») с учетом возможных допустимых различий (отклонений) (это может быть, например, «ограда», «рада», «ада»). Чтобы оценить сходство двух слов используют метрики нечеткого поиска. Метрикой нечеткого поиска называют функцию расстояния (ё) между двумя строками, позволяющую оценить степень их сходства в данном контексте. В числе наиболее известных метрик - расстояние Хемминга, расстояние Левенштейна, расстояние Дамерау-Левенштейна.

Расстояние Хемминга - это число позиций, в которых соответствующие символы двух строк одинаковой длины различны [1]. Например, для векторов (1011101) и (1001001) расстояние d(1011101, 1001001) = 2, так как эти вектора имеют различие в двух позициях (3 и 5). Расстоянием Хэмминга для кода называют минимальное расстояние между кодовыми строками. Главный недостаток расстояния Хемминга - возможность сравнения строк только одинаковой длины.

Расстояние Левенштейна (редакционное расстояние, дистанция редактирования) в теории информации и компьютерной лингвистике - это мера разницы двух последовательностей символов (строк) относительно минимального количества операций вставки, удаления и замены, необходимых для перевода одной строки в другую.

Рассмотрим рекурсивную функцию. Пусть и 52 - две строки (длиной пит соответственно) над некоторым алфавитом. Тогда редакционное расстояние Б?) можно подсчитать по следующей рекуррентной формуле:

3 = 0

о

г

¿(З^З?) =В(п,т) = <

111111 (

)

- 1) +1 0(1-1,^ + 1

г = 0,

3 = 0, г > 0 г = 0, з > 0

з > 0; г > О

, где т(а,Ь) = 0, если а = Ь и единице в противном случае; тт(а, Ь, с) возвращает наименьший из аргументов. Здесь шаг по i символизирует удаление (О) из первой строки, по j - вставку (I) в первую строку, а шаг по обоим индексам символизирует замену символа или отсутствие

изменений (М). Очевидно, справедливы следующие утверждения: d(S1,S2) > | \81\ - №2\ \; d(S1,S2) < тах( , ^2\ ); d(S1,S2) = 0 ^ S1 = S2.

Пример нахождения расстояния Левенштейна представлен на рисунке 1. В примере рассматривается преобразование строки «ЕАВБ» в строку «АВСБ». Найденное расстояние Левенштейна d равно трем.

A AB ABC ABCD

0 1 2 3 4

E 1 1 2 3 4

EA 2 1 2 3 4

EAB 3 2 1 2 3

EABF 4 3 2 2 3*

•дистанция редактирования (d)

Рис. 1. Пример преобразования строки «EABF» в строку «ABCD» Результатом работы является программная реализация нечеткого поиска текстовой информации в словаре с помощью расстояния Левенштейна на языке программирования PHP. Программный код представлен ниже. Массив, по которому будет осуществляться поиск информации, содержит имена в транслитерации, а именно: «Daniil», «Zahar», «Dmitry», «Leonid», «Ilia», «Yegor», «Innokenty», «Gennady», «Maksim», «Valentin», «Yevgenia», «Matvey». Существуют имена, которые имеют несколько вариантов написания на английском языке, так как некоторые звуки можно передавать разными комбинациями букв. Например, имя «Евгения» может писаться как «Yevgenia», «Yevgeniya» или «Evgenia». Для гибкого поиска значений массива, редакционное расстояние (d) можно изменять. Таким образом, с помощью нижеприведённого алгоритма можно осуществлять поиск текстовой информации для одинаково звучащих, но имеющих различное написание строк.

Программная реализация нечеткого поиска текстовой информации <html>

<head>

<meta chatset="UTF-8">

<Ш^>Расстояние Левенштейна между двумя строками^Ш^ </head> <body>

<form method="GET">

^>Введите слово<^>

Буквенные символы (A-Z;a-z) = <input type ="text" name= "a" value="<?php

if (isset ($_GET['a'])) {

echo htmlspecialchars($_GET['a']);

}

?>">

^>Введите расстояние Левенштейна</p> Числовое значение (d) <= <input type ="text" name= "b" value="<?php

if (isset ($_GET['b'])) { _echo htmlspecialchars($_GET['b']);_

}

<input type -"submit" value-'HaMTM" name="add">

</form> <?php

if (isset($_GET['a']) && isset ($_GET['b'])) {

if (ctype_alpha($_GET['a']) && is_numeric($_GET['b'])) { $word_entered = ($_GET['a']);

$words_array = array('Daniil', 'Zahar', 'Dmitry', 'Leonid', 'Ilia', 'Yegor', 'Innokenty', 'Gennady', 'Maksim', 'Valentin', 'Yevgenia', 'Matvey'); $shortest_distance = -1; $word_array_1 = Array(); foreach ($words_array as $word) {

$flagg = 0;

$distance = levenshtein($word_entered, $word);

//echo "distance:$distance; ";

//echo "shortest_distance:$shortest_distance; ";

if ($distance == 0) {

$word_array = $word; $shortest_distance = 0; break;

}

if ($shortest_distance < 0 and $flagg == 0) { $word_array_1[]= $word; $shortest_distance = $distance; $flagg = 1;

}

if ($distance == $shortest_distance and $flagg == 0) { $word_array_1[]= $word; $flagg = 1;

}

if ($distance < $shortest_distance and $flagg == 0) { $word_array_1 = array(); $word_array_1[] = $word; $shortest_distance = $distance; $flagg = 1;

}

// echo "shortest_distance:$shortest_distance; <br>";

}

echo "<br>";

_if ($shortest_distance == 0) {_

echo "Введенное Вами слово <b> найдено </b> в

исходном массиве данных: $word_array<br>"; }

if ($shortest_distance > 0 && $shortest_distance <=

($_GET['b'])){

echo "Возможно Вы имели ввиду следующее(-ие)

слово(-а): ";

echo implode(', ', $word_array_1);

}

if ($shortest_distance >= (($_GET['b'])+1)){

echo "Введенное Вами слово <b> не найдено </b> в

исходном массиве данных.^^"; }

}

else {

echo "Ошибка! Проверьте корректность введенных данных."; echo "<br>";

}

} ?>

</body> </html>

Примеры результатов поиска текстовой информации с учетом редакционного расстояния представлены на рисунке 2. Результатом запроса может быть одно из следующих сообщений: введенное Вами слово найдено в исходном массиве данных; возможно Вы имели ввиду следующее(-ие) слово(-а) <...>; введенное Вами слово не найдено в исходном массиве данных; ошибка! Проверьте корректность введенных данных.

В иг лит С С-ЮМ _ Звелите слово

Ьч-квекиые символы (А-£.»-/} = vtak*»т» Ssxaeimue симво.-ш (A Z.ax) * Шгу

В »тлите рас стоящее Левсяштейна ВВСЛИТГ рВССТОВНИГ "IrBCHXUtrRHrt

Числовое auricmie i d) <" 2 Числовое имчеияг (d) 2

Ваеленисе Валд| сэово иа*л«мо в исходном массиве ддшшх \Ukum Введенное Вами стою те инигвох исходном массиве латтьгг.

Ваед1гте слово Введите с.вовс

Буквенные с»ясли (A-Z.a-г) = 'Aamm Ьмлеюше символы fA-Z.a-*) ~ Lkf__\_

Введите расставки« Лемнштейш Наедите расстмшае Левенштевна

Числовое ямчекие id> 2 Ив*гя Числовое аяачение (d) <= 01- най-u

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Boiuoxno Вы имели ввкп сзедмоагс; яг) слово« в) Макыт Вохмолмо Вы KMC ш веид> СНДУЮШМ<.-Я*) С ЛОВО«,-B l lllB

1 - ' " 1

Рис. 2. Примеры результатов поиска текстовой информации в исходном массиве данных

Следует отметить, что определение расстояния между словами или текстовыми полями по Левенштейну обладает следующими недостатками: при перестановке местами слов или частей слов получаются сравнительно большие расстояния; расстояния между совершенно разными короткими словами оказываются небольшими, в то время как расстояния между очень похожими длинными словами оказываются значительными. Таким образом, для более гибкого поиска различий между двумя последовательностями символов рекомендуется использовать другие методы и алгоритмы, например, BK-деревья, метод N-грамм, алгоритм расширения выборки.

Использованные источники: 1. Семантический веб [Текст] / Г. Антониоу, П. Грос, Ф. ван Хармелен, Р. Хоекстра; пер. с англ. Т. Шульга. - Москва : ДМК Пресс, 2016. - 240 с.

УДК 330

Траулько М.В. студент

Новосибирский государственный университет экономики и управления Россия, г. Новосибирск

ОСНОВНЫЕ ПОДХОДЫ К СУЩНОСТИ И СОДЕРЖАНИЮ ПОНЯТИЯ «ИННОВАЦИОННЫЙ ПОТЕНЦИАЛ»

Аннотация: в статье рассматриваются сущность и содержание понятия «инновационный потенциал», раскрываются основные подходы к рассматриваемому определению, выделяются источники правового регулирования в области НИОКР, способствующие развитию предпринимательства в инновационной деятельности вузов.

Ключевые слова: инновационный потенциал вуза, инновации, инновационный кадровый потенциал.

Traulko M. V., student Novosibirsk state University of economics and management

Russia, Novosibirsk

THE MAIN APPROACHES TO THE ESSENCE AND CONTENT OF THE CONCEPT «INNOVATIVE POTENTIAL»

Аннотация: the article considers the essence and content of the concept «innovative potential», describes the main approaches to the definition, sources of legal regulation in the field of R & D, promoting entrepreneurship in innovative activity of universities.

Ключевые слова: innovation potential of the University, innovations, innovative human resources.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.