"에브리버디"의 두 판 사이의 차이
(→완료작품의 평가) |
(→프로토타입 사진 혹은 작동 장면) |
||
(같은 사용자의 중간 판 7개는 보이지 않습니다) | |||
173번째 줄: | 173번째 줄: | ||
1. 사용자는 프로필 페이지에 접속합니다. | 1. 사용자는 프로필 페이지에 접속합니다. | ||
2. 이름, 성별, 학번 등의 정보를 조회할 수 있습니다. | 2. 이름, 성별, 학번 등의 정보를 조회할 수 있습니다. | ||
− | 3. | + | 3. 비밀번호는 수정이 가능합니다. |
• 관리자 페이지 | • 관리자 페이지 | ||
186번째 줄: | 186번째 줄: | ||
===이론적 계산 및 시뮬레이션=== | ===이론적 계산 및 시뮬레이션=== | ||
− | + | ◇ 매칭 결과 계산 | |
+ | |||
+ | [[파일:이론2.png]] | ||
+ | [[파일:이론1.png]] | ||
+ | [[파일:이론3.png]] | ||
+ | |||
+ | |||
+ | 해당 선호도 순위에 따라 1.6~1.0의 가중치 또는 1.5~1.0의 가중치를 일치하는 것의 개수만큼 더하여 계산한다. 추가로, 언어의 선호도가 모국어와 같은 경우, 선호도 점수에서 0.05 가중치를 더하여 계산한다. 동점자가 있을 경우 먼저 정보를 입력한 사람이 우선순위를 가진다. 서울메이트가 본 버디들의 선호도 순위와 버디가 본 서울메이트의 선호도 순위는 다음과 같고, 버디 입장에서 seoulmate1의 선호가 더 많아 seoulmate1이 더 많은 버디를 가진다. 결론적으로, seoulmate1과 buddy3, buddy5, seoulmate2와 buddy1, buddy2, buddy4 이 매칭된 결과를 확인할 수 있다. | ||
===상세설계 내용=== | ===상세설계 내용=== | ||
− | + | '''◇ 아키텍처도''' | |
+ | [[파일:아키텍처도.png]] | ||
+ | |||
+ | - 웹 서버 | ||
+ | 매칭 서비스가 제공되고 사용할 수 있는 환경이다. | ||
+ | React 프레임워크 개발 환경에서 구현된다. | ||
+ | |||
+ | - 웹 어플리케이션 서버 및 DB 서버 | ||
+ | 서울메이트-버디 매칭 서비스와 채팅 서비스에 사용되는 데이터베이스 접근 및 처리 연산을 제공하며, 클라이언트와 React 서버 어플리케이션 간의 통신을 담당한다. | ||
+ | Spring Boot 어플리케이션 개발 환경에서 작동된다. | ||
+ | MySQL 관계형 데이터베이스를 사용한다. 본 프로젝트의 DBMS는 AWS RDS 환경에서 작동된다. | ||
+ | 실시간 채팅 웹소켓을 관리하는 STOMP | ||
+ | |||
+ | - 서버 배포 | ||
+ | AWS EC2 서버 인스턴스를 사용하여 어플리케이션을 호스팅한다. | ||
+ | Docker를 사용하여 컨테이너 이미지를 생성 후, 패키징된 어플리케이션을 배포한다. | ||
+ | Git, Github를 통해 소스코드 및 형상 관리한다. | ||
+ | |||
+ | '''◇ 클래스도''' | ||
+ | |||
+ | 가. 전체 클래스도 | ||
+ | |||
+ | [[파일:전체클래스도.png]] | ||
+ | [[파일:클래스테이블.png]] | ||
+ | |||
+ | 다. 세부 분류 클래스도 | ||
+ | |||
+ | ◇ 서울메이트 클래스도 | ||
+ | [[파일:서울메이트클래스도.png]] | ||
+ | |||
+ | ◇ 버디 클래스도 | ||
+ | [[파일:버디클래스도.png]] | ||
+ | |||
+ | ◇ 매칭 클래스도 | ||
+ | [[파일:매칭클래스도.png]] | ||
==결과 및 평가== | ==결과 및 평가== | ||
===완료 작품의 소개=== | ===완료 작품의 소개=== | ||
====프로토타입 사진 혹은 작동 장면==== | ====프로토타입 사진 혹은 작동 장면==== | ||
+ | ◇ 소개 사진 | ||
+ | [[파일:소개사진최종.png]] | ||
◇ 메인화면, 로그인, 회원가입 화면 (순서대로) | ◇ 메인화면, 로그인, 회원가입 화면 (순서대로) |
2024년 6월 18일 (화) 20:51 기준 최신판
프로젝트 개요
기술개발 과제
국문 : 인증부터 매칭까지: OCR API와 선호도 기반 알고리즘을 활용한 교환학생 플랫폼, 에브리버디
영문 : Exchange Student Matching Service
과제 팀명
에브리버디
지도교수
이동희 교수님
개발기간
2024년 3월 ~ 2024년 6월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 20209200** 김*진(팀장)
서울시립대학교 컴퓨터과학부 20199200** 박*선
서울시립대학교 컴퓨터과학부 20209200** 이*빈
서울시립대학교 컴퓨터과학부 20209200** 이*연
서론
개발 과제의 개요
개발 과제 요약
◇ 서울메이트와 버디간 1:N 선호도 기반 매칭 알고리즘을 사용해 매칭 서비스 개발 ◇ OCR 기술을 이용한 서울시립대학교 학생 인증 ◇ 서울메이트들과 버디간 원활한 소통 서비스 구현 ◇ 개발한 서비스를 토대로 타 대학의 교환학생 교류 프로그램까지 확장
개발 과제의 배경
◇ 서울메이트와 버디(교환학생)들 간의 매칭 시스템 부재 ◇ 매 학기 반복되는 번거로운 매칭 절차 ◇ 개강 전 매칭이 완료되어 학교 생활에 대한 도움을 받을 수 있음 ◇ 버디와 서울메이트들간의 원활한 소통이 이루어질 수 있음
개발 과제의 목표 및 내용
◇ 매칭 알고리즘을 이용한 서울 메이트와 버디 간의 자동 매칭 시스템 구현 ◇ OCR 기술을 이용한 학생 인증 시스템 구현 ◇ 웹소켓을 활용한 실시간 채팅 서비스 구현
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 전 세계적인 기술현황
◇ 협업 필터링(Collaborative Filtering) SNS나 데이팅 앱에서 사용되는 매칭 시스템의 기술이다. 사용자들이 아이템에 대해 내린 평가나 행동 패턴을 기반으로 유사한 취향을 가진 사용자들끼리 아이템을 추천하는 기술이다. 추천 시스템 중에서 현재까지 가장 우수한 성능을 나타낸다고 알려진 기법이다. 사용자와 아이템 간의 상호 작용 데이터를 분석하여 사용자들 간의 유사성을 파악하고, 이를 기반으로 아이템을 추천한다. 협업 필터링은 사용자 기반 협업 필터링(User-based Collaboration Filtering)과 아이템 기반 협업 필터링(Item-based Collabrative Filtering)으로 구분된다. 사용자 기반은 비슷한 취향을 가진 사용자들끼리 유사성을 계산하여 추천을 수행한다. 유사성은 주로 코사인 유사도(cosine similarity)나 피어슨 상관계수(Pearson correlation coefficient)등을 사용하여 측정된다. 아이템 기반은 사용자가 평가한 아이템들 간의 유사성을 계산하여 추천을 수행한다. 유사성은 주로 아이템간의 유클리디안 거리(Euclidean distance)나 코사인 유사도 등을 사용하여 측정된다. ◇ 광학 문자 인식(Optical Character Recognition) 이미지나 문서의 텍스트를 컴퓨터가 이해할 수 있는 텍스트로 변환하는 기술이다. 이미지 획득, 전처리, 텍스트 추출, 문자 분할, 문자 인식, 텍스트 출력과 같은 단계로 이루어진다. OCR 기술은 문서 스캐닝, 자동화, 데이터 입력, 번역, 음성으로 텍스트로 변환 등 다양한 분야에서 사용된다. 특히, 디지털화된 문서나 이미지에서 텍스트를 추출하여 정보를 검색하거나 가공하는 데 널리 사용된다. ◇ 웹 소켓(WebSockets) 실시간 양방향 통신을 위한 인터넷 프로토콜이다. 클라이언트와 서버 간에 지속적인 연결을 설정하고 데이터를 양방향으로 전송할 수 있도록 해준다. 이를 통해 웹 애플리케이션에서 실시간 채팅, 온라인 게임등 다양한 실시간 기능을 구현할 수 있다. 주요 특징과 동작원리로는 실시간 통신, 편리한 API, 프레임 기반 통신, 이벤트 기반, 크로스 플랫폼 지원 등이 있다.
- 특허조사 및 특허 전략 분석
- 특허 조사 ◇ 운동공간 및 사용자와 트레이너 매칭 시스템 및 방법(출원번호: 10-2022-0118926) [4] 해당 특허는 실시 예에 따른 운동공간 및 사용자와 트레이너 매칭 시스템 및 방법으로서 사용자 위치, 희망운동, 가격, 운동시간, 운동경력, 목적, 식습관 등을 포함하는 조건에 따라 사용자에게 적합한 운동 공간과 트레이너를 선별하고 최적화된 트레이너와 사용자를 매칭한다. ◇ 본인 인증 시스템(출원번호: 10-2021-0078565) [5] 해당 특허는 사용자에게 특정 물품을 제공 또는 판매하는 물품 판매 기기에 구비되는 본인 인증 시스템으로, 두 개의 카메라로 각각 얼굴 및 신분증을 촬영하고 실시간으로 신분증의 얼굴과 실제 얼굴을 비교하며 신분증 등의 정보는 OCR로 취득하여 본인진위여부 및 성인여부를 판단하도록 한다. ◇ 선호도 가중치 학습기법을 이용한 굿즈 추천 제공 장치(출원번호: 10-2021-0024869) [6] 본 특허는 실시 예에 따른 선호도 가중치 학습기법을 이용한 굿즈 추천 제공 장치에 있어서, 사용자 단말에서 전송되는 사용자정보를 등록하는 등록부; 상기 사용자 단말에서 전송되는 굿즈 기대정보를 입력하는 입력부 플랫폼 채널로부터 수집되는 팬덤 정보에 기반하여 굿즈 선호도 정보를 분석하고, 상기 굿즈 선호도 정보에 기반하여 사전 결정된 선호도 측정 지표에 대응되는 핵심 팬덤 정보에 가중치를 부여한 값에 따라 추천 굿즈의 노출 순위를 결정한다.
- 특허 전략 분석 ◇ 선호도 가중치 학습기법을 이용한 굿즈 추천 제공 장치 특허를 분석한 결과, 본 개발 기술에서는 가중치 값들에 대한 내림차순 순위와 1:N관계로 추천될 수 있도록 잘 설계해야 한다. ◇ 본인 인증 시스템 특허를 분석한 결과, 효과적인 학생인증이 이루어지기 위해서는 학생증 사진의 글씨를 추출해 DB와 비교하여 인증이 가능하게끔 구현해야 한다. ◇ 운동공간 및 사용자와 트레이너 매칭 시스템 및 방법 특허를 분석한 결과, 본 개발 기술에서는 개일-섀플리 알고리즘을 적용할 것이기 때문에 특허는 사용자의 선호도만 반영했지만, 본 시스템에서는 교환학생과 서울메이트의 선호도를 상호반영할 수 있도록 제안해야 한다.
- 기술 로드맵
◇ 웹 서비스 (Web Service) ◇ 게일-섀플리 알고리즘 (Gale-Shapley Algorithm) ◇ 광학 문자 인식 (Optical Character Recognition) ◇ 웹 소켓 (WebSockets)
시장상황에 대한 분석
- 경쟁제품 조사 비교
- 마케팅 전략 제시
◇ 프로젝트의 강점, 단점, 기회, 위협을 식별하기 위해 사용하는 기법인 SWOT 분석을 활용하여 마케팅 전략을 제안한다. ◇ STRENGTHS 선호도 가중치와 게일-셰플리 알고리즘을 활용한 매칭 알고리즘을 통해 재학생(서울메이트)과 외국인유학생(교환학생) 전체의 만족도를 충족시키는 최적의 매칭 결과를 제공받을 수 있다. 학생 인증을 통해 서울시립대 재학생들과의 안전한 서비스를 제공받을 수 있다. OCR 인식 기술을 통해, 정보 입력 절차를 최소화하여 학생 인증 절차를 진행할 수 있다. 매칭된 사용자와 실시간으로 채팅하며 상호작용할 수 있다. ◇ WEAKNESSES 선호도 가중치 결과 값이 일치하는 중복 사용자의 우선순위는 단순히 가입한 시간으로 배정된다. OCR 인식 기술이 네이티브 앱에서 카메라로 구동되는 것이 아니라, 사진 업로드를 통해 진행되는 웹앱 형식으로 고객들은 UX적 불편함을 느낄 수 있다. ◇ OPPORTUNITIES 서울시립대 재학생인 서울메이트가 현재 겪고 있는 문제를 해결하기 위한 서비스이기에 경쟁 상대가 없는 시장이다. 외국인과의 소통 기회가 적은 교내에서 활발히 소통하는 환경이 조성될 수 있으며, 재학생들은 해외 문화를 경험하고, 외국인 유학생들은 한국 문화를 직접적으로 체험하도록 돕는 소통의 장을 만들 수 있다. 서울메이트와 버디 간의 매칭뿐만 아니라, 외국인 유학생과 소통할 수 있는 재학생들을 위한 매칭 추천 앱으로 확장 가능하다. 경쟁 상대가 없는 시장이기에 서울시립대뿐만 아니라 타 대학교의 재학생-외국인 유학생 매칭 플랫폼 서비스로 성장 가능하다. 학교 포털 및 자체 공급망을 보유한 업체의 학생 인증에 대한 협력을 통해 서비스 성숙도를 빠른 시간에 올릴 수 있다. ◇ THREATS 서울메이트와 버디의 매칭 서비스만 진행된다면, 매 학기에 한 번 매칭이 진행되기에 사용자 유입이 없어 서비스를 유지하기 어렵다.
재학생과 유학생으로 확장한 서비스를 사용할 때, 재학생과 유학생의 유입 규모에 차이가 있다면 매칭 확률이 낮아지기에 시장에서 서비스를 유지하기 어렵다.
개발과제의 기대효과
기술적 기대효과
◇ 버디들과 서울메이트들 간의 매칭을 개선하기 위해 만들어진 매칭 알고리즘을 도입함으로써, 학생들은 보다 만족도 높은 학교생활 경험을 즐길 수 있다. ◇ 채팅 서비스를 통해 다양한 문화 및 언어적 배경을 가진 학생들 간의 소통이 용이해진다. 이를 통해 학생들은 언어 능력을 향상시키고, 서로의 문화를 더욱 쉽게 이해할 수 있으며 친밀감 있는 교류를 할 수 있다. ◇ 가중치를 적용한 게일-셰플리 매칭 알고리즘을 통해 트레이너, 운동, 지도교수-대학원, 교수-레지던트, 기숙사 매칭과 같은 응용프로그램에 기술적 도약이 가능할 뿐만 아니라 타 학교의 교류 프로그램에도 적용할 수 있다.
경제적, 사회적 기대 및 파급효과
◇ 맞춤형 매칭 서비스를 통해 학생들은 자신과 잘 맞는 사람과의 학교생활을 경험함으로써 학교에 대한 만족도를 높일 수 있다. ◇ 다문화 채팅 플랫폼을 통해 학생들은 서로의 문화를 공유하고 이해한다. 문화 간의 이해와 상호 존중을 촉진하여 국제 사회에 대한 이해도와 인식을 높일 수 있다. ◇ 교내의 외국인과 내국인 재학생들 간의 적잘한 매칭을 통해 학생들 간의 모임의 활성화를 기대할 수 있다. 이는 학교 주변의 상업 시설의 이용 증가로 이어져 학교 상권의 활성화에 도움을 줄 수 있다.
기술개발 일정 및 추진체계
개발 일정
구성원 및 추진체계
설계
설계사양
제품의 요구사항
설계 사양
◇ F1 - 기능: 사용자의 선호도를 기반으로한 매칭 알고리즘에 따라 매칭이 안정적으로 이루어진다. - 정량 목표: a. Back-end: Front-end 서버에서 입력받은 사용자의 선호도 정보를 DB에 저장한다. b. Front-end: 사용자의 정보와, 선호 항목에 대한 정보를 입력할 수 있는 UI를 제공하고, 입력받은 정보를 Back-end 서버로 전달한다.
◇ F2 - 기능: OCR API를 이용해, 전달받은 학생증 사진의 정보를 추출해 학생 인증을 진행한다. - 정량 목표: a. Back-end: Front-end 서버에서 전달받은 사용자의 정보를 DB에 저장되어있는 학생 정보와 비교하여 학생 인증을 진행한다. b. Front-end: 사용자의 학생증 사진을 전달받을 수 있는 UI를 제공하고, 입력받은 사진을 CLOVA API를 이용해 학생증의 글자를 추출해서 Back-end 서버로 전달한다.
◇ F3 - 기능: Web Socket을 활용해서, 매칭된 그룹 내 채팅 서비스가 이루어지도록 한다. - 정량 목표: a. Back-end: Web socket 서버를 설정하고 클라이언트 간의 실시간 통신을 관리하며 데이터를 저장하고 보안을 제공한다. b. Front-end: 채팅 UI를 제공하고 서버와의 통신을 관리하여 사용자가 채팅을 수행할 수 있도록 한다.
◇ F4 - 기능: 매칭이 완료된 후, 매칭된 사용자의 그룹의 구성원을 확인할 수 있다. - 정량 목표: a. Back-end: 매칭 결과를 처리하고, 그룹 구성원 정보를 제공할 수 있는 API를 구현한다. 매칭된 사용자의 그룹 구성원 정보를 DB에서 조회하여 Front-end로 전송한다. b. Front-end: Back-end로 부터 받은 매칭 결과를 이용해 사용자가 그룹 구성원을 확인할 수 있는 UI를 제공한다.
◇ F5 - 기능: 사용자의 프로필을 확인하고, 수정할 수 있다. - 정량 목표: a. Back-end: 사용자 프로필 정보를 DB에서 조회하고 수정할 수 있는 API를 구현하고, 사용자가 수정한 정보를 저장하고 그에 대한 URL을 반환하는 엔드포인트를 구현한다. b. Front-end: Back-end로부터 받은 프로필 정보를 UI에 표시한다. 프로필을 수정하기 위한 입력 양식을 제공하고, 입력받은 정보를 서버로 전송한다.
개념설계안
◇ 다문화 교류를 촉진하고 서울시립대학교의 커뮤니티를 더욱 다양하게 만들기 위한 특별한 웹서비스 ◇ EveryBuddy는 학교 특성을 고려한 안전하고 신뢰성 있는 서울메이트와 버디 간 매칭을 통해 학생들이 지역 및 문화적인 통찰력을 공유하며, 채팅 서비스로 원활한 소통과 진정한 교류를 즐길 수 있도록 지원합니다.
◇ 기능 설계
• 회원가입 및 로그인 1. 사용자는 두 가지 신분(서울메이트 또는 버디) 중 하나를 선택하여 회원가입 및 로그인 절차를 진행합니다. 2. 사용자가 학생증 사진을 업로드하면 시스템이 이름, 학번, 학과 등의 정보를 추출하여 자동으로 입력합니다.
• 게일섀플리 알고리즘을 이용한 자동 매칭 1. 사용자는 매칭 페이지에서 자신의 선호도와 정보를 입력합니다. 2. 게일섀플리 알고리즘을 통해 서울메이트와 버디 간의 자동 매칭이 진행됩니다. 3. 매칭이 완료되면, 사용자는 매칭된 서울메이트와 버디의 정보를 확인할 수 있습니다.
• 매칭된 사용자 간 채팅 1. 사용자는 채팅 페이지에 접속합니다. 2. 매칭이 완료되면 매칭된 사용자들 간의 채팅방이 생성됩니다. 매칭 전에는 채팅방이 활성화되지 않습니다. 3. 사용자들은 생성된 채팅방에서 채팅을 진행할 수 있습니다.
• 사용자 프로필 조회 및 수정 1. 사용자는 프로필 페이지에 접속합니다. 2. 이름, 성별, 학번 등의 정보를 조회할 수 있습니다. 3. 비밀번호는 수정이 가능합니다.
• 관리자 페이지 1. 관리자는 관리자 페이지에 접속합니다. 2. 매칭 전에는 매칭 시작 버튼이 있으며, 버튼을 누르면 매칭이 시작됩니다. 3. 매칭이 완료되면 매칭된 사용자들의 리스트를 조회할 수 있습니다.
◇ 플로우차트
이론적 계산 및 시뮬레이션
◇ 매칭 결과 계산
해당 선호도 순위에 따라 1.6~1.0의 가중치 또는 1.5~1.0의 가중치를 일치하는 것의 개수만큼 더하여 계산한다. 추가로, 언어의 선호도가 모국어와 같은 경우, 선호도 점수에서 0.05 가중치를 더하여 계산한다. 동점자가 있을 경우 먼저 정보를 입력한 사람이 우선순위를 가진다. 서울메이트가 본 버디들의 선호도 순위와 버디가 본 서울메이트의 선호도 순위는 다음과 같고, 버디 입장에서 seoulmate1의 선호가 더 많아 seoulmate1이 더 많은 버디를 가진다. 결론적으로, seoulmate1과 buddy3, buddy5, seoulmate2와 buddy1, buddy2, buddy4 이 매칭된 결과를 확인할 수 있다.
상세설계 내용
◇ 아키텍처도
- 웹 서버 매칭 서비스가 제공되고 사용할 수 있는 환경이다. React 프레임워크 개발 환경에서 구현된다.
- 웹 어플리케이션 서버 및 DB 서버 서울메이트-버디 매칭 서비스와 채팅 서비스에 사용되는 데이터베이스 접근 및 처리 연산을 제공하며, 클라이언트와 React 서버 어플리케이션 간의 통신을 담당한다. Spring Boot 어플리케이션 개발 환경에서 작동된다. MySQL 관계형 데이터베이스를 사용한다. 본 프로젝트의 DBMS는 AWS RDS 환경에서 작동된다. 실시간 채팅 웹소켓을 관리하는 STOMP
- 서버 배포 AWS EC2 서버 인스턴스를 사용하여 어플리케이션을 호스팅한다. Docker를 사용하여 컨테이너 이미지를 생성 후, 패키징된 어플리케이션을 배포한다. Git, Github를 통해 소스코드 및 형상 관리한다.
◇ 클래스도
가. 전체 클래스도
다. 세부 분류 클래스도
◇ 서울메이트 클래스도
◇ 버디 클래스도
◇ 매칭 클래스도
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
◇ 소개 사진
◇ 메인화면, 로그인, 회원가입 화면 (순서대로) ◇ 매칭 선호도 및 자신의 정보 입력 화면 ◇ 매칭 완료 후 채팅 페이지 ◇ 매칭 관리를 위한 관리자 페이지 ◇ 프로필 조회 및 프로필 수정 화면
완료작품의 평가
향후계획
내용