- 서비스 이름: 무장애 맞춤화 관광지 추천 "챗봇 서비스" - 아띠
- 프로젝트 설명: AI챗봇을 통해 용인에 있는 모든 관광지에 대한 사용자 맞춤화 정보 제공
도성현 | 이윤빈 | 박준서 | 오에린 |
---|---|---|---|
백/프론트 개발 | 백/프론트 개발 | 기획/디자인 | AI모델 학습/데이터 수집 및 전처리 |
GitHub | GitHub | GitHub | GitHub |
-
설문조사:
- 맞춤화를 위한 서비스 선택.
-
AI챗봇:
- 사용자에게 AI챗봇을 통해 궁금해하거나 찾는 관광지에 대한 정도 제공.
-
지도:
- 채팅에서 언급된 관광지를 사용자 중심으로 지도에서 표시.
-
상세페이지:
- 특정 관광지에 대한 세부 정보 제공.
- 모델 로딩 및 데이터 준비
- 용인시 열린관광과 용인관광 웹페이지를 selenium을 통해 크롤링하여 관광명소와 관련 정보 수집
- 수집한 데이터프레임에서 관광지명, 주소, 특징 등의 컬럼을 문자열로 변환하고, 이들 컬럼을 결합하여 feature라는 새로운 컬럼을 제작
- 이 feature 컬럼을 기반으로, 각 관광지에 대한 임베딩을 생성하여 hf_embeddings 컬럼에 저장
- 임베딩 기반 검색 기능
- 사용자가 입력한 쿼리(예: "휠체어 대여가 되는 관광지를 알고싶어")에 대해 임베딩을 생성
- 이 쿼리 임베딩과 hf_embeddings에 저장된 관광지 임베딩 간의 코사인 유사도를 계산하여, 가장 유사한 관광지들을 top_k 개수만큼 찾음(임의로 top_k=3으로 지정)
- ChatGPT 기반 대화 모델 설정
- msg_prompt라는 사전(dictionary)에 다양한 사용자 의도(intent)에 따른 시스템 메시지와 사용자 메시지의 템플릿을 정의함.
- 예를 들어, '추천', '설명', '검색'이라는 의도에 따라 각각 다른 메시지 템플릿을 사용할 수 있도록 설정
- 사용자 상호작용 처리 함수 (user_interact)
- 사용자의 쿼리를 분석하여 의도를 파악
- 이를 위해 ChatGPT API를 사용하여, 사용자의 입력을 분석하고 intent를 식별함
- 식별된 intent에 따라 적절한 msg_prompt를 선택하고, 최종적으로 사용자에게 반환할 메시지를 생성함
- 만약 사용자의 쿼리가 관광지 추천이나 검색에 해당하면, 유사도가 높은 관광지 정보를 제공하고, 그 정보에 대해 상세 설명을 하거나 적절한 추천 메시지를 생성하여 사용자에게 반환함
- 생성된 메시지들은 jsonl로 제작하여 추후, 관광 맞춤 챗봇을 개발하기 위한 파인튜닝 데이터셋으로 활용함
- 사용자의 의도에 따른 작업 수행
- 추천 또는 검색: 사용자의 질문에 대해 가장 유사한 관광지 정보를 추출하고, 해당 정보를 사용자에게 제공하는 메시지를 생성
- 설명: 특정 관광지에 대한 설명이 요청된 경우, 이미 계산된 유사도를 기반으로 해당 관광지의 상세 정보를 제공
- 4-1에서 수집한 데이터를 토대로 jsonl형식으로 변환 후, fine-tuning 진행
- Trained tokens: 16,449
- Epochs: 3
- Batch size: 1
- LR multiplier: 1.8
- Seed: 1024073020
- 사용자 위치 기반 시스템
- 커스터마이징한 지도