이는 CNN을 사용한 문장 분류 작업을 위한 Keras 구현입니다.
위 작업에 대한 데이터 세트는 프로젝트 자연어 이해 벤치마크에서 얻었습니다.
훈련에 사용된 텍스트는 AddToPlaylist, BookRestaurant, GetWeather, RateBook, SearchCreativeWork, SearchScreeningEvent라는 6개 범주에 속하며 각각 거의 2000개의 문장으로 구성됩니다.
데이터세트를 준비하려면 기본 프로젝트 디렉터리에서 터미널을 열고 다음을 입력하세요.
$ python prepare_data.py
모델 구축 및 훈련 부분은 Intent_Classification_Keras_Glove.ipynb를 확인하세요. 아래는 모델 개요입니다.
LSTM 및 GRU와 같은 RNN은 언어 모델링 작업에 널리 사용되지만 CNN은 훈련 중 데이터 병렬화로 인해 훈련 속도가 훨씬 빠르고 LSTM보다 더 나은 결과를 제공하는 것으로 입증되었습니다. 다음은 문장 분류를 해결하는 다양한 방법 간의 간략한 비교입니다. 보시다시피 TextCNN은 가장 좋은 결과를 제공하고 더 빠르게 훈련합니다. 일반 i7 CPU에서 훈련할 때 3 에포크 후 1분 이내에 훈련 및 검증 데이터 세트에 대해 99% 정확도를 달성할 수 있었습니다.
의도 분류와 명명된 엔터티 인식은 목표 지향적인 챗봇을 만드는 데 가장 중요한 두 가지 부분입니다.
챗봇을 만들기 위한 오픈 소스 Python 패키지가 많이 있으며 Rasa도 그중 하나입니다. Rasa의 멋진 점은 스택의 모든 부분이 완전히 사용자 정의 가능하고 쉽게 상호 교환 가능하다는 것입니다. Rasa에는 의도 분류 작업에 대한 지원이 내장되어 있지만 작업에 대한 자체 모델을 지정할 수도 있습니다. 이에 대한 자세한 내용은 처리 파이프라인을 확인하세요.
Keras 모델에서 사전 훈련된 단어 임베딩 사용
문장 분류를 위한 컨벌루션 신경망
문장 분류를 위한 컨볼루셔널 신경망(및 실무자 가이드)의 민감도 분석
시퀀스 모델링을 위한 일반 컨벌루션 및 순환 네트워크의 실증적 평가