Граф на основе расстояния Левенштейна и его визуализация

Язык труда и переводы:
УДК:
81.322.2
Дата публикации:
29 марта 2023, 14:14
Категория:
Современные методы и технологии корпусной лингвистики
Авторы
Артюхин Николай Павлович
МГТУ имени Н.Э. Баумана
Косарев Алексей Александрович
МГТУ имени Н.Э. Баумана
Шагалов Вячеслав Александрович
МГТУ имени Н.Э. Баумана
Кузнецова Анастасия Викторовна
МГТУ имени Н.Э. Баумана
Бурлаков Илья Андреевич
МГТУ имени Н.Э. Баумана
Никулина Анна Алексеевна
МГТУ имени Н.Э. Баумана
Аннотация:
Проведена визуализация графа, в вершинах которого находятся слова, а веса ребер графа заданы метрикой между ними – редакционным расстоянием. В результате построения такого графа можно будет увидеть, какие слова наиболее схожи друг с другом, что поможет исправлять большинство орфографических ошибок, также будет видно, какие слова могут быть с большой вероятностью перепутаны. Сделан вывод, что графы, построенные на основе расстояния Левенштейна, могут быть использованы в различных направлениях информационных технологий.
Ключевые слова:
графы, взаимосвязи слов, расстояние редактирования, визуализация графов
Основной текст труда

Введение

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

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

Задачи работы: 

  • рассмотреть граф как математический объект и как способ представления информации вне матемтаики;
  • изучить расстояние Левенштейна и разработать алгоритм его вычисления;
  • построить и визуализировать граф на основе расстояния Левенштейна;
  • сделать вывод о перспективе примененения подобных графов.

Граф как математический объект

Неориентированным (ориентированным) графом называется пара множеств

G=({V},{E}){\text{, }}

где V — конечное множество, элементы которого называются вершинами; E — множество (упорядоченных) пар на V, элементы которого называются ребрами (дугами). 

Пара W=(G,\omega ) , где G=({V},{E}){\text{ }} — граф; ω(e) — весовая функция (функция разметки), ставящая в соответствие каждому ребру (дуге) eE некоторое значение, например, время прохождения по дуге или расстояние между вершинами, называется взвешенным (размеченным графом) [1].

На рис. 1, 2 представлены примеры неориентированного и ориентированного графов соответственно.

Рис. 1. Неориентированный граф
Рис. 2. Ориентированный граф

Графовые структуры вне математики

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

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

В геоинформационных системах связи между объектами на карте традиционно представляются в виде графов (по [2] — структур «узел — связь»), при этом вершинами графа являются различные географические объекты (например, города, перекрестки), дуги выражают некоторую взаимосвязь объектов (например, время в пути). Такое представление имеет значительное преимущество в контексте навигации, так как путь в графе легко выражается через серию решений в узлах этого графа.

Графы в лингвистике

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

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

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

Также с помощью графа можно отобразить семантическую близость слов в виде сети, т. е. показать в сочетании с какими словами и как часто используется конкретное слово в конкретном языке.

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

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

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

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

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

Рассмотрим две строки S1 и S2, а также строки S1' и S2', где последние две получены путем отбрасывания последних символов в строках S1 и S2 соответственно. Тогда редакционное расстояние между строками S1 и S2 выражается одним из следующих способов:

  • сумма редакционного расстояния между строками S1' и S2' и цены операции замены, если S1 и S2 оканчиваются на различные символы;
  • значение редакционного расстояния между строками S1' и S2', если S1 и S2 оканчиваются на один и тот же символ;
  • сумма редакционного расстояния между строками S1 и S2' и цены операции вставки символа в S2' для получения S2;
  • сумма редакционного расстояния между строками S1' и S2 и цены операции удаления символа из S1 для получения S1'.

Минимальной ценой преобразования S1 в S2 будет минимальное значение из четырех названных выше. Если на каждом шаге преобразований редакторскими операциями выбирать наименьший по цене вариант, то в итоге получим минимальную цену для преобразования строки S1 и S2. При этом целесообразно начать с пустых строк, так как цена преобразования одной пустой строки в другую очевидна и равна 0. Кроме этого, тривиальна и цена преобразования пустой строки в строку, состоящую из одного символа (и обратно): цена эта равна 1.

Пусть mij — это редакторское расстояние от подстроки S1 до символа i включительно до подстроки S2 до символа j включительно. При этом для удобства нумерацию строк и столбцов матрицы будем вести с нуля. Тогда, в соответствии со сказанным выше, если ST[k] — k-й слева символ строки ST, то

m_{ij}={\begin{cases}i,j=0,\\j,i=0,j>0\\\min(m_{i-1,j-1}+{\text{repl-cost}},m_{i-1,j}+1,m_{i,j-1}+1),&i>0,j>0\end{cases}}

{\text{ repl-cost }}={\begin{cases}0,&S_{1}[i-1]=S_{2}[j-1]\\1,&{\text{ otherwise }}\end{cases}}.

Источники данных

В качестве источника данных предполагается использовать словари русского языка, для ограничения количества слов — вершин графа — планируется применить один из вариантов:

  • использование данных открытого корпуса слов [4]
  • использование самых частых слов
  • 1002 слова [5];
  • 5000 слов [6];
  • 10000 слов [7];
  • использование словарных слов [8].

Итерационный (нерекурсивный) алгоритм поиска расстояния Левенштейна

