8월 말부터 제작은 해오고 있는데 정말 모듈 제작 까다롭네요...
아직 실력이 많이 부족하다는 걸 느꼈습니다. 모듈 제작하시는 분들 존경합니다.
XE에서 채팅 관련 모듈은 존재하는 것으로 알고 있는데 아직 챗봇 관련 모듈은 제작된 바가 없는 것 같더라구요. PHP 자체가 무겁고 AI 관련 라이브러리가 많지 않은 것도 한몫하는 것 같습니다. 그래서 챗봇이란 게 요즘 화제가 되고 있기도 하고, 저희 사이트에서 이용자들이 자주 묻는 질문들은 언제든지 빠르게 답장줄 수 있도록 하기 위해서 한 번 시도해보고 있긴 한데... 아직 갈 길이 먼 것 같아요.
처음에 구상할 때는 구름이님께서 제작하신 구글 자연어 분석 API 기반 인공지능 모듈(https://xetown.com/rxe_market/815098)의 텍스트 분석 기능을 이용해서 키워드를 뽑아 DB에 저장된 그에 맞는 답변을 출력하는 식으로 제작해보려고 했습니다.
그런데 아쉽게도 구글 자연어 분석 API(https://cloud.google.com/natural-language/)로만은 모든 대화의 중요한 키워드를 딱 골라 뽑지 못하더라구요.
예를 들어서 인삿말로 '만나서 반가워'라는 문장에서 키워드를 뽑으라고 하면 '만나' 또는 '반가워' 같이 중요한 용언을 뽑아야 되는데 구글 자연어 분석 API은 아래처럼
'만나서 반가워'에서 가워를 핵심 entity로 뽑았고 심지어 사람 관련 키워드로 인식을 하더군요... ^^;;
또 한 가지 문제점이 인공지능 모듈로 키워드를 추출하는 데 대략 1~2초 정도 소요되는데 챗봇과 대화하는 상황에서 이 시간이 꽤나 길게 느껴지더라구요.
그래서 구름이님께서 제작하신 인공지능 모듈뿐만이 아니라 ETRI에서 개발한 공공 인공지능 오픈 API(http://aiopen.etri.re.kr/)의 질문 분석 기능도 같이 사용하기로 결정했습니다. 이 API가 좋은 점이 질문의 의도와 정답 형태를 추출해서 답변의 정확도를 높일 수 있다는 것입니다.
이 API는 상업적 목적으로 사용하지 않는 이상 API Key를 신청하면 누구나 이용 가능하고, 1일 사용 가능한 횟수가 5,000건이어서 비상업적인 소규모 사이트에서는 충분히 활용 가능하다고 생각됩니다.
질문에 대하여 챗봇이 할 수 있는 답변들은 모듈 설정에서 의미 정답(intention), 어휘 정답, 필수 단어(entity), 키워드(keyword), 답변, 트리거를 입력할 수 있도록 했습니다. 이렇게 의도와 예상 답변 유형을 미리 추출하고 거기서 신뢰도가 높은 답변을 추출하니까 예전보다 좀 더 정확도가 높아진 것 같네요.
그래도 아직 많이 부족하다고 느끼는 게... 입력한 데이터량이 너무 적어서 예상에서 벗어난 질문을 이용자가 입력했을때 어떻게 답변할지에 관해서 잘 모르겠다는 점입니다. 또 만일 데이터량이 많아지면 답변 목록에서 정확한 답변을 추출하는 데 부하도 심할 것 같고 시간도 많이 들어서... 실제로 정말 비즈니스용으로 쓰기에는 턱없이 부족할 것 같습니다. 그냥 소규모 사이트에서 재미삼아 시범용(?)으로 사용하는 정도의 퀄리티만 나와도 만족할 것 같습니다.
예상 답변 목록에 트리거 이름을 입력하면 답변을 출력하면서 다른 모듈과 연계하여 추가적인 정보를 출력합니다.
또한 원하는 추가 정보 출력 형태도 답변 등록 시 입력 가능하도록 했습니다.
API로 받은 데이터를 잘 처리하는 것도 많이 어렵네요...;;
계속 데이터를 입력해보면서 최대한 정확도를 끌어올려봐야겠습니다.
수고 많으세요.
이런 챗봇은 https://dialogflow.com/ 서비스가 잘 맞는것 같은데 혹시 아직 못 보셨다면 참고 해보세요.(한국어 지원)
http://codevkr.tistory.com/74?category=748958