chatpie / chatbot

3 stars 0 forks source link

[종성] 한국어 챗봇 초간단 모델 #18

Closed tacobeer closed 7 years ago

tacobeer commented 7 years ago

장소 : 경복궁 한정

<패턴 매칭 관광지 챗봇 대화 모델>을 짜기 위해서 우선 거시적인 관점에서 대화 유형을 정리해보려 한다.

유형은 크게 세 개의 분류로 나뉘어진다.

1- 화자가 어느 범주인가? 2- 어떤 정보 분야에 대해 묻는가? 3- 어떻게 묻는가?

1- 화자가 어느 범주인가?

화자는 챗봇과 대화를 주고 받는 대상의 범위에 대한 규정이다. 화자의 화법은 화자마다 다양하며, ~했습니까? 같은 경어체를 쓰는 경우도 있을 테고 ~했어? 같은 편한 말투를 구사하는 경우도 있을 것이다. 또한 같은 화자라도 같은 경어체 내에서도 -했어요? 같은 조금 편한 느낌의 경어체를 쓰는 경우도 있을 것이다. 그리고 같은 화자라도 그때그때의 환경에 따라 기존과는 다른 말투로 대화를 걸기도 할 것이다.

따라서 화자를 상정하는 일에 있어서

<화자의 수 == 존재하는 모든 말투의 수>

라고 정해도 무방할 것이다.

이 범주에 대하여는 우선 초기에 몇몇 말투를 정해두고, 추후 여러 케이스 연구와 프로토 타입 테스트를 통해 여러 말투를 추가할 것이다.

2- 어떤 정보 분야에 대해 묻는가?

챗봇이 제공할 관광지에 대한 정보는 우선 몇 가지 큰 범주로 나뉘어질 수 있으며, 다시 그 큰 범주 속에서 여러 작은 범주로 나뉘어질 수 있다. 우선 큰 범주에 대해서는 회의 때 얘기했던 다음과 같은 범주가 존재할 수 있을 것이다. 관광지의 역사, 관광지에 대한 정보(명확하지 않음), 길찾기 이를 바탕으로 추후 계속해서 큰 범주를 추가하고, 작은 범주를 서서히 정하고자 한다.

3- 어떻게 묻는가?

<어떻게 묻는가?>는 쉽게 말하자면 동사, 형용사, 체언의 어간?을 예로 들 수 있을 듯 하다.

예시)

1- 화자가 어느 범주인가? -줘 -냐? -니? -야? -가? -어? -해 -해? 기타 등등

혹은 명사형으로 -임?

경어체로 -주세요 -주실래요?

어미(?) 생략(단순히 "경복궁 어디" 같은 식으로 질문할 수도 있음) 요청 생략(단순히 "경복궁 정보" 같은 식으로 질문할 수도 있음)

2- 어떤 정보 분야에 대해 묻는가?

관광지의 역사 관광지의 정보 길찾기

3- 무엇에 대하여 어떻게 묻는가?

해 해 알 가르켜 가르쳐 말 가 갈 있

같은 부류가 있을 듯 하다.

/(알려줘, 가르켜줘, 갈쳐줘, 가르쳐줘, 말해줘, 어떻게 가? 갈 수 있어?, 있어?, 어디냐, 어디, 가려면 어떡해? 어떻게 해야해? )/

그런데 위에서 대충 끼적이다가 생각해보니 위와 같은 구분은 실용적이지 않을 것 같다(1의 화자가 어느 범주인가 같은 건 좀 개소리인거 같다)

그래서 다시 얘기하자면,

체언 경복궁, 창복궁

서술어 동사, 형용사, 체언+서술격 조사 (이다)

부사 자세히 어떻게

그냥 이 세 개를 중심으로 나눠보고자 한다.


사람 : 안녕 키워드 : "안녕" 챗봇 : 안녕하세요

사 : 경복궁에 대해서 설명해줘 키워드 : "경복궁" "설명" " 해" 챗 : 어떤 설명을 원하시나요?

사 : 경복궁의 역사에 대해서 설명해줘 키워드 : "경복궁" "역사" "설명" "해" 챗 : 경복궁에는 이러저러한 역사가 있습니다

사 : 여기말고 뭐가 더 있어? 키워드 : "여기", "뭐" "더", "있" 챗 : 가까이에 창경궁이 있습니다

사 : 경복궁이 창경궁 안에 있니? 키워드 : "경복궁", "창경궁", "안", "있" 챗 : 아뇨.

사 : 경복궁이 창경궁이랑 다르니? 키워드 : "경복궁", "창경궁", "다르" 챗 : 네.


이러한 간단한 예제에서 볼 수 있는 것처럼, <체언과 서술어와 부사의 곱>이 모든 경우의 될 것이다. 실제적으로는 그 모든 곱보다는 훨씬 적은 숫자의 경우의 수가 될 것이다.

따라서 우선 <존재할 수 있는 체언>과, <존재할 수 있는 서술어>와< 존재할 수 있는 부사>를 모두 정리하여 이를 분류하고, 이를 조합하는 몇몇 규칙에 따라 기초적인 모델을 형성할 수 있을 것처럼 보인다.

추가로 여기서 영어챗봇과 한국어챗봇의 차이점이 생긴다.

한국어는 예컨대 주어 부분을 이루는 요소로서 가장 기본적인 형태로는 체언과 조사가 있을 수 있는데, 영어는 주어의 기본적인 형태로서 명사 하나만이 쓰인다.

좀 더 풀어서 말하자면, 한국어에는 형태소라는 것이 존재하고 영어에는 형태소가 존재하지 않는다. 영어는 띄어쓰기 단위로 단어들이 최소한의 의미를 지나고 있다면 한국어는 띄어쓰기를 단위로 나뉘어도 "철수는" 같은 경우 "철수"와 "-는" 이라는 두 개의 형태소가 존재하게 되는 것이다. 그리고 이러한 형태소를 분리하는 일이 한국어 기반의 자연어 처리 과정에서는 전처리 과정으로 처리되어야하는데, 형태소 분석기의 정확도가 완벽하지 않기에 잘못된 부분이 생길 수 밖에 없다.

비단 형태소 분석의 문제뿐만 아니라, 형태소 분석을 사용하지 않더라도 위의 차이점과 기타 등등의 이유들 때문에 영어 챗봇과 한국어 챗봇의 차이가 생길 수밖에 없다.