본문 바로가기
파이썬 (Python)/크롤링 (Crawling)

머신 러닝(Machine Learning) - 챗봇(Chatbot) 만드는 방법 + chatterbot 라이브러리 설치하는 방법

by ★√★ 2021. 2. 28.

안녕하세요,  오늘 포스팅 할 내용은, Machine Learning의 아주 기본이자, 요즘에 많은 기업에서 활용하고 있는 챗봇(Chatbot)를 만드는 과정을 포스팅 해볼려고 합니다.

 

Chatbot-chatterbot-썸네일
Chatbot-chatterbot-썸네일

 

챗봇(Chatbot)를 만드는 과정은 유튜브나 여러가지 블로그에도 많이 소개되는 것처럼 요즘 핫한 아이템인거 같습니다. 그럼 하나 하나 차근 차근 설명 해볼테니까, 따라오시면 됩니다.  

 

1. Chatbot 라이브러리 설치하기

 

: 일단 저희가 라이브러리를 만들지 않은 이상, 기존에 만들어 놓은 라이브러리를 사용해야 합니다. 제가 이번에 이용할 라이브러리는 "chatterbot" 입니다. 관련 자료는 아래 링크 참조 하시면 됩니다. 저도 공부하면서 많이 참조한 자료 입니다.

 

[참조 자료 : https://chatterbot.readthedocs.io/en/stable/index.html]

 

About ChatterBot — ChatterBot 1.0.2 documentation

Language Independence The language independent design of ChatterBot allows it to be trained to speak any language. Additionally, the machine-learning nature of ChatterBot allows an agent instance to improve it’s own knowledge of possible responses as it

chatterbot.readthedocs.io

 

- 파이참(Pycharm)을 설치하고 나서, 프로젝트 이름은 원하시는 대로 명명한 다음에 만들고 나면 아래 창을 보실 수 있습니다. 여기에서 챗봇의 코드를 입력할 수 있는 python file을 하나 만듭니다. 저는 chatbot이라고 명명하였습니다.

 

 

- 여기에서 라이브러리를 설치를 하셔야 합니다. 설치 구문은 아래와 같습니다.

: pip install chatterbot 

 

-설치를 완료하면, successfully installed 라는 문구가 나오면서, 설치가 완료가 될 겁니다.

 

2. ChatBot 라이브러리 활용하기

 

:  설치가 완료가 되면, 아래 코드를 통해, "chatterbot"의 라이브러리를 불러와야 합니다. 라이브러리를 불러오는 코드는 아래와 같습니다.

 

========================================================================== 

 

from chatterbot import ChatBot    # 챗봇의 라이브러리를 불러옴

==========================================================================

 

 

Chatbot-chatterbot-코드-구현-사진1

 

 

3. ChatBot 만들기

: 그럼 설치와 라이브러리 Import도 마쳤으니, 이제 나만의 챗봇을 하나 만들어 보겠습니다. 만드는 방법은, 아래 코드 예제를 통해서 설명 드리도록 하겠습니다.

 

==========================================================================

from chatterbot import ChatBot

from chatterbot.trainers import ListTrainer



chatbot = ChatBot("Davey",  # "Davey" 라는 Chatbot을 만듦.
                  storage_adapter='chatterbot.storage.SQLStorageAdapter',     # Storage Type을 선언.
                  logic_adapters=[
                      {
                      'import_path': 'chatterbot.logic.BestMatch',                     # 가장 매칭이 잘 되는 답변을 출력
                      'default_response': 'I am sorry, but I do not understand.'}  # 맞는 질문이 없을 때 (Exceptional Case)

                  ],
                  # "Davey" 라는 Chatbot 이 Data를 불러오는 장소를 지정, Question, Answer이 입력된 장소
                  database_uri='sqlite:///database.sqlite3')




trainer = ListTrainer(bot)                                                # List를 통해서 Chatbot을 Tranining 하겠다라고 선언

trainer.train([ 'Hi, How are you?',                                 # Tranining 할 List를 입력.

                       'I am Find and you?, ])





input01 = "Hi, How are you?"                                      # input01을 질문으로 선언.
response = chatbot.get_response(input01)                # input01에 맞는 답변을 출력하라고 명령 
print(response)

 

==========================================================================

 

- 위 코드를 실행 해보면 아래와 같은 결과를 보실 수 있습니다. 즉, "Hi, How are you?" 로 물어봤고, 그에 대한 답변으로, "I am Find and you"가 출력이 되는 걸 확인 하실 수 있습니다. 나름 신기하지 않나요?!

 

 

Chatbot-chatterbot-코드-구현-사진2

 

 

- 그럼 여기에서 하나의 의문이 들수가 있습니다. 코드에서는 질문을 입력할 수 있지만, 실시간으로 물어보고 싶을 때는 어떻게 해야 하는지 말이죠. 이럴 때는 Input 함수를 이용하여, 실시간으로 질문과 답변을 받을 수 있습니다. 수정된 코드는 아래와 같습니다. 

 

==========================================================================

input01 = input("질문을 입력하세요?")
#input01 = "Hi, How are you?"
response = chatbot.get_response(input01)
print(response)

 

==========================================================================

 

-위 코드를 수정을 해서 실행을 해보면 아래와 같이 질문을 입력하라고 나오고, 거기에다가  "Hi, How are you?"를 입력을 하면, 바로 그에 맞는 답변이 출력이 됩니다. 약간 더 지능적으로 되어 가는거 같지 않나요?! 저만 그런가요?! ㅎㅎ

 

 

Chatbot-chatterbot-코드-구현-사진3

 

 

이상입니다. Chatbot 관련해서는 내용이 너무 방대하여, 여러 파트로 쪼개서 포스팅을 하도록 하겠습니다. 한번에 많은 양의 페이지를 하게 되면, 읽는 사람도 힘들고, 그 많은 글 중에 자신이 원하는 내용을 찾기가 힘들다고 생각합니다. 그러니까, 너무 조바심을 느끼지 마시고, 하나 하나 배워가신다고 생각하고, 봐주시면 감사 드리겠습니다. 그럼 저도 성장하고 이 포스팅을 읽으시는 분들도 성장하면서, 더 좋은 저희가 되기를 바라며, 마무리하도록 하겠습니다. 감사합니다. 

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab