Skip to content

DSWU-Unicorn/MiniProject-DSWU-Chatbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniProject-DSWU-Chatbot

Mini Project for 2022 Capstone Design 1

덕성여대 강의실 정보 알리미 챗봇 “공강이”


image

스크린샷 2022-10-14 오후 10 09 59

서비스 요약

서비스요약

서비스 개요

현재 덕성여자대학교에서 제공하는 수업 시간표 정보만으로는 학생들이 빈 강의실 정보를 찾기 어렵다. 이러한 어려움으로 인해 수업중인 강의실에 들어가 다른 수업을 방해하는 상황도 발생한다. 이에 재학생들의 편의를 증진시키고 학습 분위기를 장려하기 위해 학생들에게 강의실 정보를 제공하는 "공강이" 챗봇을 기획, 구현하게 되었다. "공강이"는 자연어 처리를 기반으로 사용자의 요청에 부합하는 빈 강의실 정보를 제공한다. 또한, 오탈자 수정 기능을 가지고 있어 약간의 오탈자가 발생하더라도 문장 교정을 통해 사용자의 의도를 올바르게 인식할 수 있도록 구현하였다.

서비스 세부 흐름도

전체서비스

개발 환경

스크린샷 2022-10-14 오후 9 50 34

프로젝트 개발

1. 오탈자 수정, 문장 전처리


사용자로부터 입력받은 문장에는 학습과 추론에 필요하지 않은 단어들도 포함되어 있으며, 오탈자가 섞여 있을 수도 있다. 이는 학습, 추론의 효율, 정확도를 낮출 수 있는 요인이며 이후 챗봇의 성능에도 영향을 끼칠 수 있다.

  • hanspell 라이브러리 사용해 오탈자 제거
  • 오탈자 제거 후 Komoran 형태소 분석기를 사용하여 토크나이징 작업을 진행
  • 문장 해석에 필요 없는 불용어들을 제거

(Komoran은 사용자 사전 등록이 간편하며 자소가 분리된 문장이나 오탈자에 강한 형태소 라이브러리로, 본 프로젝트에 적합하다고 판단되어 사용)

2. 단어사전 구축, 시퀸스 생성


  • 의도 분류 및 개체명 인식 모델의 학습을 위해서는 단어 사전 구축이 선행되어야 함
  • 네이버 영화 리뷰 데이터를 기반으로 만들어진 말뭉치 데이터 셋과 동일한 형식의 덕성여대 강의실 정보 데이터 셋을 구축하여 “공강이” 만의 말뭉치 사전을 만듦
  • 시퀸스 벡터로 변환하여 문장을 분석할 때 사용할 수 있도록 가공

3. 의도 분석


  • 챗봇 엔진에 화자의 질의가 입력되었을 때, 해당 질의의 의도를 분석하기 위해 CNN 모델을 활용

  • 본 프로젝트에서는 문장의 의도를 인사, 강의실, 기타 세가지로 분류

    (CNN은 본래 이미지 처리를 위해 만들어진 모델이지만, 필터를 움직이며 이미지의 지역적인 정보를 추출하고 보존할 수 있기 때문에 자연어 처리에도 유용하게 쓰일 수 있다. 자연어 처리에서는 단어의 등장순서와 문맥의 순서가 중요한데, CNN은 이 정보를 보존할 수 있어 문장을 의도 클래스별로 분류하는 데 좋은 성능을 낼 수 있다. 이러한 이유로 CNN 모델을 사용하여 의도 분석을 구현)

  • CNN 모델 학습 시 오픈 데이터 셋인 한국어 챗봇 데이터와 강의실 데이터 셋을 동일한 형식으로 구축 및 추가하여 문장 학습을 진행

의도 분석 모델의 정확도와 의도 분석 모델의 손실 함수를 나타낸 그래프

스크린샷 2022-10-14 오후 2 16 56

4. 개체명 인식


  • 챗봇 엔진에 입력된 문장의 형태소 별 개체명 인식을 위해 양방향 LSTM 모델의 학습을 진행
  • 양방향 LSTM은 시퀀스 길이가 길어져도 정보의 손실 없이 자연어 처리가 가능
  • 양방향에서 문장을 분석하기에 앞 뒤 단어의 정보를 인식하여 자연어 처리의 인식률을 높일 수 있다.
  • 모델 학습을 위해 오픈 데이터 셋인 KoreanNERCorpus을 활용
  • 이와 동일한 형태의 강의실 정보가 포함된 데이터 셋을 구축 및 추가하여 학습을 진행

개체명 인식 모델의 정확도와 개체명 인식 모델의 손실 함수를 나타낸 그래프

스크린샷 2022-10-14 오후 2 19 57

5. 답변 출력


  • 문장의 의도개체명 인식 정보를 바탕으로 적절한 답변을 출력할 수 있는 로직을 구현
  • 해당 로직은 문장의 의도와 개체명의 조합에 따른 5가지 조합을 만들고, 기본 인사말이 출력 된 뒤 해당 문장이 강의실 정보를 요구하는 문장임이 판단된 경우 데이터베이스에서 적합한 정보를 찾아 가공한 뒤 사용자에게 정보를 전달
  • 답변 출력에 사용한 데이터들은 Mongo DB에 저장
  • 2022-2학기 덕성여자대학교 수강편람에서 제공되는 시간표 정보를 가공하여 생성한 강의실별 수업 정보 데이터를 사용하여 답변을 출력

답변 출력 로직

스크린샷 2022-10-14 오후 2 27 56

6. 텔레그램 챗봇 연동


  • 텔레그램 챗봇 api를 활용하여 “공강이” 모델을 텔레그램 챗봇으로 완성
  • 학습된 의도 파악 모델과 개체명 인식 모델의 h5 파일을 텔레그램 챗봇에 올려 딥러닝 기술을 적용할 수 있도록 구성
  • 입력된 문장의 오탈자를 제거, 변경한 뒤 학습된 모델을 사용하여 문장의 의도와 개체명을 추론
  • 추론한 결과를 바탕으로 기본 답변을 출력한 뒤 강의실 정보를 제공해야 하는 질문으로 판단되었을 경우 강의실 별 수업 시간표 데이터를 사용하여 답변 출력

프로젝트 결과물

캡스톤_챗봇_결과물

참고문헌

2022년 9월 20일 ~ 2021년 10월 14일 end.

About

Mini Project for 22-Capstone Design

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •