Реализация классификации текста с помощью TensorFlow может быть простой. Одна из областей, где может применяться классификация текста - обработка текста чат-ботом и разрешение намерений. В этом посте я шаг за шагом опишу, как построить модель TensorFlow для классификации текста и как выполняется классификация. Пожалуйста, обратитесь к моему предыдущему сообщению, относящемуся к аналогичной теме - Контекстный чат-бот с TensorFlow, Node.js и Oracle JET - шаги, как установить и заставить его работать. Я бы порекомендовал прочитать этот замечательный пост о реализации чат-бота - Контекстные чат-боты с Tensorflow.
Полный исходный код доступен в репозитории GitHub (см. Шаги, описанные в упомянутом выше блоге).
Реализация классификации текста:
Шаг 1. Подготовка данных
- Обозначение шаблонов в массив слов
- Все слова строчными буквами и корнем. Пример: Аптека = фарм. Попытка представить родственные слова
- Создать список классов - намерения
- Создать список документов - комбинация между списком шаблонов и списком намерений
Реализация Python:
Шаг 2. Подготовка ввода TensorFlow
- [X: [0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, …N], Y: [0, 0, 1, 0, 0, 0, …M]]
- [X: [0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, …N], Y: [0, 0, 0, 1, 0, 0, …M]]
- Массив, представляющий шаблон с 0/1. N = размер словарного запаса. 1, когда позиция слова в словаре соответствует слову из шаблона
- Массив, представляющий намерение с 0/1. M = количество намерений. 1, когда позиция намерения в списке намерений / классов соответствует текущему намерению
Реализация Python:
Шаг 3. Обучение нейронной сети
- Используйте tflearn - библиотеку глубокого обучения с высокоуровневым API для TensorFlow.
- Определить форму ввода X - равно размеру словарного запаса
- Определите два слоя с 8 скрытыми нейронами - оптимально для задачи классификации текста (на основе экспериментов)
- Определить форму ввода Y - равно количеству намерений
- Примените регрессию, чтобы найти лучшие параметры уравнения
- Определить модель глубокой нейронной сети (DNN)
- Запустите model.fit, чтобы построить модель классификации. Предоставьте входные данные X / Y, количество эпох и размер пакета
- Для каждой эпохи выполняется несколько операций, чтобы найти оптимальные параметры модели для классификации будущих входных данных, преобразованных в массив 0/1.
Размер партии:
- Меньший размер пакета требует меньше памяти. Особенно важно для наборов данных с большим словарным запасом
- Обычно сети обучаются быстрее с меньшими партиями. Веса и параметры сети обновляются после каждого распространения
- Чем меньше размер партии, тем менее точная оценка градиента (функция, описывающая данные) может быть
Реализация Python:
Шаг 4. Первоначальное тестирование модели
- Токенизируйте входное предложение - разбейте его на массив слов
- Создайте пакет слов (массив с 0/1) для входного предложения - массив, равный размеру словарного запаса, с 1 для каждого слова, найденного во входном предложении
- Запустите model.predict с заданным массивом пакетов слов, это вернет вероятность для каждого намерения
Реализация Python:
Шаг 5. Повторное использование обученной модели
- Для лучшей возможности повторного использования рекомендуется создать отдельный блокнот TensorFlow для обработки запросов классификации.
- Мы можем повторно использовать ранее созданную модель DNN, загрузив ее с помощью рассола TensorFlow.
Реализация Python:
Шаг 6. Классификация текста
- Определите интерфейс REST, чтобы эта функция была доступна за пределами TensorFlow
- Преобразуйте входящее предложение в массив слов и запустите model.predict
- Рассмотрите результаты с вероятностью выше 0,25, чтобы отфильтровать шум
- Возврат нескольких идентифицированных намерений (если есть) вместе с заданной вероятностью
Реализация Python:
Первоначально опубликовано на сайте andrejusb.blogspot.com 30 июля 2018 г.