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과 동일합니다.