실제 내용은 7장부터 시작이어서 나도 7장부터 시작하려고 한다.
근데 Mysql 미치겠다. ㅋㅋㅋ 내가 루트계정 권한을 안주고 종료했는지.. 접속이 안된다. 노트북 바꿀 때 잘못설치한듯..
무슨 에러 겁나 떠서 재설치도 제대로 안되고.. 그냥
8.0.20 버전으로 새로 깔았다.. 그 이후
쭉쭉 진행이 됐다.
그렇게 DB를 생성하고
DB 접속하기 위해서 DB 정보 모듈도 만들고 그랬는데
DB_HOST = "127.0.0.1"
DB_USER = "chatbot"
DB_PASSWORD = "1234"
DB_NAME = "chatbot"
def DatabaseConfig():
global DB_HOST, DB_USER, DB_PASSWORD, DB_NAME
정작 create_train_data를 하는 과정에서
path가 달라서 import가 안되는 상황이 벌어졌다.
1. 같은 폴더로 옮겨준다.
2. sys.path.append(모듈을 저장한 경로) 사용하기
import sys
sys.path.append("~\~\~\B")
sys.path는 파이썬 라이브러리가 설치되어 있는 경로들을 보여준다. 따라서 B의 경로를 sys.path에 추가하면 B 안에 있는 어떠한 모듈(라이브러리)들을 가져와서 사용할 수 있다.
그 이후에는 순순히 넘어가지긴 했다.
load_train_data
기존의 것을 버리고 새로운 것을 update하는 것인데
음.. 새로운 것이 많이 생기지 않았다면 비효율적인 방법이긴 했다.
굳이 다 지우고 다시 써넣는다고??
# 학습 데이터 초기화
def all_clear_train_data(db):
# 기존 학습 데이터 삭제
sql = '''
delete from chatbot_train_data
'''
with db.cursor() as cursor:
cursor.execute(sql)
# auto increment 초기화
sql = '''
ALTER TABLE chatbot_train_data AUTO_INCREMENT=1
'''
with db.cursor() as cursor:
cursor.execute(sql)
이정도로 Mysql을 다루는 것을 했고 다음은 챗봇 엔진에 대해서 알아보았다.
챗봇은 보편적으로 만들기는 정말 어렵고 어떠한 task에 집중해서 만들 수 있다.
이 책에서는 아래 5가지의 기능을 가지는 챗봇을 만든다고 한다.
1. 질문 의도 분류
-화자의 질문 의도를 파악한다. -> 의도 분류 모델을 이용해 prediction
2. 개체명 인식
-화자의 질문에서 단어 토큰별 개체명 인식 -> 단어 토큰에 맞는 개체명 예측
3. 핵심키워드 추출
-화자의 질문 의미에서 핵심이 될 만한 단어 토큰 추출 -> 형태소 분석기를 이용해서 핵심 명사나 동사 추출
4. 답변 검색
-해당 질문의 의도, 개체명, 키워드를 기반으로 학습 DB에서 검색 후 출력
5. 소켓 서버
-다양한 종류의 챗봇 클라이언트에서 요청하는 질문을 처리하기 위해 소켓 서버 프로그램 역할 구현
(챗봇 엔진 서버 프로그램)이라고 말할 수 있음
최종 구현은 이렇게 한다고 한다.
다시 말해서
챗봇에게 말을 걸면
1. 전처리를 진행함
2. 형태소 분석기를 이용 키워드 추출 후 불용어 제거
3. 의도 분석을 하고, 개체명 인식 후 결과 출력
4. 그 결괏값을 이용해 적절한 답변을 학습 DB에서 검색해서 출력
챗봇이 이러한 것을 배우기 위해서는 *의도분석과 *개체명 인식 에서 딥러닝 모델을 이용해 학습을 해야한다.
즉, 특수 목적에 맞는 task를 수행하기 위해 그 domain,도메인에 관한 지식이 많으면 좋은 성능을 보이는 챗봇이 될 것이다.
하지만 충분한 학습자료가 없다면 룰베이스(rule base) 와 딥러닝 모델을 같이 사용해서 만드는 것이 그나마 낫다.
++딥러닝이 무조건 정답은 아니란 뜻이다.
다음 글부터 위에 나와있는 순서대로 코딩을 해보자
'데이터 사이언스(Data Science) > 자연어 처리 ,NLP' 카테고리의 다른 글
자연어 처리 논문 분석 주제 - Opinion Mining and Sentiment Analysis (0) | 2021.11.06 |
---|---|
딥러닝 챗봇 만들기 - 3 (파이썬 이용하기) (0) | 2021.01.10 |
Trnasformer Network, 트랜스포머 네트워크란? (0) | 2021.01.08 |
Attention, 어텐션 메커니즘 (0) | 2021.01.08 |
자연어 처리에서의 용어 (0) | 2021.01.07 |