자연어 처리
자연어처리_챗봇구축_230807
J-Chris
2023. 8. 7. 21:43
개체명 인식 모델 학습
- 챗봇 엔진에 입력된 문장의 의도를 분류한 후,
문장 내 개체명 인식을 진행한다
- 개체명 인식을 위해 양방향 LSTM을 이용한다
한단계 한단계 나아가면서 데이터가 어떻게 변형되는지 확실히 알아야 한다.
- 다중분류는 softmax 로 한다
- One-hot encoding 값을 일반 정수로 변경 함수
두개 기능은 똑같다 그러나 리턴값이 다르다
- Np.argmax
argmax(a, axis=None, out=None, *, keepdims=<no value>)
=> 리턴값 : numpy 배열
- tf.math.argmax
argmax_v2(inpit, axis=None, output_type=tf.int64, name=None)
=> 리턴값 : tensor flow 클래스 (tensorflow.python.framework.ops.EagerTensor)
=> numpy()를 통해서 numpy 배열로 변경해서 사용
=> 리턴값 : tensorflow 클래스로 반환됨
random_state : 똑같은 랜덤 데이터셋 을 만들때 사용됨
- 챗봇 학습툴
(1) 학습 데이터
(2) 학습툴
=> 학습 데이터를 DB에 접근했을때
(3) 챗봇의 학습 DB에서 데이터를 검색하는 과정
- 챗봇 엔진 입력 처리 과정
- 입력되는 문장을 자연어 처리하여 해당 문장의 의도, 개체명, 키워드 ..
- 챗봇 엔진 답변 처리 과정
- 챗봇 엔진에서 해석한 결과를 이용해 학습 DB 내용을 검색한다.
- 해석 결과인 의도와 개체명에 매칭되는 ..
- 답변 검색
- 화자로부터 입력된 문장이 전처리, 의도분류, 개체명 인식 과정을 거쳐 해석된 데이터를 기반으로 적절한 답변을 학습 DB로부터
(1) 데이터베이스 제어 모듈 생성
- 단순한 수준의 SQL 구문을 이용해 룰 베이스로 답변을 검색하는 방법을 사용한다.
- 이런 방법으로도 데이터 구조와 챗봇 엔진 설계만 잘한다면 기본적으로 괜찮은 성능을 보인다.
- 규칙 기반
- 학습 데이터 엑셀 파일 내용
- 의도 , 개체명, 질문, 답변
- 의도 : 질문의 의도를 나타내는 텍스트, 의도가 없는 경우 비워둔다
- 개체명인식 : 질문에 필요한 개체명. 개체명이 없는 경우 비워둔다
- 질문 : 질문 텍스트
- 답변 : 답변 텍스트
- 답변 이미지 : 답변에 들어갈 이미지 URL. 이미지 URL이 없는 경우 비워둔다.
- 과적합 모델
=> 훈련할 때는 성능이 좋지만, 실제 사용할 때 성능이 안좋은 모델
=> 과적합을 줄이는 방법으로 dropout을 사용함
예제 8, 챗봇
과적합이 일어나는 이유
- 데이터셋 양 부족
- 데이터셋 질 (품질) 부족