Удобным способом представления описанных действий по поиску расстояния Левенштейна является матрица. Примем, что каждая строка матрицы 𝑀 соответствует одному символу строки 𝑆1, а каждый столбец — одному символу строки 𝑆2, добавив при этом одну строку и один столбец для пустых строк, а в ячейке с индексами 𝑖,𝑗 содержится значение 𝑚𝑖𝑗, рассчитанное по формуле выше.

Таким образом, задача поиска растояния Левенштейна сводится к заполнению матрицы 𝑀 по формулам выше, а ответом будет значение 𝑚𝐿1, 𝐿2, где 𝐿1, 𝐿2 — длины строк 𝑆1 и 𝑆2 соответственно. Ниже приводится реализация на языке Python (рис. 3).

Рис. 3. Реализация на языке Python

Проведенные пилотные эксперименты

Первый эксперимент. Каждый из авторов работы выбрал ключевое слово, в список вошли: «вода», «снег», «работа», «друг», что  «сад», «бег». Были подобраны однокоренные слова к каждому из слов и вычислены редакционные расстояния между всеми парами слов в каждой из семи групп. Также были вычислены расстояния Левенштейна между всеми парами ключевых слов. Для визуализации графа использован алгоритм раскладки Камада — Каваи, суть которого заключается в представлении графа как механической системы, состоящей из нескольких прожин, и минимизации энергии этой системы [9].  Использованы библиотеки networkx [10] и matplotlib [11]. 

В результате получен граф, который был оформлен к приближающемуся Новому году: ребра покрашены в зеленый цвет, вершины выполнены в виде елочных украшений — шаров. Каждый шар имеет свою бирку, на которой указано соответствующее ему слово. Результат приводится ниже на рис. 4. и представлен на Выставке алгоритмических полотен, разработанных стуентами МГТУ им. Н.Э. Баумана в ходе практикума по обработке и визуализации графов, проводимой в Актовом зале ГУК МГТУ 16 декабря 2022 г. Название: «Новогодний лес Левенштейна».

Рис. 4. Новогодний лес Левенштейна (результат визуализации полученного графа)

Эксперимент на суперкомпьютере «Тераграф». Следующий этап в исследовании — организация построения и визуализации графа на отечественном аппаратном обеспечении. В МГТУ им. Н.Э. Баумана созданы первые в мире микропроцессор Леонард Эйлер (Leonhard) и суперкомпьютер «Тераграф», в которых на аппаратном уровне реализован набор команд дискретной математики DISC (Discrete Mathematics Instruction Set computer). Суперкомпьютер «Тераграф» предназначен для хранения и обработки графов сверхбольшой размерности [12]. 

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

Рис. 5. Результат визуализации на микропроцессоре Леонард Эйлер

Область использования результатов

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

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

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

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

Заключение

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

Цель работы была достигнута. Решены следующие задачи: 

  • рассмотрен граф как математический объект и как способ представления информации вне матемтаики;
  • изучено расстояние Левенштейна и разработан алгоритм его вычисления;
  • построен и визуализирован граф на основе расстояния Левенштейна;
  • сделан вывод о перспективе примененения подобных графов.
Литература
  1. Белоусов А.И., Ткачев С.Б. Дискретная математика. 6-е изд. Москва, Изд-во МГТУ им. Н.Э. Баумана, 2020, с. 276–278, 307, 327–329.
  2. Goodchild M.F. GIS and Transportation: Status and Challenges. Geoinformatica, 2000, vol. 4 (2), pр. 127–139.
  3. Прытков В.А. Функция расстояния между строками на основе кусочно-постоянной модели. Доклады БГУИР, 2013, № 4 (74), с. 22–28.
  4. Открытый корпус. URL: http://opencorpora.org/ (дата обращения 04.12.2022).
  5. Ляшевская О.Н., Шаров С.А. Новый частотный словарь русской лексики. Словари, созданные на основе Национального корпуса русского языка. URL: http://dict.ruslang.ru/freq.php?act=show&dic=freq_s&title (дата обращения 04.12.2022).
  6. 5000 самых частых слов. Клавогонки. Набирай скорость. URL: https://klavogonki.ru/vocs/203/ (дата обращения 04.12.2022).
  7. Список самых частотных слов русского языка. Cvetkoff.by. URL: https://cvetkoff.by/lists/spisok-samyh-chastotnyh-slov-russkogo-yazyka.html (дата обращения 04.12.2022).
  8. Словарные слова 1–11 класс по русскому языку. Непроверяемая гласная в корне. Рустьюторс. URL: https://rustutors.ru/novosti/42-slovarnye-slova-11-klass.html#hmenu-5 (дата обращения 04.12.2022).
  9. Kamada T., Kawai S. An algorithm for drawing general undirected graphs. Information Processing Letters, 1989, vol. 31, pp. 7–15. DOI: https://doi.org/10.1016/0020-0190(89)90102-6
  10. Документация библиотеки networkx. URL: https://networkx.org/ (дата обращения 08.12.2022)
  11. Документация библиотеки matplotlib. URL: https://matplotlib.org/ (дата обращения 08.12.2022).
  12. Создан принципиально новый российский суперкомпьютер — Тераграф. Минобрнауки России. URL: https://minobrnauki.gov.ru/press-center/news/nauka/52200/ (дата обращения 08.12.2022).
Ваш браузер устарел и не обеспечивает полноценную и безопасную работу с сайтом.
Установите актуальную версию вашего браузера или одну из современных альтернатив.