자연어 처리

자연어처리_챗봇구축_23-08-08

J-Chris 2023. 8. 8. 19:18

예제10. 데이터베이스 제어 모듈, 챗봇 답변 검색 모듈 생성 및 답변 검색 테스트 2

  • 사용자 사전 File : user_dic.tsv
  • 의도 분류 데이터셋 : total_train_data.csv
  • 개체명 인식 데이터셋 : ner_train.txt
  • 학습데이터 File : train_data.xlsx
  • 개체명 인식 모델 : ner_model.h5
  • 의도 분류 모델 : intent_model.h5
  • 말뭉치 File : corpus.txt

# 양수 0123

# 음수 4321 (-4, -3, -2, -1)

st = ‘abcd’

print(st[:-3])       # a

print(st[:-1])        # abc

 

다음주 프로젝트 진행 예정 : 챗봇 성능이 더 높게끔 만들어보기  (함부로 못한다는 소리하지 말기 => 하면! 된다! )

 

  1. 챗봇 엔진 서버 개발
  • 챗봇 엔진은 다양한 플랫폼에서 언제든 접속해서 사용할 수 있도록 서버용 프로그램으로 제작한다

 

(1) 챗봇 엔진 서버 프로그램 구성

- 챗봇 엔진 서버 프로그램은 다수의 챗봇 서비스가 접속해 화자의 질의에 대한 응답(답변)을 제공할 수 있도록 구현된다.

(2) 통신 프로토콜 정의

- 프로토콜 : 서버와 클라언트 간에 통신을 하기 위해 필요한 규약

 

최근에는 서버와 클라이언트 간에 JSON 문자열 형태로 통신을 많이 한다.

챗봇 엔진 서버도 JSON 포맷을 이용해 서버 통신용 프로토콜을 구성한다.

양방향 통신으로 동작시킨다.

 

 

 

챗봇엔진

  1. 전처리 과정
  2. 의도분석
  3. 개체명 인식
  4. 답변 검색 -> (의도, 개체명, 키워드) -> 학습 DB
  5. 학습DB -> Intent, nor , answer -> 답변 출력 -> “주문해주셔서 감사합니다”

 

  1. 클라이언트 -> 서버
  • Json 형태로 데이터를 전달한다
  • => {“Query” : “자장면을 주문할게요.”, “BotType” : Kakao }

2. 서버 -> 클라이언트

  • json 형태로 데이터를 전달한다.
  • => {"Query" : "자장면을 주문할게요",  "Intent": "주문", "NER" : "[('자장면', 'B_FOOD'), ('주문', 'O')]"

 

(3) 다중 접속을 위한 TCP 소켓 서버

  1. 멀티 쓰레드
  • 동시에 여러 작업을 실행한다.
  • 여러개의 함수가 동시에 실행된다고 생각하면 된다.

 

  1. 챗봇 엔진 서버 동작 과정

  • 챗봇 엔진 서버는 챗봇 클라이언트가 연결 요청을 할 때마다, 챗봇 엔진 처리 스레드를 생성해 일련의 과정을 거쳐 질의의 답변을 클라이언트로 전송한다.
  • 챗봇 클라이언트의 요청이 동시에 들어온다면, 챗봇 엔진 처리 스레드는 클라이언트 연결 요청 수만큼 생성되어 동작한다.
  • => 동시에 생성될 수 있는 스레드 수를 지정해 서버 자원을 효율적으로 관리할 수 있도록 해야한다

 

 

예제11. 챗봇 서버 모듈과 챗봇 엔진 서버 메인 프로그램

  • 챗봇 엔진 동작 서버 환경에서 작동할 수 있도록 BotServer 클래스와 멀티 스레드 모듈을 이용한다.
  • 서버로서 동작한다.
  • Project name : chatbot
  • File Name : /chatbot/bot.py