2020.07.24 - [Bigdata, AI/NLP] - 잘 만들어진 오픈소스 챗봇 KoChat !!
이전 글에서는 kochat을 소개했습니다.
그럼 이제 kochat을 한번 실행시켜 볼까요?
1. Kochat 실행해보기
사실 Kochat에서는 Demo를 제공하고 있음에도 몇몇분들에게서 kochat 실행방법에 대해 문의해주셔서 작성해보려고 합니다. 최대한 친절하게 작성해보려고 합니다..
최대한 잘 따라오시면 간단하게 실행해볼수 있을겁니다.
일단 저의 개발환경에 대해 말씀드리자면
- pycharm 2020.1
- anaconda 4.9.2
- python 3.7
- window10
- only CPU (NO GPU)
이전 회사에서는 GPU서버가 있었는데 이번엔 없다보니.....
하지만 CPU도 느리긴 하지만 가능하니 잘 따라오시기 바랍니다.
2. 본론
1) git clone 받기
개발자의 깃헙 주소입니다. 여기들어가셔서 오른쪽위에 code를 누르고 깃헙 주소를 복사합니다.
그리고 이걸 내 컴퓨터에 옮겨 와야겠지요?
git bash를 이용해서 클론을 받아보게 되면 아래와같이 복사된 파일들이 보일 것입니다.
그러면 이것을 이제 열어볼까요?
클론 받은 경로에 가서 pycharm을 실행시킵니다.
이렇게 하는게 편해서 저는 이렇게 불러옵니다. 에디터에 들어가서 open으로 가져와도 되니 자유롭게 실행하시면 됩니다.
이렇게 에디터가 실행되어서 프로젝트를 가져온 것을 확인할 수 있으시죠? 자 이렇게 되면 1차는 마무리 되었습니다.
2) 가상환경 구축!!!
kochat을 실행하려는데 kochat에서 쓰려는 라이브러리가 없다면 당연히 사용할수 없을것입니다.
그래서 kochat에서 필요한 library는 따로 받아줘야하는데 기존 프로젝트들에서 사용하는 라이브러리 같은 경우는 버전때문에 의존성에 문제가 생길수 있습니다. 그래서 항상 프로젝트별로 가상환경을 구성해주셔야 프로젝트 관리가 쉽습니다. 꼭 유념해주세요~
그러면 가상환경을 만들어 봅시다.
anaconda prompt에서 만들수도 있고 pycharm 에서 만들수도 있습니다. 요즘 anaconda 설치할때는 PATH에 등록하는걸 추천하지 않고 anaconda prompt를 사용하는걸 추천하더라구요...
저는 간편하게 pycharm에서 만들어보겠습니다. 에디터에서 많은부분을 해결해줘 참 간편합니다.
우측 하단에 interpreter 를 선택해줍니다.
interpreter가 없기때문에 Add 해주겠습니다. Add Interpreter를 선택해줍니다.
새로운 가상환경을 만들어줍니다~ 가상환경이름은 location 맨 뒤에 kochat-test가 되겠습니다.
이렇게 하고 기다리게 되면 우측하단이 변경된것을 확인하실수 있습니다.
가상환경을 실행해준 뒤에 터미널을 새로 실행해보면 가상환경이 자동으로 실행되어 나옵니다.
커맨드 입력창 앞에 ( )괄호 안에 가상환경 이름이 들어가있죠? 혹은 명령어를 실행시켜 가상환경을 실행할 수 있습니다.
여기까지가 가상환경을 만드는 작업을 해봤습니다.
이제 kochat에서 쓰는 라이브러리들을 한번 추가해볼까요?
3) 라이브러리 추가
라이브러리 추가는 간편합니다. 개발자가 이미 제공해준 파일에 dependency가 정리된 파일이 있습니다.
requirements.txt 파일에 의존성이 정리되어있는데 이걸 다운받기 위해서 명령어 한줄을 입력할 예정입니다.
$ pip install -r requirements.txt
가상 환경 안에서는 pip를 쓰던 conda를 쓰던 가상환경 안에 설치가 되기때문에 사용할수 있습니다.
이렇게 하면 쭉 설치가 되어지는걸 볼수 있습니다.
뭔가 많이 설치 되었네요!
그런데..................
이렇게만 하면 kochat을 실행할수 없습니다.
왜냐면 개발자가 개발했던 환경과 저희의 환경이 다르기 때문에 이렇게 하면 많은 에러가 발생합니다......ㅠ
그럼 에러를 하나하나 잡아가야겠지요..
그럼 이제 하나하나 잡아볼까요?
에러1) 모듈 위치 에러
우리가 실행해보려고 하는 demo같은 경우는 가상환경에 kochat이 라이브러리 형태로 설치되어 있는 경우를 가정하고 사용할수 있습니다. 하지만 지금 우리는 kochat을 소스 그대로 가져와서 실행해보려고 하니 이게 에러가 생길수 밖에 없는 상황입니다. 그럼 이것을 어떻게 해결해야 하나?
demo/application.py
import sys
sys.path.append('kochat이 설치된 최상위 폴더 경로')
#sys.path.append('D:\pyproject\kochat-test')
해당 코드를 최상위에 추가해주면 됩니다. 이 코드는 라이브러리를 가져오는 경로를 추가해준것입니다.
그러면 이제 import 하려는 kochat 관련된 파일들을 모두 불러올수 있게 되어 모듈관련 에러는 발생하지 않습니다.
에러2) 미설치 라이브러리
아까 말씀드렸듯이 개발자 환경과 우리의 환경이 다르다보니 개발자가 requirements 파일을 남겨뒀음에도 아직 설치되지 않은 파일들이 있습니다.
torch 가 없네요... 설치해줍니다.
pip install torch
이제 다시 실행해봅니다.
이번엔 kocrawl이란게 없네여.. 이건 개발자가 날씨정보나 위치정보를 가져올 목적으로 만든 라이브러리입니다. pip를 사용해서 다운로드 가능합니다.
pip install kocrawl
여기까지는 얼추 설치가 완료된것 같습니다.
에러3) konlpy 관련 에러
그런데 이제 실행하면 다른 에러가 발생하네요..?
이 에러같은 경우는 검색해보니 jPype의 버전이 맞지 않는 경우라고 합니다. 그래서 다운받아주고 설치했습니다.
위 블로그를 참조하시면 jpype 다운 받는 경로와 방법을 알려주십니다. 참고하세요~
그럼 저도 다운 받아 설치해보고 다시 실행해보겠습니다.
저는 파이썬3.7 버전을 쓰고 있으니 저걸받아서 설치해보겠습니다.
다운받은 파일을 kochat 폴더로 옮겨놓고 설치를 완료했습니다.
>pip install JPype1-1.2.0-cp37-cp37m-win_amd64.whl
여기까지 잘 따라오셨나요???
그러고나서 이제 실행을 해봅니다. demo 폴더 경로로 이동한뒤에 실행해줍니다.
실행해주는 경로 또한 중요합니다~!!
> python application.py
에러4) matplotlib backend 관련 에러
잘 따라왔는데.. GensimEmbedder 학습이 끝난 뒤에 에러가 발생하네요?
main thread 어쩌고 하는 에러가 발생합니다. 이거는 matplotlib의 backend 설정과 관련해서 발생하는 에러라고 합니다. 그러면 이걸 해결해주기 위해서 몇가지 코드를 추가해줍니다.
# kochat\proc\utils\visualizer.py
# kochat\utils\visualizer.py
# matplotlib이 사용되어지는 파일에가서
from matplotlib import pyplot as plt
# 위 코드를 아래와같이 바꿔줍니다.
import matplotlib
matplotlib.use('Agg')
from matplotlib import pyplot as plt
matplotlib의 backend와 관련한 더 자세한 설명은 여기를 참조하세요. 잘 적어놓은 블로그 입니다.
이렇게 하면 아마 학습이 잘 되어질것입니다.
4) 웹서버 설정
자 이제 마무리 단계입니다.
챗봇을 만들었으면 이걸 직접 써봐야겠죠?
그 전에 demo/application.py 을 열어서 서버ip를 변경해야합니다. 0.0.0.0 아이피는 접속할수 없거든요!
일단은 로컬에서만 쓸꺼니깐 127.0.0.1로 변경하겠습니다.
kochat은 통신하기 위해 ajax를 쓰는데 client 단에서도 주소를 설정해줘야 합니다.
# demo\static\js\main.js
...
#대략 83번째 줄
function requestChat(messageText, url_pattern) {
$.ajax({
url: "http://127.0.0.1:8080/" + url_pattern + '/' + userName + '/' + messageText,
# url: "http://0.0.0.0:8080/" + url_pattern + '/' + userName + '/' + messageText,
type: "GET",
dataType: "json",
success: function (data) {
...
이렇게 url을 바꿔줍니다.
5) 실행
그러면 이제 테스트를 해봐야겠죠? 한번 봅시다
저는 cpu환경이고 실행하는것만 해보기 위해서 모든 학습에폭을 10으로 바꿔버렸습니다.
답변이 제대로 안나오도라도 이해해주세요
서버가 정상적으로 올라간거 보이시죠? 그럼 접속해봅시다
슬롯이 잘 채워져있어서 그런지 일단 답변은 잘하는거 같네요~
3. 결론
개발자가 pip를 통해서 kochat을 다운받을수 있게 했음에도 소스를 받아서 실행시킨 이유는 단순히 한번 실행하고 끝낼게 아니라 여러가지 옵션을 변경해보고 추가적인 개발도 진행하면 어떨까 싶은 생각에서 그렇게 해봤습니다.
여기서 딥러닝과 관련된 어떠한 작업을 한게 아니기 때문에 초보자도 쉽게 설치해서 실행해볼수 있을꺼라 생각합니다.
글이 길어지다보니 미흡한 설명이 있더라도 양해 부탁드립니다..
질문이 있으시면 언제든 댓글을 남겨주세요
'Bigdata, AI > NLP' 카테고리의 다른 글
잘 만들어진 오픈소스 챗봇 KoChat !! (20) | 2021.03.10 |
---|---|
WHAT IS TORCH.NN REALLY? (0) | 2020.08.26 |
예제로 배우는 파이토치3. 마지막. (0) | 2020.08.25 |
예제로 배우는 파이토치2 (0) | 2020.08.25 |
예제로 배우는 파이토치! (0) | 2020.08.24 |
댓글