Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технологии искусственного интеллекта в банковской сфере. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
Глава 5
4. Стоп-слова. Чтобы избавиться от шумов, нерелевантных слов, в тексте используют стоп-слова. Это такие слова, кото­рые не несут смысловой нагрузки, и по этой причине их уда­ляют до и после обработки текста. Например, это могут быть артикли, междометия, союзы и так далее.
5. Разбор текста (Parsing). Используется для распознава- ния
предложений и присвоения каждому из них синтаксиче­ской структуры. Направлен на выяснение соотношения между словами в предложении.
Основные подзадачи семантического анализа:
— NER;
— Relation Extraction;
разрешение лексической многозначности.
Применяется для выявления смысла многозначного слова или словосочетания в зависимости от контекста.
5.2. Создание датасета для обучения NLP-модели
Один из самых важных этапов в построении NLP-модели — правильно подготовленный и обработанный набор данных.
В качестве модельной задачи по обработке естественного языка будем рассматривать задачу построения виртуального ассистента для технической поддержки банка. Сразу огово­римся, что найти уже созданный датасет для подобного асси­стента не
та, необходимо сформировать требования к будущей выборке:
технической поддержки банка;
роткими;
дели составляет 350 вопросов.
представляется возможным.
Перед тем как будут описаны способы наполнения датасе-
вопросы и ответы должны строго относиться к тематике
ответы должны быть понятными и не обязательно ко-
чем больше вопросов, тем лучше;
минимальное количество данных для обучения NLP-мо-
71
Технологии искусственного интеллекта в банковской сфере
Также стоит отметить, что, когда речь заходит о датасете, важно выбрать подходящий формат. Поэтому для хранения текстовой информации наилучшим вариантом является csv-фор­мат. Причина выбора данного формата заключается в том, что с ним удобно работать и легко преобразовать в json.
Рассмотрим несколько методов / способов, применяемых при заполнении датасета.
Ручной ввод.
Это самый
простой и долгий способ, отлично подходит для
разовых вопросов и ответов. Как правило, датасеты содержат большие объемы информации, поэтому данный метод менее используется в реальной практике.
Парсинг данных с веб-сайтов с подходящей тематикой.
При помощи небольшой мини-программы, парсера можно получить несколько тысяч вопросов и ответов, однако про­блема заключается в том, что при первичной обработке дата­сета высока вероятность того, что будет много лишней или ненужной информации. Все же этот способ существенно по­могает сэкономить время и силы.
Генерация датасета.
Самый продвинутый способ, так как позволяет собирать осмысленные фразы из имеющейся выборки. Принцип генера­ции можно описать следующим образом
:
из созданного массива пар первому элементу присваи-
вается определенная реплика, а второму — id-категории, к ко­торой относится эта реплика;
— выбирают несколько случайных чисел, например i и j, в диапазоне от 0 до длины массива фраз и пар;
— затем берется i-е слово и к нему добавляется первый элемент j
-й пары, тем самым получаем строку, состоящую из
слова и смысловой фразы;
— полученную строку отмечаем вторым элементом j-й па­ры и добавляем в словарь;
— последним шагом остается записать все в csv-файл, где в первый столбец заносится возможная фраза пользователя, а во второй — id-категории реплики.
72
Глава 5
При создании набора данных наиболее перспективно ис­пользовать комбинированный подход, так как применение всех трех способов дает больше контроля и позволяет не до­пустить ошибок или опечаток при формировании датасета.
Исходя из описанных выше требований, получившийся набор данных имеет размерность (3, 550) и содержит следую­щие переменные:
Категория;
Вопрос;
Ответ на
Такое разделение необходимо для того, чтобы соответ­ствующий вопрос соотнести с определенной категорией. Та­ким образом, получаем стандартную задачу классификации текстовых команд.
В свою очередь, для непосредственного обучения модели нужна обучающая выборка, по которой производится настрой­ка, оптимизация параметров алгоритма.
Для оценки качества модели используется контрольная выборка, которая в идеальном обучающей.
Для выбора наилучшей модели машинного обучения пона­добится валидационная выборка, которая также не должна пе­ресекаться с обучающей.
После первичной обработки датасета, а именно удаления символов пунктуации, разбиения на токены, перевода слов в один регистр, можно сказать, что набор данных подготовлен для обучения будущей NLP-
вопрос.
случае не должна зависеть от
модели.
5.3. Построение нейронной сети для виртуального ассистента технической поддержки банка
Выбор архитектуры нейронной сети для модели машинно­го обучения определяют из задачи, которую она должна ре­шить.
73
Технологии искусственного интеллекта в банковской сфере
Для задачи генерации текста чаще всего используют RNN и LSTM, но бывают случаи, когда этого делать не стоит:
— если для начала генерации целевой последовательности на входе обрабатывается весь текст;
— последовательности на входе и выходе сети имеют про­извольную длину.
Чтобы избежать подобной проблемы, существуют другие сетевые архитектуры, предназначенные для решения сложных языковых
проблем: sequence-to-sequence и word-2-vec.
Seq-2-Seq.
Seq-2-Seq — это метод языковой обработки, состоящий из двух основных блоков: еncoder — decoder, получающий на вход последовательность символов, слов, анализирующий их и преобразующий в новую последовательность на основе ранее созданного обобщения.
Идея этого метода состоит в том, чтобы использовать две RNNS, которые будут работать вместе со специальным токе­ном, и попытаться
предсказать следующую последователь­ность состояния из предыдущей. В основном модель Seq-2-Seq применяется в машинном переводе, голосовом распознавании, субтитрах к видео, генерации текста, чат-ботах, вопросно-от­ветных системах.
Рассмотрим процесс работы модели (рис. 23): — на вход ячейки encoder подается исходная, разбитая на
слова фраза. Например, «How are you?»;
— Encoder обрабатывает каждый токен во входной после-
довательности
и на выходе получает некоторую закодирован-
ную последовательность z и проходит на decoder;
— получая информацию с выхода еncoder, сам decoder по-
лучает ответ, на котором и обучается. Например, «I am fine»;
— обучаясь, decoder меняет свои веса так, что при получе-
нии исходного на вход вопроса выдает на выход фразу;
— при обучении фраза обрамляется стартовым с топовым тегом. В данном случае <BOS> — тег начала и <EOS> — тег окончания.
74
Глава 5
Рис. 23. Схема работы модели Seq-2-Seq
Word-2-Vec.
Word-2-Vec (Word-to-Vector) — двухслойная нейронная сеть, которая преобразует входящие слова в тексте в вектор­ное представление.
Идея и полезность данной сети заключается в том, что, объединяясь по определенному признаку, в новом векторном пространстве можно узнать расстояние между словами и сгруппировать их в этом промежутке по некоторому крите­рию.
Хоть Word-2-Vec не является глубокой
нейронной сетью, она превращает текст в численную форму, которую могут по­нять глубокие нейронные сети. Он может быть применен для анализа тональности, семантической близости слов, кластери­зации.
75
Технологии искусственного интеллекта в банковской сфере
Обнаруживая сходство математически, Word-2-Vec создает векторы в виде численного представления слов, делая это без вмешательства человека.
Word-2-Vec имеет два типа алгоритмов, построенных на основе Continuous Bag of Words (CBOW) и Skip-gram. CBOW и Skip-gram — это нейросетевые архитектуры, описывающие, как нейронная сеть обучается на данных и запоминает пред­ставления слов. Принципы их работы отличаются. CBOW — предсказывание слова в контексте, а Skip-gram наоборот — предсказывается
контекст при данном слове.
Для построения модели машинного обучения виртуально­го ассистента техподдержки банка лучшим вариантом будет воспользоваться моделью Seq-2-Seq, так как для этой задачи она подходит намного лучше, чем остальные.
Процесс разработки модели следует начать с импортов не­обходимых пакетов и модулей. В качестве библиотек, исполь­зовавшихся в проекте, можно выделить
следующие:
— Pandas — быстрая, мощная, гибкая библиотека с откры- тым исходным кодом для обработки и анализа данных;
— re (regular expressions) — модуль, предназначенный для работы с регулярными выражениями;
— Numpy — open-source решение, обеспечивающее под-
держку многомерных массивов данных и матриц совместно с библиотекой высокоуровневых математических функций для операций с этими массивами;
— Keras — открытая нейросетевая библиотека, представ­ляющая собой
надстройку над фреймворками TensorFlow, Deeplearning4j, Theano. Направлена на работу с нейронными сетями глубокого обучения, при этом является компактной, расширяемой и модульной;
— Pymorphy2 — пакет для морфологического анализа слов. Не использует информацию о соседних словах, а опре­деляет характеристику слова за счет того, как оно пишется.
Первоначально считаем данные из csv-файла при помощи read_csv. Затем укажем
две переменные questions_original, answers, где первая будет хранить массив вопросов, а вторая — массив ответов (рис. 24).
76
Глава 5
Рис. 24. Получение данных из csv-файла
Создадим функцию get_normal_form(), которая будет при­нимать строку, разбивая все входящие предложения на от­дельные слова, выкидывая предлоги, длина которых будет меньше трех символов. Делается это для того, чтобы привести слова к нормальной форме. А экземпляр класса MorphAnaly­zer() используется для морфологического анализа (рис. 25).
Рис. 25. Приведение слов к нормальной форме
при помощи функции get_normal_form
Для преобразования текста в числовые последовательно­сти в Keras есть специальный класс Tokenizer, его и будем ис­пользовать. Затем собираем словарь индексов и загружаем в токенизатор список вопросов-ответов для сборки словаря ча­стотности.
Далее конвертируем исходные фразы в индексы. Так как размер входа фиксированный, то, чтобы подать вопросы на вход с
произвольной длиной, нужно дополнить массив нулями.
TokenizedPhrases — разбивает текст вопросов / ответов на последовательности индексов.
maxLenPhrases — находит длину самого большого вопро­са / ответа.
paddedPhrases — приводит последовательности к одной длине, заполняя нулями более короткие вопросы.
77
Технологии искусственного интеллекта в банковской сфере
Тренировать модель необходимо на TPU (Tensor Processing Unit), потому что в этом случае выделяется больше ресурсов и
разреженная матрица начинает хорошо строиться.
Разбивая текст ответов на последовательности индексов, избавляемся от тега <START>. Делаем их одной длины, за­полняя нулями более короткие ответы, и переводим в one hot vector, при этом сохраняя все в виде numpy-массива (рис. 26).
Рис. 26. Разделение текста ответов на последовательности индексов
Чтобы исключить нулевые значения и сеть смогла быстрее обучиться, в параметрах embedding ставим mask_zero=True. Первым слоем будет слой encoder, а размерность пространства embedding=200, тем самым получаем, что каждое слово будет развернуто в это пространство (рис. 27).
Рис. 27. Подготовка модели к обучению
78
Глава 5
Размерность encoderInputs равна размеру batchsize (None) на максимальную длину вопроса. Так как нельзя пропустить весь датасет разом через нейросеть, необходимо его делить на пакеты, сеты или партии.
В параметрах LSTM-слоя передается return_state=True, чтобы помимо выхода возвращать еще два состояния: state_h и state_c. Также добавляется еще параметр return_sequences=True, чтобы вернуть значения с каждой из LSTM-ячеек, а не только с последней.
На вход LSTM-слоя декодера подается еще начальное со­стояние LSTM, полученное от энкодера: initial_state=encoder-
States.
Размерность decoderInput равна размеру batchsize (None) на максимальную длину вопроса. Вместо None в аргументе Input(shape=(None,)) можно было поставить maxLenAnswers.
Выведем информацию о построенной модели нейросети при помощи метода summary() (рис. 28).
Рис. 28. Результирующая модель в разбивке по слоям
Полученная архитектура для модели Seq-2-Seq будет вы­глядеть следующим образом (рис. 29).
79
Рис. 29. Архитектура encoder / decoder для модели Seq-2-Seq
Технологии искусственного интеллекта в банковской сфере
80
80
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]