규칙 기반(Rule - Based) 챗봇 만들어 보기!

be1le·2022년 3월 30일
3

ML

목록 보기
5/22
post-thumbnail

지금 진행중인 프로젝트에서 간단한 기능을 하는 Rule - Based 챗봇이 하나 필요 했는데! 이를 직접 구현해 보는 과정을 정리해 보려 한다.

규칙 기반(Rule - Based)이란?

규칙 기반 시스템은 자신의 할 일만 하도록 프로그래밍 된 시스템이다. 더 적은 노력이 들고, 비용 효율적이고, 덜 위험하지만 경직돼 있다. 소수의 결과나 고정된 결과가 나올 때,오류 위험 예상시, 머신러닝 도입 계획이 없을 때 활용할 수 있다. 즉 규칙을 직접 만들어서 해당하는 규칙에 해당할때 정해둔 답을 출력하는 프로그램인 것이다.

규칙 기반 학습더보기
reference

Rule-Based 설계하기

테스트 데이터 다운로드 받기

request는 사실상 레퍼런스의 역할을 하는것이고 response는 챗봇이 실질적인 대답을 하는 내용이다. pandas만 있으면 간단히 구현이 가능하다. 한국어 전문 라이브러리인 konlpy와 같은 한국어 형태소 분석기를 사용해서 더욱더 정교함을 높여야 하지만, 워낙 간단한 기능만 수행하면 되기에 최대한 가볍게 만드는 것을 목표로 하였다.
형태소 분석이 중요한 이유는 이전 블로그에서 포스팅 해두었기에 해당 포스팅을 참고해 주길 바란다.
Text-preprocessing 바로가기

코드 실행부


read_excel 함수를 실행시켜 chatbot_data 변수에 저장한다.

rule 저장


챗봇의 rule을 split한 후, 순서값과 함께 딕셔너리 형태로 저장한다

출력 예시
{0: ['추천'], 1: ['추리'], 2: ['스릴러'], 3: ['공포'], 4: ['과학'], 5: ['판타지'], 6: ['무협'], 7: ['게임'], 8: ['로맨스'], 9: ['연세'], 10: ['힘']}

Chatbot 함수

chat이라는 함수는 인자값이 request라는 문자열이며, chat_dic에 있는 딕셔너리 데이터를 loop 하여, 룰에 포함되어 있는지 비교를 한다. 룰을 비교할 때 해당 단어가 포함되어 있는지를 체크하는 logic을 따른다.

채팅


이제 만들어진 챗봇 함수를 호출하여 rule이 모두 포함되어 있으면 response를 리턴하며 프로그램을 종료하고 싶으면 exit를 입력하면 된다.

전체코드


전체코드를 바로 다운로드할 수 있는 링크를 남기며 포스팅을 마치도록 하겠다.
전체코드 바로가기

profile
그저 그런 개발자가 되지 않겠습니다.

0개의 댓글