Т.ғ. к. Жантасова Ж. З



бет8/9
Дата10.06.2023
өлшемі0.51 Mb.
#474916
түріДиссертация
1   2   3   4   5   6   7   8   9
дис-Асет 7М06101-2023-рус

Rasa Enterprise – это интегрированная платформа, включающая в себя Rasa Open Source, Rasa X, а также дополнительные функции и услуги, поддерживающие совместную работу в команде и развертывание корпоративного уровня. Данный продукт создан преимущественно для крупных компаний, которым необходимо масштабирование персонализированного обслуживания клиентов.
В рамках данной работы будет использоваться Rasa Open Source для разработки и интеграции чат-бота. В будущем планируется подключить инструментарий Rasa X для совершенствования диалоговой системы на основе будущих диалогов клиентов с программой.
NLP при разработке чат-ботов. Наиболее важным компонентом качественного чат-бота является понимание сообщения пользователя (NLU). Чем лучше и эффективнее обрабатывается вводимый текст, тем лучше чат-бот отвечает пользователю. Для данного процесса используются методы NLP – обработки естественного языка. Ниже будут описаны основные методы
NLP, использующиеся при разработке чат-ботов. Примеры решений будут представлены с использованием библиотеки spaCy на языке программирования Python. Выбор данной библиотеки обусловлен удобством использования и наличием всех представленных ниже методов NLP в одном пакете, а также возможностью подключить данную библиотеку в Rasa Open Source.

  1. POS-Tagging (Частеречная разметка слов). Это процесс, при котором программа определяет принадлежность слова к определенной части речи. Данная разметка является очень важной частью процесса понимания сообщения, так как с её помощью значительно упрощается идентификация сущностей. В процессе частеречной разметки каждому слову в предложении приписывается тег, который соответствует части речи этого слова. Библиотека spaCy предлагает готовое решение для данного метода, которое выглядит так (Рисунок 2):


Рисунок 2 – Частеречная разметка слов с использованием
библиотеки spaCy

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


2. Стемминг и лемматизация (Stemming and Lemmatization). Стемминг – это процесс нахождения основы слова для заданного исходного слова. Например, данный алгоритм сократит слово «хочу» до его основы «хоч». Однако он не всегда может правильно сократить слово. Вследствие этого был создан похожий алгоритм, называемый лемматизация. Он выделяет начальную форму слова, которая основана на значении этого слова.
Разница между этими двумя алгоритмами заключается в следующем. Стемминг обрабатывает слово более грубо, обрезая только конец слов. Минус этого алгоритма заключается в том, что он часто включает в себя удаление деривационных суффиксов, которые привносят в слова элементы лексического значения. Следовательно, дальнейшее извлечение смысла из обработанного слова становится некорректным. По этой причине библиотека spaCy не содержит в себе функцию стемминга. Пример ошибочной работы стемминга мы приведем, используя стеммер из библиотеки NLTK (Python) (Рисунок 3):



Рисунок 3 – обработка слов с помощью NLTK SnowballStemmer

Как мы видим, первое слово обработалось правильно, отсеклось только окончание. Во втором и третьем случае стеммер сработал неправильно – в первом случае удалился словоизменительный суффикс «-л-», который образует форму прошедшего времени глагола. Во втором случае стеммер неправильно проанализировал окончание слова, вследствие чего отсеклась буква «и» – часть основы.


Лемматизация работает более аккуратно, используя словарный запас языка и морфологический анализ слов. Он удаляет только флективные окончания, в результате чего выводится словарная форма, или лемма. На рисунке 4 показана реализация данного алгоритма в библиотеке spaCy.

Рисунок 4 – Лемматизация слов предложения с использованием библиотеки spaCy
При создании чат-бота данный метод играет немаловажную роль, так как любая обработка текста компьютером без приведения слов к единообразной форме гораздо менее эффективна.
3Распознавание именованных сущностей (Named-entity recognition). Данный процесс, также известный как идентификация сущностей или извлечение сущностей, представляет собой процесс поиска и классификации именованных сущностей, существующих в данном предложении, по заранее определенным категориям. Данный метод сильно зависит от базы знаний, используемой для обучения алгоритма извлечения, поэтому точность его работы определяется только от предоставленного набора данных, на котором он был обучен. Например, в случае с ботом, который бронирует билеты в кино, обучающий набор текстов представлен только теми контекстами, в которых происходит бронирование билетов на сеанс или же решение проблем, возникших при этом процессе.
Пример работы данного метода приведен на рисунке 5.



