Chatgpt를 활용한 영어 회화 웹 애플리케이션
최근 돌풍을 일으키고 있는 chatgpt는 여러 분야에서 활용될 것으로 사람들의 기대를 모으고 있고 이미 많이 활용되고 있다. 그 중에서도 영어 회화 교육 분야에서 많이 활용되고 있다. 유튜브에 chatgpt를 검색하기만 해도 수십 개의 영상에서 chatgpt를 통해 영어 공부하는 방법을 소개하고 있다. 이러한 이유는 영어를 통한 chatgpt와의 대화가 실제 사람과 대화하는 것과 같이 자연스럽고 정확성도 높기 때문이다. 여기서 주목할 점은 chatgpt 라는 서비스 자체는 언어 학습을 위한 것이 아님에도 많은 사람들은 언어를 학습하기 위해 활용한다. 해당 프로젝트는 기존에 강력한 AI는 최대한으로 활용하되 발전된 UI/UX와 데이터분석을 통해 남녀노소를 불문하고 사용자에게 쉽게 chatgpt를 활용한 영어 회화 학습 환경을 제공할 수 있을 것이다.
gpt-3.5를 이용하고 내부적인 prompt 조정을 통해 사용자에게 자연스러운 대화 환경 을 제공한다. 채팅은 두 가지 버전으로 제공한다. stt기술을 이용하여 말로써 대화할 수 있는 환경과 마이크가 구비되지 않은 사용자를 위한 텍스트를 통해 채팅할 수 있는 환경이 있다.
사용자의 답변에 대한 실시간 문법 교정을 통해 사용자가 자연스럽게 문법을 학습한다. 사용자가 대화하는 창 옆에 띄워주므로 효율적인 학습을 할 수 있다.
사용자가 채팅한 데이터를 바탕으로 각종 분석 결과를 제공한다.
일반 사용자 뿐 만 아니라 회화 학습 환경의 장벽이 있는 청각장애인들을 위한 배리어프리를 지향하는 UI/UX를 제공하는 것이 목표이다.
기존에 편리하고 높은 정확성을 가진 chatgpt의 인공지능은 그대로 활용하되 더욱 사용성을 높인 ui/ux를 통해 지속적인 학습과 흥미를 유도한다.
Spring JPA와 SQLAlchemy를 사용하여 MySQL 데이터베이스와 서버를 연결했다. user 테이블은 각 사용자의 정보를 담은 테이블로 email, name, 암호화된 password, 점수들 그리고 count로 필드가 구성되어 있다. total_score 테이블은 전체 사용자 통계를 위한 테이블로 모든 사용자들의 점수가 누적된 점수들과 count 필드로 구성되어 있다. conut는 평균을 내기 위해 존재하는 필드로 채팅이 이루어질때마다 하나씩 증가하여 사용자의 채팅횟수를 나타내는 역할을 한다.
해당 부분에서 로그인과 마이페이지에 저장하는 각종 데이터를 다룬다. jwt토큰을 통해 사용자를 식별한다. Spring을 사용한다.
Gpt-3.5 api를 호출하여, 채팅 메시지, 문법 교정 데이터를 호출하고 여러 엔드 포인트를 각종 분석을 제공한다. 또한 머신러닝 모델을 제어하여 주제 추천을 프론트로 전송한다. Flask를 사용한다. 이유는 쉬운 엔드포인트 추가를 통해 빠른 기능 추가가 가능하고 분석 부분에서 python을 이용하기 때문이다.
채팅 자체가 조금 느리기 때문에 빠른 리렌더링을 위해 react를 채택하였다. 또한 스테이트 관리를 통한 각종 동작을 관리하기 용이하기 때문에 react를 채택하였다.
메인화면에서는 소개와 회원가입, 로그인을 할 수 있고 study go 를 누르게 되면 채팅을 통한 학습을 진행 할 수 있다.
Study go를 누르면 주제 선택화면으로 넘어가고 주제선택 화면에서는 주제를 선택하면 해당 주제가 ai에게 전달되어 해당 주제로 대화할 수 있다.
채팅의 경우 두 가지 버전이 존재한다. 하나는 말을 통해 채팅할 수 있는 버전과 하나는 마이크 사용이 힘든 환경에 있는 사용자를 위한 텍스트를 통해 채팅 할 수 있는 버전이다.
말을 통해 채팅할 수 있는 버전인 speak go의 경우 stt기술을 사용하여 사용자의 음성을 실시간으로 텍스트로 전환하여 인공지능에게 전달하고 대답을 받는다. 또한 해당 채팅에서 청각장애인 또한 이용할 수 있도록 실시간 웹캠 스트리밍도 지원한다. 이를 통해 청각장애인들은 자신의 입모양을 보고 입력되는 채팅을 점검하며 회화를 연습할 수 있다.
또한 채팅을 누르게 되면 해당 채팅에 대한 문법 교정과 자연스러운 표현으로 치환된 결과가 반환된다. 우측 하단 score board에는 실시간으로 각종 부문에 대한 점수를 실시간으로 인공지능이 채점하여 실력을 점검해 볼 수 있다.
분석화면에는 사용자의 채팅을 바탕으로 분석을 진행한다. 먼저 가장 많이 쓴 단어를 체크해 볼 수 있도록 워드클라우드를 뜨워준다. 하단에는 사용자의 채팅을 머신러닝을 통해 분석하여 가장 사용자가 선호할 것 같은 주제를 3개 추천해주고 해당 주제를 누르면 바로 해당 주제로 대화를 이어 나갈 수 있다. 주제 추천은 각 분야별로 신경망 모델을 통해 학습을 시켰으며 해당 주제에 해당하는 단어들을 토큰화 시킨 데이터를 통해 학습한 결과를 보여준다.
마이페이지에서는 해당 사용자의 정보 뿐만 아니라 성적에 관련한 정보를 보여준다. 해당 사용자의 점수와 전체 사용자의 점수를 비교하여 보여주어 사용자는 자신의 실력을 점검해 볼 수 있다. DBMS에서 암호화된 전체 사용자의 성적 정보와 현재 로그인한 사용자의 정보를 가져와 분석후에 렌더링한다.
frontend:https://github.com/Project-AIng/AIng-frontend
backend:https://github.com/Project-AIng/AIng-spring-server
analyze/API:https://github.com/Project-AIng/AIng-flask-server


