박서연 교수님의 자연어처리 수업을 듣고 자료를 참고하여 정리한 내용입니다.
궁극적으로는 **사람과 자연스럽게 대화하는 챗봇**을 만들기 위해 어떤 점들을 고려해야 하는지 알아보는 것이 중요
일단 dialogue 가 뭔지 이해가 필요함
챗봇 시스템을 만들 때는 대화의 시작(Start Point)과 종료(End Point) 시점을 명확히 감지하고 정의하는 메커니즘(
end point detection
)이 필수적입니다. 언제 대화를 시작하고, 언제 사용자의 말이 끝났다고 판단하며, 언제 대화를 마무리할지를 시스템이 알아야 합니다.
사람의 말은 단순히 정보 전달만 하지 않음 말하는 이의 '의도'가 담겨있음 이를 Speech Act라고 하며, 크게 4가지로 분류할 수 있음
이런 4가지 speech acts 를 인지할 수 있게 하는 게 중요
자연스러운 대화를 위해서는 단순히 말을 주고받는 것 이상의 요소들이 필요함
대화 참여자들이 서로 같은 주제에 대해 이야기하고 있음을 인지하고, 이해를 공유해나가는 과정
사람은 공유 형성 기반을 아주 잘 하는데 챗봇은 Theme 에서 벗어난 딴소리를 할 수 있음
okay,, alright,, sure,, got it ...
repeating what the other speakers said..
implicit signals...
질문과 답변, 요청과 수락/거절처럼 의미적으로 짝을 이루는 발화의 쌍
대화의 주도권이 왔다갔다 함 -> 주도권에 따라서 주제도 바뀜
자연스러운 챗봇을 만들려면, 이 주도권(Initiative)을 어떻게 시스템에 효과적으로 인코딩할지 고민해야 함..
머신에게 상식적인 추론을 하도록 하는 과정이 필요
ex)
상식 추론 기능을 넣지 않으면 치즈버거에 사람이 찔릴 수 있다는 것을 사실 그대로 받아들일 수 있음.
문장들을 이해하는 방식
NLP application 이 NN 을 기반으로 하면 LLM으로 가는 것.
챗봇은 단순히 문장 표면의 의미뿐 아니라, 숨겨진 의미나 상식적인 내용까지 추론할 수 있어야 합니다.
예를 들어, "배고파서 치즈버거를 먹었다"는 문장에서, '치즈버거는 음식이다', '사람은 배고프면 음식을 먹는다' 등의 상식적인 추론이 가능해야 함.
만약 "치즈버거에 찔렸다"는 입력이 들어왔을 때, 상식 추론 기능이 없다면 '사람이 치즈버거라는 물체에 물리적으로 찔렸다'고 잘못 해석할 수도 있음..
이를 위해 Common Sense Reasoning 연구가 필요