Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Технологии искусственного интеллекта в банковской сфере. Учебное пособие
.pdf
Глава 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(), которая будет принимать строку, разбивая все входящие предложения на отдельные слова, выкидывая предлоги, длина которых будет
меньше трех символов. Делается это для того, чтобы привести
слова к нормальной форме. А экземпляр класса MorphAnalyzer() используется для морфологического анализа (рис. 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
