Subject
Language Style과 감정 분석에 따른 챗봇 답변 변화 모델 : 사용자의 입력에 따라 챗봇이 답변하는 단순한 형태의 대화형 챗봇이 많이 등장하고 있다. 이러한 챗봇은 학습된 데이터에 따라 하나의 답변 Style을 갖기에 기계가 답변한다는 느낌이 강하다. 이에 본 논문에서는 챗봇이 실제 사람과 같이 답변하도록 하기위해 챗봇에게 Language Style을 ‘부드러움’ 과 ‘무뚝뚝함’ 두 가지로 구분하여 학습시킨다. 또한 사용자 입력에 감정 분석(Sentiment Analysis)을 통하여 챗봇 출력 시퀀스에 이모티콘을 추가하여 학습한다. Human Evaluation을 통해 챗봇의 성능을 평가하였다.
Project Team
- 김봉민(컴퓨터공학과, 2017103969)
- 김민수(컴퓨터공학과, 2017103965)
Requirement
- Ubuntu 18.04.1 LTS
- Force RTX 2080 Ti
- Python 3.6.8
- Pytorch 1.2.0
Code
Chatbot
Chatbot_main.py
챗봇 학습 및 시험에 사용되는 메인 파일입니다.
model.py
챗봇에 이용되는 Transfer 모델 클래스 파일입니다.
generation.py
추론 및 Beam search, Greedy search를 하는 파일입니다.
metric.py
학습 성능을 측정하기 위한 모델입니다.\
acc(yhat, y)
\
Styling.py
성격에 따라 문체를 바꿔주는 역할을 하는 파일입니다.
get_data.py
데이터셋을 전처리하고 불러오기 위한 파일입니다.\
tokenizer1(text)
\
- text: 토크나이징할 문자열
특수문자를 걸러낸 후 Mecab으로 토크나이징합니다.\
data_preprocessing(args, device)
\ - args: argparser로 파싱한 NamedTuple
- device: pytorch device 텍스트를 토크나이징하고 id, 텍스트, 라벨, 감정분석 결과로 나누어 데이터셋을 구성합니다.
KoBERT
SKTBrain KoBERT\ SKT Brain에서 BERT를 한국어에 응용하여 만든 모델입니다.\ 네이버 영화 리뷰를 통해 감정 분석을 학습했으며 챗봇 감정 분석에 사용됩니다.\
Light_model
웹 호스팅을 위해 경량화한 모델입니다. KoBERT를 지원하지 않습니다.
light_chatbot.py
챗봇 모델 학습 및 시험을 할수 있는 콘솔 프로그램입니다.
light_chatbot.py [--train] [--per_soft|--per_rough]
- train: 학습해 모델을 만들 경우에 사용합니다. 사용하지 않으면 모델을 불러와 시험 합니다.
- per_soft: soft 말투를 학습 또는 시험합니다.
- per_rough: rough 말투를 학습 또는 시험합니다.
두 옵션은 양립 불가능합니다.
### app.py
웹 호스팅을 위한, Flask로 구성된 간단한 HTTP 서버입니다.\
POST /api/soft
\ soft 모델을 사용해, 추론 결과를 JSON으로 응답해주는 API를 제공합니다.\GET /
\ static 폴더의 HTML, CSS, JS를 정적으로 호스팅해 응답합니다. ### 기타 generation.py, styling.py, model.py의 역할은 Chatbot과 동일합니다.
Model Structure
Result
Evaluation
Task 특성상 Human Evaluation을 통해 성능 평가를 진행하였다. 질문 총 20개를 통해 얻어낸 답변으로 성능 옵션 5개인 매우 잘함(5점), 잘함(4점), 보통(3점), 못함(2점), 매우 못함(1점)에 대해 평가를 진행하였다. 총 27명의 평가자가 진행하였으며, 20개의 질문에 대한 평균 점수는 3.035점이 나왔다. 각각의 옵션에 대해 높은 평가 비율을 보인 질문과 답변 쌍은 [표 3]과 같으며 매우 잘함 55.6%라는 말은 27명 중 약 15명의 사람이 본 질문과 답변 쌍에 대해 매우 잘함이라 평가한 것이다.
Conclusion
본 논문에서는 사용자의 감정을 분석하고 출력의 종결 어미나 보조용언과 연결어미가 합쳐져 표현된 형태소를 찾아 Language Style을 변경시킴으로써 챗봇이 실제 사 람처럼 답변하게끔 하는 모델을 제시하였다. Human Evaluation을 통해 5개의 옵션을 두고 성능을 평가하였 다.
본 연구를 통해 기존보다 사람에 가까운 답변을 하는 챗봇을 만들어 사용자 경험 측면에서의 만족도를 높이었 다. Language Style을 구성하는 것은 말투만이 아니기에 향후 추가 학습을 통해 어휘, 묘사 등의 변화를 주어서 챗봇의 성능을 개선하고자 한다
References
[1] Ilya Sutskever, Oriol Vinyals and Quoc V.Le, “Sequence to Sequence Learning with Neural Networks”, In proceedings of Neural Information Processing System, pp. 3104-3112, 2014
[2] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N.Gomez, Lukasz Kaiser and Illia Polosukhin, “Attention Is All You Need”, In proceedings of Neural Information Processing System, pp. 5998-6008, 2017
[3] Junjie Tin*, Zixun Chen, kELAI Zhou and Chonhyuan Yu, “A Deep Learning Based Chatbot System for Campus Psychological Therapy”, arXiv preprint arXiv:1910.06707, pp. 0-31, 2019
[4] Jacob Devlin, Ming-Wei Chang, Kenton Lee and Kristina Toutanova, “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”, North American Chapter of the Association for Computational Linguistics, pp. 4171-4186, 2019
[5] D.gov Trend&Future 인공지능 기반 챗봇 서비스의 국내외 동향분석 및 발전 전망