Рисунок 5 – Распознавание именованных сущностей с использованием библиотеки spaCy

Как было сказано ранее, работа данного алгоритма сильно зависит от базы данных. Стандартная база данных русского языка spaCy смогла распознать только фамилию режиссера Квентина Тарантино. Однако если составлять специализированную базу, точность работы метода значительно повысится. Согласно официальным данным с сайта spaCy, точность распознавания сущностей при качественной базе данных составляет 0.95%.


4. Удаление стоп-слов (Stop-words). Данный процесс выделяет и исключает определенный класс слов, который не несет смысловой нагрузки, например, предлоги, частицы и междометия, а также артикли в английском языке. Исключение стоп-слов – очень важная часть очистки текста для дальнейшего анализа, так как большое количество лишних данных, не несущих смысловой нагрузки, уменьшает точность определения интента пользователя. В контексте разработки чат-ботов анализатору необходимо понять, является ли каждое слово стоп-словом, и в зависимости от этого решить, включать ли его в дальнейший анализ или нет. В библиотеке spaCy данный алгоритм реализован таким образом (рисунок 6)

Рисунок 6 – Определение стоп-слов с использованием библиотеки spaCy

Таким образом, данный метод посредством вывода True или False показывает, является ли слово стоп-словом. Стоит отметить, что данный компонент является опциональным и применяется не во всех задачах.


5. Синтаксический анализ зависимостей (Dependency parsing). Данный метод используется для определения границ предложения и позволяет перебирать словосочетани, которые иначе называются «фрагменты». В результате анализа строится дерево зависимостей, в котором отражены связи между главным и зависимым словом в каждой из фраз, составленных из предложения, и оно не зависит от порядка, в котором слова встречаются.
Пример работы метода на русском языке с использованием библиотеки spaCy представлен на рисунке 7.



Рисунок 7 – Синтаксический анализ зависимостей с использованием библиотеки spaCy


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


6. Базовые словосочетания («Noun chunks»). По своей сути базовые словосочетания – не что иное, как фразы с существительным в качестве главного слова и другими частями речи, которые описывают данное существительное. При определении таких словосочетаний выделяются главное слово, вид зависимости между главным и зависимым словами, а также слово, которое является главным по отношению к данному словосочетанию.
Стандартный пакет русского языка библиотеки spaCy не поддерживает поиск базовых словосочетаний. Поэтому для иллюстрации работы данного метода используется пакет английского языка (Рисунок 8).



Рисунок 8 – Поиск базовых словосочетаний с использованием
библиотеки spaCy

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


7. Обнаружение сходства (Finding similarity). Данный метод используется, когда необходимо выяснить, похожи ли два слова между собой. При создании чат-ботов часто возникают ситуации, когда нужно найти не только похожие на вид слова, но и то, насколько логически тесно они связаны. Это достигается путем векторизации слов и использовании глобальной статистики совпадения слова из корпуса при обучении модели. Обнаружение сходства реализовано алгоритмом GloVe библиотеки spaCy, однако она доступна только на английском языке. Приведем пример работы данного алгоритма (Рисунок 9)

Рисунок 9 – Обнаружение сходства между предложениями с использованием алгоритма GloVe

Результат анализа показал, что сходство предложений «Когда выйдет следующий сезон Игры Престолов?» и «Дата выхода Игры Престолов?» составляет 0.78. Это достаточно высокий результат, который позволяет сделать вывод, что предложения несут один и тот же смысл.


Использование данного метода при разработке становится очень важным, когда создается чат-бот, сильно зависящий от реализаций NLP. Например, нередко возникают ситуации, когда боту задается абсолютно новый вопрос, который никогда до этого не задавался, а бот в ответ пытается перечислить похожие вопросы, которые были заданы ему ранее. В таком случае обнаружение сходства между предложениями облегчит задачу распознавания намерений пользователя. Также данный метод может быть полезен в следующих ситуациях: создание чат-бота для отправки рекомендаций; удаление дубликатов предложений; создание средства проверки правописания.
2.3 Реализация чат-бота для обслуживания студентов

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


На основе данных функций был создан алгоритм работы чат-бота, включающий в себя все необходимые шаги по выполнению вышеуказанных задач. Согласно им, чат-бот должен:
1. Понимать, какие виды работ выполняются сервисным центром, а какие нет. Например, центр не занимается контролем оценок и посещаемости.
2. Уметь определять различные виды занятий, а также виды накладок.
3. Правильно давать ответ на вопрос о расписании занятий.
7. Структурированно отправлять информацию о заявке консультанту сервисного центра.


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет