Это реализация Keras для задачи классификации предложений с использованием CNN.
Набор данных для вышеуказанной задачи был получен из теста естественного языка.
Текст, используемый для обучения, подпадает под шесть категорий, а именно: AddToPlaylist, BookRestaurant, GetWeather, RateBook, SearchCreativeWork, SearchScreeningEvent, каждая из которых содержит около 2000 предложений.
Чтобы подготовить набор данных, из основного каталога проекта откройте терминал и введите:
$ python prepare_data.py
Проверьте Intent_Classification_Keras_Glove.ipynb для части построения и обучения модели. Ниже представлен обзор модели.
Хотя RNN, такие как LSTM и GRU, широко используются для задач языкового моделирования, но CNN также оказались гораздо быстрее в обучении благодаря распараллеливанию данных во время обучения и дают лучшие результаты, чем LSTM. Вот краткое сравнение различных методов классификации предложений. Как видно, TextCNN дает лучший результат из всех, а также обучается быстрее. Мне удалось достичь точности 99% в наборе данных обучения и проверки в течение минуты после трех эпох при обучении на обычном процессоре i7.
Классификация намерений и распознавание именованных объектов — две наиболее важные части при создании целенаправленного чат-бота.
Существует множество пакетов Python с открытым исходным кодом для создания чат-бота, Rasa — один из них. Самое замечательное в Rasa то, что каждая часть стека полностью настраиваема и легко взаимозаменяема. Хотя Rasa имеет отличную встроенную поддержку задачи классификации намерений, мы также можем указать нашу собственную модель для этой задачи. Дополнительную информацию о ней можно найти в разделе «Конвейер обработки».
Использование предварительно обученных вложений слов в модели Keras
Сверточные нейронные сети для классификации предложений
Анализ чувствительности (и руководство для практиков) сверточных нейронных сетей для классификации предложений
Эмпирическая оценка общих сверточных и рекуррентных сетей для моделирования последовательностей