-
Notifications
You must be signed in to change notification settings - Fork 0
AI ChatBot Recommendation System
이 문서는 음성 인식을 사용한 챗봇 시스템에 대한 구현 내용을 기술합니다.
데이터셋, 문장 임베딩 모델, 명령 의도분류 모델, 엔티티 구별 모델, 모델 설정 및 데이터셋 처리 관련 로직, 학습시 모델 설정 내용에 대한 설명이 포함됩니다.
직접 구성한 레시피 조작 명령어 데이터셋을 통해 모델학습을 진행.
- 사용자의 명령어 문장에 대해 총 4가지 명령어 class 및 해당 명령어내 엔티티를 구별 가능하게 학습하였음.
데이터셋 세부 형태 :
-
명령어 의도분류 데이터셋 형태 :
question label 다음 보여줘 NEXT 다음 NEXT 2페이지 넘겨줘 NEXT 다음내용 알려줘 NEXT question label 다시 한번 들려줘 REPEAT 한번만 더 들려줘 REPEAT 한번 더 말해줘 REPEAT 다시 한번 말해줘 REPEAT -
명령어 엔티티(NER) 데이터셋 형태 :
question label 다음 보여줘 0 0 다음 0 2페이지 넘겨줘 S-Pcount 0 다음내용 알려줘 0 0 다음 넘겨줘 0 0 다음 2장 넘겨줘 0 S-Pcount 0 다음 3장 넘겨줘 0 S-Pcount 0 다음 4장 넘겨줘 0 S-Pcount 0 question label 현재 레시피 다시 말해줘 S-NOW 0 0 0 지금 레시피 다시 말해줘 S-NOW 0 0 0 전체 레시피 다시 말해줘 S-TOTAL 0 0 0 레시피 처음부터 다시 0 S-TOTAL 0 처음부터 다시 말해줘 S-TOTAL 0 0 처음부터 다시 들려줘 S-TOTAL 0 0 처음부터 다시 S-TOTAL 0 시작부터 다시 들려줘 S-TOTAL 0 0
FastText 임베딩 모델을 사용하여 처리하며,
전체 데이터셋 문장을 FastText 방식을 통해 임베딩하여 처리합니다.
- 인텐트 구별모델의 경우 SKTBrain/KoBERT 사용을 위해 별도의 문장 임베딩 모델을 사용함.

SKTBrain/KoBERT : https://github.com/SKTBrain/KoBERT#naver-sentiment-analysis

SKTBrain에서 제공하는 KoBERT 모델에 자체 제작한 명령어 의도분류 데이터셋을 학습하여 사용자 명령어 의도분류가 가능한 모델을 학습 및 사용하였습니다.
- 모델 결과 예시 :

KoChat/LSTM : https://github.com/hyunwoongko/kochat/blob/master/kochat/model/entity/lstm.py

KoChat 프로젝트의 LSTM 모델에 자체 제작한 명령어 엔티티(NER) 데이터셋을 학습하여 사용자의 명령어 문장별로 NER(개체명 인식) 태깅을 분류가능한 LSTM 모델을 학습 및 사용하였습니다.
임베딩, 인텐트 학습, 엔티티 학습 등에 사용한 학습 횟수 및 기타 설정은 kochat_config.py 파일 내에 기록되어 있습니다.

KoChat 프로젝트에서 사용하는 데이터셋 처리 방식 및 학습모델 세부 설정 방식을 차용하여 저희 프로젝트에 적용하였습니다.