Corpus-based Chatbot
Corpus and corpora

- corpus(코퍼스):
- NLP 분석용 특수 목적 텍스트 데이터 뭉치임
- 말뭉치
- corpora:
- corpus 여러 개
- 일반, 특정 분야(금융/의료 등), 번역된 거(병렬 코퍼스), 실제 대화(구어체/대화 코퍼스) 등등 있음
- 밑에 그림은 대화 예시, 이런 거 모아서 대화 코퍼스 만듦
Corpus-based Chatbot

이건 사람이 규칙 안 만듦. 대신 실제 사람들 대화 데이터 엄청 학습해서 입력->출력 패턴을 지가 배움.
- 장점:
- 규칙 안 짜도 됨.
- 시스템 구조나 데이터 특징에 집중 가능
- 요즘 많이 씀.
- 단점:
- 데이터 많이 필요
- 수억 단어 필요할 수도 있음
- 작동 원리:
- 학습 데이터로 패턴 익혀서, 처음 보는 입력 들어와도 알아서 적절히 대답
- 그림은 '안녕' -> '어 안녕 잘 지냄?' 같은 입력/출력 쌍 보여줌
어떤 데이터셋?

- 실제 사람들 대화 녹음 -> 텍스트
- 영화 대본.
- 트위터 글
- 돈 주고 사람들한테 대화 만들라고 시켜서 모은 거 (크라우드소싱, 예: Topical-Chatbot).
Non-dialogue corpora
꼭 대화 데이터만 쓰는 건 아님.
뉴스나 위키백과 같은 것도 써서 챗봇 응답 학습 가능..

왜 쓰냐면?
- 챗봇이 그냥 대답만 하는 게 아니라 사실 정보나 이야기도 할 수 있게 하려고 임 (외부 지식 활용). 응답이 더 유익해짐.
- 특히 위키백과 -> 정보 활용 용이함..
Using human utterance

- 유저가 챗봇이랑 한 말 자체도 학습 데이터로 또 쓸 수 있음.
- 장점:
- 챗봇이 점점 똑똑해짐
- 근데 조심해야 됨: 유저 말에 개인정보(PII) 있을 수 있음. 프라이버시 문제 생김.
- personally identifiable information
- 해결책:
- 학습 전에 개인정보 꼭 지워야 함
- 어떻게 지우냐면: 개체명 인식(NER)으로 이름/회사/장소 같은 거 찾아내고, Masking으로 *** 처리 함.
- named entity recognition
종류 및 한계

- 코퍼스 기반 챗봇 크게 두 종류:
- 정보 검색(IR) 기반: 데이터 뒤져서 제일 비슷한 답 찾아옴.
- 기계 학습 시퀀스 변환 기반: 입력 문장을 응답 문장으로 바꾸는 법을 배움 (인코더-디코더 같은 거 씀).
- 단점: 대부분 대화 맥락(Context) 파악 잘 못함
- 그래서 주로 유저가 바로 전에 한 말 듣고, 그거에 맞는 단일 응답 하나 잘 만드는 거에만 신경 씀

맥락 인식 잘 못함
- 그래서 완전한 대화 시스템이라기보단 그냥 '응답 생성기'나 'QA 시스템' 같음
- 딱 한 번 대답 잘하는 거에만 집중하고, 전체적인 대화 목표 같은 건 신경 안 쓰는 경향이 있음.