안녕하세요 프로젝트를 정리하는 첫 번째 이야기 시작합니다!
이번에 소개드릴 프로젝트는 학부생으로 들었던 마지막 과목에서 팀원분들과 함께 진행했던 프로젝트 '대화형 전공 설계 챗봇, Talk-in'입니다. 저는 본 프로젝트에서 인공지능 모델 개발 전반을 맡았습니다.
🙄 개발 동기
코로나로 인해 더욱 빙판길이 되고 있는 취업길 때문에라도 조기에 내게 꼭 맞는 ‘전공 설계’는 대학생의 필수 그 이상입니다.
하지만 나에게 맞는 과목을 정하고 설계 하기 까지의 과정은 보시다 시피 정말 힘든 길입니다. 그리고 진로 및 전공 설계의 길잡이 '취업 지원팀'은 여러분도 아시다 시피 취켓팅이라고 불리죠 우리는 어떻게 해야 할까요?
따라서 이러한 문제를 해결 하고자 'Talk-in'을 생각하게 되었습니다. 톡인은 대화형 과목 추천 챗봇을 구현하고 일반대화도 가능하며 기타 학습 매니징까지 제공하고 있습니다.
📩 챗봇의 동작 원리
핵심기능인 '챗봇' 어떻게 동작할까요?
챗봇과의 대화는 크게 세 단계로 진행됩니다.
1) 대화가 시작되면 사용자의 발화가 인풋으로 들어오고 서버에서 사용자의 전공과 학년 정보가 함께 들어오게 됩니다. 2) 그 뒤 사용자 발화에서 전공추천을 원하는지 일반대화인지 학습된 koelectra 모델이 분류합니다.
3) 일반대화일 경우 학습된 kogpt2 모델이 재치있는 답변을 생성하고, 전공추천일 경우는 사용자의 학년과 전공에 맞는 강의리스트중 강의평을 기반으로 사용자 발화와 자카드 유사도 계산으로 적절한 과목이 추천됩니다.
📜 데이터 셋
Talk-in에는 전처리를 거친 AI-HUB의 한국어 SNS 데이터와 자체 수집한 에브리타임 대학 과목별 강의평 데이터를 기반으로 각각 모델 학습과 전공추천을 위해 3가지 데이터셋으로 나누었습니다.
✅ 의도 분류를 위한 데이터셋
먼저 의도 분류를 위해 한국어 SNS데이터를 일반대화 의도 데이터로, 강의평 데이터를 전공추천 의도 데이터로 라벨링하여 학습하였습니다. Train, Dev, Test set의 크기와 예시입니다.
✅ 일반대화 생성 학습을 위한 데이터셋
일반대화 생성 학습을 위한 데이터셋은 한국어 SNS 데이터에서 두 명이 주고받은 QA 데이터 오만 쌍으로 학습을 진행했습니다. 예시는 다음과 같습니다.
✅ 전공 추천 유사도 분석을 위한 데이터셋
전공 추천으로 의도가 분류되면, 강의평 데이터에서 사용자 조건인 전공과 학년에 맞춰 강의리스트가 추출되고, 그 중 사용자의 발화와 강의평의 자카드 유사도를 계산하여 유사도가 가장 높은 과목을 추천합니다. 자카드 유사도 계산 예시는 다음과 같습니다.
💃 성능지표
그렇다면 이제부터 정말 전공설계 과정을 단축시키고 쓸모있는 서비스 인지를 보여드리도록 하겠습니다. 성과 측정 지표는 2가지를 중심으로 진행되었습니다.
첫번째로, 의도 분류 모델의 정확도입니다.
다양한 모델로 학습해본 결과, Dev에서 가장 높은 정확도를 보인 Epoch를 기준으로 한 Dev Best와 dev best 에포크 기준 Test 모두에서 가장 높은 정확도를 보인 KoELECTRA 모델을 사용하였습니다. 일반대화와 전공추천의 데이터 성격이 명확하게 다르다 보니 높은 성능을 보이고 있었습니다.
의도분류 최종 모델로 선택된 KoELECTRA 모델에 대한 설명입니다. 일렉트라 모델을 한국어 데이터로 사전학습 시킨 모델입니다.
두번째로, 일반 대화 생성을 위한 모델의 정확성입니다.
이를 위해 열 명의 평가 위원을 선정하여 스무 개의 대화 쌍 중에 적절한 답변이라고 판단한 비율을 평균 내보았습니다. 구어체 대화의 한계로 문맥적인 요소가 잘 학습이 되지 않음을 감안하면 84.6%는 높은 성능이라고 할 수 있습니다
일반대화 학습에 사용된 KoGPT2는 다음 단어 예측을 위해 학습된 언어모델이며 문장 생성에 최적화 되어 있습니다.
이제, Talk-in의 실제 데모입니다. 장고와 안드로이드 스튜디오를 통해 서버를 구축하고 실제 어플까지 제작하였습니다.
핵심기능인 대화입니다. 각각 대화 유형별 데모 입니다. 일반대화로만 구성된 대화는 20대 대화를 학습한 만큼 실제 대학생 친구와 대화하듯 대화가 진행됩니다.마지막으로 일반대화가 전공추천이 섞인 경우입니다. 전공추천으로 분류되는 발화 같은 경우 앞서 말씀드린 프로세스를 거쳐 전공추천이 진행되고 바로 시간표 추가와 강의평 조회가 가능합니다.
💪 느낀점
결과적으로 한 학기동안 자연어 기반 프로젝트를 할 수 있어서 가장 좋았습니다. 그리고 언어의 힘을 다시한번 느끼게 되었는데, 한 번의 말을 통해 정말 복잡하던 과정이 싹-! 정리되는 이 짜릿함 ㅎㅎ
실제로 일반대화 성능도 생각 보다 좋아서 좋았습니다. 그리고 다른 팀원 분들이 실제 어플로 탄생할 수 있도록 함께 해주셔서 좋은 결과 있었던 것 같아 보람찼습니다. 조금 아쉬웠던 것은 sns 데이터의 전처리가 미흡하다보니 생성되는 말들이 조금 어눌한 부분은 있었던 것 같아 전처리의 중요성도 다시 한 번 느끼게 되었습니다.
🖥 GIT 허브
곧...올라올 예정...
댓글