bert모델은 너무 무거워 네이버 클라우드의 무료 서버([MICRO] 1vCPU, 1GB Mem, 50GB Disk [g1]) 사양에서는 응답이 20분 뒤에 와 규칙기반 챗봇을 적용하였습니다.
실무자들을 위한 민원 상담 챗봇입니다. 민원처리법 해석, 서식민원 접수 방법 등을 설명해줍니다.
- 2023.01.01. ~ 2023.01.31.
http://www.minwonchatbot.site/
- 질문 예시 (실무자들 대상이라 몇 개의 질문 예시를 들겠습니다.)
- 이송할 때 어떻게 하니?
- 민원이란?
- 사용자는 원하는 양식이 필요한 경우 다운로드 받을 수 있습니다.
- 사용자가 "취하원 양식이 뭐야?"라는 질문을 하면 "취하원 양식"을 다운로드 받을 수 있는 링크가 등장합니다.
- 답변이 빠르게 와야 합니다.
- 서버가 감당할 수 있는 모델의 무게를 결정해야 합니다.
- 정확한 답변이 와야 합니다.
- DB를 연동해서 이상한 답변이 가는 데이터들을 모아 주기적으로 올바른 답변으로 업데이트 합니다.
- 내부 python파일을 필요에 따라 원하는 모델로 바꾸시면 됩니다.
- 규칙기반 챗봇의 경우 데이터가 많고 특정 분야가 정해진 경우에 이용합니다.
- 위 챗봇은 민원처리에 관한 특정 분야가 정해져 있기 때문에 규칙 기반으로 정했습니다.
- 규칙 기반을 통해 답변을 찾는 python 외부 파일을 Java가 실행해야 합니다.
- ProcessBuilder를 이용하여 외부에 있는 python 파일을 실행했습니다.
- 프로젝트의
src\main\java\hello\chatbot\python
안에 놓았지만 실제는 외부에 있어야 합니다.
- 사용자는 원하는 양식이 필요한 경우 다운로드 받을 수 있습니다.
- excel에 저장된 답변 데이터에 태그를 통해 파일의 링크를 넣었습니다.
- 이 답변 데이터는
src\main\java\hello\chatbot\domain\question
에 있는 **"FileLinkMaker"**를 통해서 HTML태그를 분리합니다. - 분리된 HTML에 태그는 Javascript에서 HTML태그를 만드는 innerhtml를 통해서 HTML 태그로 리턴됩니다.
- 비동기 통신으로 이루어지기 때문에 Javascript의 Ajax를 사용했습니다.
- 사용자가 잘못된 답변을 받은 경우 "바보: 잘못된 답변이 간 질문"을 챗팅창에 넣으면 이 데이터가 DB에 쌓입니다.
- 올바른 답변 데이터를 연결하는 작업을 주기적으로 진행합니다.
- 두 달간 실무자들이 자주 질문하는 내용을 모았고 민원처리법을 기반으로 작성하였습니다.