Skip to content

AI ChatBot Recommendation System

WGNW_gangdodan edited this page May 19, 2023 · 4 revisions

음성 인식 챗봇 시스템

이 문서는 음성 인식을 사용한 챗봇 시스템에 대한 구현 내용을 기술합니다.

데이터셋, 문장 임베딩 모델, 명령 의도분류 모델, 엔티티 구별 모델, 모델 설정 및 데이터셋 처리 관련 로직, 학습시 모델 설정 내용에 대한 설명이 포함됩니다.

데이터셋

직접 구성한 레시피 조작 명령어 데이터셋을 통해 모델학습을 진행.

  • 사용자의 명령어 문장에 대해 총 4가지 명령어 class 및 해당 명령어내 엔티티를 구별 가능하게 학습하였음.

데이터셋 세부 형태 :

  • 명령어 의도분류 데이터셋 형태 :

    question label
    다음 보여줘 NEXT
    다음 NEXT
    2페이지 넘겨줘 NEXT
    다음내용 알려줘 NEXT
    question label
    다시 한번 들려줘 REPEAT
    한번만 더 들려줘 REPEAT
    한번 더 말해줘 REPEAT
    다시 한번 말해줘 REPEAT
  • 명령어 엔티티(NER) 데이터셋 형태 :

    question label
    다음 보여줘 0 0
    다음 0
    2페이지 넘겨줘 S-Pcount 0
    다음내용 알려줘 0 0
    다음 넘겨줘 0 0
    다음 2장 넘겨줘 0 S-Pcount 0
    다음 3장 넘겨줘 0 S-Pcount 0
    다음 4장 넘겨줘 0 S-Pcount 0
    question label
    현재 레시피 다시 말해줘 S-NOW 0 0 0
    지금 레시피 다시 말해줘 S-NOW 0 0 0
    전체 레시피 다시 말해줘 S-TOTAL 0 0 0
    레시피 처음부터 다시 0 S-TOTAL 0
    처음부터 다시 말해줘 S-TOTAL 0 0
    처음부터 다시 들려줘 S-TOTAL 0 0
    처음부터 다시 S-TOTAL 0
    시작부터 다시 들려줘 S-TOTAL 0 0

문장 임베딩 모델 (gensim/FastText)

FastText 임베딩 모델을 사용하여 처리하며,

전체 데이터셋 문장을 FastText 방식을 통해 임베딩하여 처리합니다.

  • 인텐트 구별모델의 경우 SKTBrain/KoBERT 사용을 위해 별도의 문장 임베딩 모델을 사용함.

Untitled

명령어 의도분류 모델 (SKTBrain/KoBERT)

SKTBrain/KoBERT : https://github.com/SKTBrain/KoBERT#naver-sentiment-analysis

Untitled

SKTBrain에서 제공하는 KoBERT 모델에 자체 제작한 명령어 의도분류 데이터셋을 학습하여 사용자 명령어 의도분류가 가능한 모델을 학습 및 사용하였습니다.

  • 모델 결과 예시 :

Untitled

엔티티(NER) 구별 모델 (KoChat/LSTM)

KoChat/LSTM : https://github.com/hyunwoongko/kochat/blob/master/kochat/model/entity/lstm.py

Untitled

KoChat 프로젝트의 LSTM 모델에 자체 제작한 명령어 엔티티(NER) 데이터셋을 학습하여 사용자의 명령어 문장별로 NER(개체명 인식) 태깅을 분류가능한 LSTM 모델을 학습 및 사용하였습니다.

학습시 모델 설정 내용.

임베딩, 인텐트 학습, 엔티티 학습 등에 사용한 학습 횟수 및 기타 설정은 kochat_config.py 파일 내에 기록되어 있습니다.

Untitled

모델 설정 및 데이터셋 처리 관련 로직.

KoChat : https://github.com/hyunwoongko/kochat

KoChat 프로젝트에서 사용하는 데이터셋 처리 방식 및 학습모델 세부 설정 방식을 차용하여 저희 프로젝트에 적용하였습니다.

Gachon-USER

Front End(Android)
Back End
Data Base
API

Clone this wiki locally