자연어 처리

자연어처리_챗봇구축_230807

J-Chris 2023. 8. 7. 21:43

개체명 인식 모델 학습

  • 챗봇 엔진에 입력된 문장의 의도를 분류한 후,

문장 내 개체명 인식을 진행한다

  • 개체명 인식을 위해 양방향 LSTM을 이용한다

 

한단계 한단계 나아가면서 데이터가 어떻게 변형되는지 확실히 알아야 한다.

  • 다중분류는 softmax 로 한다
  • One-hot encoding 값을 일반 정수로 변경 함수

 

두개 기능은 똑같다 그러나 리턴값이 다르다 

  1. Np.argmax 

argmax(a, axis=None, out=None, *, keepdims=<no value>)

=> 리턴값 : numpy 배열

 

  1. 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. 챗봇 학습툴 

 

(1) 학습 데이터

 

(2) 학습툴

=> 학습 데이터를 DB에 접근했을때 

 

(3) 챗봇의 학습 DB에서 데이터를 검색하는 과정 

  1. 챗봇 엔진 입력 처리 과정
  • 입력되는 문장을 자연어 처리하여 해당 문장의 의도, 개체명, 키워드 ..
  1. 챗봇 엔진 답변 처리 과정
  • 챗봇 엔진에서 해석한 결과를 이용해 학습 DB 내용을 검색한다.
  • 해석 결과인 의도와 개체명에 매칭되는 ..

 

  1. 답변 검색
  • 화자로부터 입력된 문장이 전처리, 의도분류, 개체명 인식 과정을 거쳐 해석된 데이터를 기반으로 적절한 답변을 학습 DB로부터 

 

(1) 데이터베이스 제어 모듈 생성

  • 단순한 수준의 SQL 구문을 이용해 룰 베이스로 답변을 검색하는 방법을 사용한다.
  • 이런 방법으로도 데이터 구조와 챗봇 엔진 설계만 잘한다면 기본적으로 괜찮은 성능을 보인다.

 

  1. 규칙 기반 
  • 학습 데이터 엑셀 파일 내용 
  • 의도 , 개체명, 질문, 답변 
  • 의도 : 질문의 의도를 나타내는 텍스트, 의도가 없는 경우 비워둔다
  • 개체명인식 : 질문에 필요한 개체명. 개체명이 없는 경우 비워둔다
  • 질문 : 질문 텍스트
  • 답변 : 답변 텍스트
  • 답변 이미지 : 답변에 들어갈 이미지 URL. 이미지 URL이 없는 경우 비워둔다.

 

  • 과적합 모델

=> 훈련할 때는 성능이 좋지만, 실제 사용할 때 성능이 안좋은 모델 

=> 과적합을 줄이는 방법으로 dropout을 사용함

 

예제 8, 챗봇 

 

과적합이 일어나는 이유

  • 데이터셋 양 부족
  • 데이터셋 (품질) 부족