물어봇
- 물어봇은 상품에 대한 종합적인 정보를 파악하기 위해 많은 시간을 할애하는 사람들을 위해 챗봇 인터페이스를 사용하여 상품 정보, 추천, 리뷰의 속성과 감성별로 분류한 요약본을 제공합니다.
- 저는 팀장의 역할을 수행하며 UI 설계와 구현, 자연어 처리 모듈 설계와 구현, 프로토타입 개발을 진행하였습니다.
- 물어봇 프로젝트를 통해 한국지식정보기술학회의 춘계학술대회에서 융복합우수논문상을 받았고, 한성대학교 공학경진대회에서 동상을 받을 수 있었습니다.
자연어 처리 모듈이 뭔가요?
- 자연어 처리 모듈에는 요약 모듈, 추천 모듈, 상품 정보 모듈이 존재합니다.
- 저는 이 모듈 중 추천 모듈을 담당하여 개발하였습니다.
추천 모듈 어떻게 개발했나요?
- 사전에 상품에 대한 리뷰를 문장 벡터로 변환하여 Elastic Search의 Vector Field에 저장합니다.
- 사용자가 요청한 추천 내용을 문장 벡터로 변환한 후 리뷰 벡터와의 코사인 유사도를 구합니다.
- 0.8이라는 임계치 이상의 유사도를 가진 리뷰가 많이 존재하는 순서대로 최대 6가지의 상품을 추천합니다.
0.8이라는 임계치는 왜 설정했나요?
- 프로토타입 개발 시 임계치에 대한 실험을 진행하였습니다.
- 0.8 이라는 임계치로 설정하여 색인 시 추천 상품을 고르는 시간과 정확도 사이에서 가장 만족할만한 결과를 보였기 때문입니다.
문장벡터가 뭔가요?
- 문장 벡터는 다른 말로 임베딩 벡터라고 합니다.
- 사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자 형태로 바꾼 것이 문장 벡터 입니다.
- 물어봇 프로젝트에서는 BERT라는 자연어 처리 모델에 문장을 넣고 벡터 값을 뽑습니다.
- BERT를 통해 문장 벡터 값을 추출하게 되면 문장의 문맥을 고려하여 벡터 값을 생성할 수 있습니다.
- BERT를 통해 생성한 문장 벡터는 단어의 유사한 의미에 따라 유사한 값을 띄게 되므로 유사한 단어가 나오면 추천하게 되는 물어봇의 추천 모듈에서 적합한 성능을 가지게 됩니다.
BERT가 뭔가요?
- 자연어를 이해하기 위한 양방향 학습 모델입니다.
- BERT는 문장의 의미를 벡터로 잘 표현하여 언어 모델 자체로 성능이 뛰어납니다.
- BERT는 빈칸 맞추기 문제인 MLM과 두 문장 사이의 순서를 예측하는 문제인 NSP를 통해 사전 학습을 진행합니다..
- BERT는 의료, 과학, 금융과 같은 전문적인 분야에서는 성능이 떨어지지만 일반적인 대화 상황에서 발생하는 자연어의 경우 잘 작동합니다.
- 물어봇의 경우 평소 사람들이 사용하는 단어들로 구성된 리뷰를 사용하기에 문장의 의미를 뽑기 매우 적합했습니다.
코사인 유사도가 뭔가요?
- 두 벡터가 얼마나 유사한지를 측정하는 방법입니다.
- 2차원 공간상의 두 벡터가 존재할 때 이 벡터들 사이의 각도에 대한 코사인 값을 계산합니다.
- 값이 1이면 각도가 0이므로 두 벡터가 동일함을 나타냅니다. 하지만 값이 -1이면 두 벡터가 완전히 반대임을 나타냅니다.
- 자연어 처리에서 문장 벡터간의 유사성을 계산하여 의미가 비슷한 문장을 찾을 수 있습니다.
- 따라서 물어봇에서는 리뷰와 질문 문장간의 코사인 유사도를 계산하여 높은 유사도 값을 가지는 리뷰가 많은 상품을 추천하게 됩니다.
UI는 무엇으로 개발했나요?
- React.js를 통해 UI를 개발하였습니다.
- 프런트에서 서버로의 정보를 전달하거나 받을 때는 axios를 사용했습니다.
axios가 뭔가요?
- 브라우저를 위한 Promise API를 활용하는 비동기 통신 라이브러리 입니다.
비동기 통신이 뭔가요?
- 비동기 통신은 웹페이지를 새로고침하지 않고 데이터를 불러오는 방식입니다. 서버에 데이터를 요청한 후 멈춰있는 것이 아닌 그 프로그램은 계속 돌아간다는 의미를 가지고 있습니다.
Promise가 뭔가요?
- 프로미스는 어떤 작업에 관한 상태 정보를 가지고 있는 객체입니다.
- 프로미스 객체의 상태에 따라 현재 작업중인지, 성공적으로 완료되었는지, 작업이 실패하였는지 알 수 있습니다.
- 프로미스를 사용하면 비동기 작업 후 호출되는 콜백 함수를 대체할 수 있고, 비동기 작업의 흐름을 쉽게 제어할 수 있다.
물어봇 Github 저장소
'잡다한이야기' 카테고리의 다른 글
[SLAM] ORB_SLAM3 With Realsense D435i (0) | 2024.01.15 |
---|---|
[SLAM]ORB SLAM3 설치하기 (0) | 2024.01.15 |
[Mac] Window 11 가상환경 설치 (0) | 2023.10.07 |