안녕하세요, 기획자 팥씨입니다.
오늘은 어제에 이어 무신사에서 VoC 대시보드를 제작한 글에 대해 다뤘습니다.
총 2편으로 구성되어 있어 (1) UX 파트 (2) 검색플랫폼팀으로 다뤄보겠습니다.
Part1. UX 파트가 소개하는 VoC 자동화 분류의 필요성
✅ Part2. 검색플랫폼팀이 소개하는 VoC 대시보드 실제 구축 과정
고객의 목소리를 한 눈에 볼 수 있도록: 무신사의 VoC 대시보드 제작기 Part2. by 검색플랫폼팀
‘검색플랫폼팀’이 UX파트와 함께 무신사의 VoC를 자동분류하고 대시보드화 한 경험을 다룹니다. Part2인 이번 글에서는 AWS Comprehend를 사용하여 실제 대시보드를 구축한 과정을 소개합니다.
medium.com
좋은 글 공유해주신 무신사 검색플랫폼 팀 감사합니다.☺️
1탄의 글을 빌려와보자면, UX 파트의 요구사항은 다음과 같았습니다.
2024.05.13 - [[기획자 시선]] - [30일 챌린지] Day5. (1) 무신사에서 VoC 대시보드 제작하기 by UX 파트
[30일 챌린지] Day5. (1) 무신사에서 VoC 대시보드 제작하기 by UX 파트
안녕하세요, 기획자 팥씨입니다. 오늘은 무신사에서 제품분석경험팀 UX 파트와 검색플랫폼팀이 무신사의 VoC를 자동분류한 내용입니다. 총 2편으로 구성되어 있어 (1) UX 파트 (2) 검색플랫폼팀으
yujinwhomakes-anko.tistory.com
요건 1. VoC 데이터의 자동 분류
- 담당자의 주관이 개입하지 않는 자동 분류 과정 필요
- 불필요한 작업시간 단축으로 데이터 효율적 관리 기대
요건 2. 누구나 손쉽게 조회 가능
- 사내 구성원 누구나 리서치 VoC 데이터에 쉽게 접근할 수 있도록
요건 3. 검색 및 분류별 필터링 등 필요한 최소 기능 정의
- 다량의 데이터를 효과적으로 시각화해 인사이트 파악을 돕는 기능
- 필요한 기준으로 찾을 수 있는 키워드 검색 기능
- 분류 항목별 필터링 기능
- CSV 다운로드 기능
[상황]
- 1020의 사용자가 전체의 약 60%
- VoC는 다양한 형태의 문장으로 수집되고 있음.
- 수집된 VoC는 제품경험분석팀에서 28개의 카테고리로 분류 중
- VoC의 핵심 키워드 (ex.'검색', '리뷰' 등)를 추출해 작업하기로 함.
- 문장이 뜻하는 카테고리로 분류하기 위해서는, 문장 전체의 내용보다는 구성하고 있는 키워드가 중요하다고 판단
문제 1 | 카테고리의 핵심키워드는 어떻게 정의할 수 있을까
카테고리별 문장들을 모두 모아 많이 사용된 단어를 뽑으면 될 것 같지만,
단순히 많이 사용된 키워드라고 핵심 키워드로 보기는 어려움.
ㄴ ex. '무신사', '상품' 같은 단어는 빈번하게 사용되지만 핵심키워드는 아님.
해결 1 | ES - Significant terms aggregation
ex. 100건의 VoC 문장 중 '리뷰'라는 단어가 70건의 문장으로 후기 카테고리에,
10건의 문장으로 다른 카테고리에 있다면
--> 상대적으로 '리뷰' 단어는 후기 카테고리에 더 의미 있는 키워드라고 판단하는 방법.
--> '무신사' 처럼 모든 카테고리의 문장에 분포되어있는 키워드는 순위가 낮아 핵심키워드로 취급 X
--> Elastic Search 에 'Significant terms aggregation' 기능 통해 위 방법 제공 중
문제 2 | 카테고리의 핵심 키워드 간 중복
막상 키워드를 추출해보니, 카테고리의 핵심 키워드 간 중복이 있다는 것을 알게 됨.
쿠폰, 가격/세일 카테고리 모두 핵심 키워드로 '할인'이라는 키워드를 가지는 상황에서,
단순히 핵심 키워드만을 고려하여 카테고리 분류를 수행하기 어려움.
-> Significant terms aggregation에서 추출된 핵심 키워드 내 우선순위 분류 필요
해결 2 | 중요도를 기준으로 가중치 상/중/하 키워드 분리
핵심키워드처럼 의미있는 키워드를 세분화하여, 중요도를 기준으로 3단계로 키워드 분리
- 가중치 '상' : 가중치 '중'에 해당하는 키워드 중, 임의로 중요도가 높은 키워드들 선별
- 가중치 '중' : 가중치 '하'에 해당하는 키워드 중 임의로 중요도가 있는 키워드들 선별
- 가중치 '하' : 일반 Significant terms aggregation 에서 추출된 키워드
1. 핵심키워드가 중요키워드보다 우선되도록
2. 문장을 구성하는 키워드가 카테고리의 키워드 그룹과 더 많이 일치할수록 해당 카테고리와 연관이 있도록
ex."후기에 성별 필터가 갑자기 안 걸려요.. 성별+키로 조회하면 검색 가능한데
성별로만 조회하면 무조건 전체 검색결과가 나옵니다. 빠른 조치 부탁드려요..”
=> '후기' 카테고리에 1건, '검색/필터' 카테고리에 4건 일치되므로 '검색/필터' 에 속한다고 판단
문제 3 | 카테고리 분류를 자동화하기엔 낮은 정확도
- 현재까지의 과정을 거치며 50-60%의 정확도를 얻음.
ㄴ 전체 문장 중 40%는 정확하게 분류하지 못함을 의미.
ㄴ 카테고리 분류를 자동화하기엔 부족하다고 판단.
문제 1. 부족한 표본 데이터
ㄴ 의미있는 키워드가 추출되려면 데이터의 양도 중요했음.
문제 2. 복합문장
ㄴ 하나의 문장에 두가지 카테고리가 포함된 경우에는? 키워드 가중치 분류 프로세스만으로는 불충분
문제 3. 해석에 따라 달라지는 경우
ㄴ 중의적인 표현들의 구분이 애매. 예를 들어 선호도의 '좋아요'와 무신사의 '좋아요' 기능 키워드만으로 분류 어렵
--> 검색엔진으로 모든 문맥을 이해하기에는 많은 규칙들이 필요할 것으로 예상
해결 3 | 머신러닝 AWS Comprehend 으로 카테고리 분류
머신러닝 도입 - AWS Comprehend 사용기
머신러닝 도입을 위해서는 환경 셋팅과 알고리즘 선택, 모델 실험 하는 등 많은 리소스가 필요.
그러한 과정 줄이기 위해 Amazon Comprehend 사용하기로 결정
장점
- 별도의 어려운 머신러닝 환경 세팅을 하지 않아도 됩니다.
- 머신러닝 모델을 선택하고 해당 모델을 실험하여 최적의 모델을 찾는 것에 많은 시간과 리소스를 사용하지 않아도 됩니다.
- AWS Comprehend는 실시간 API방식와 비동기 배치방식으로 제공을하고 있습니다. 비동기 배치 방식을 사용하여 작업을 진행하였습니다.
🥮 실시간 API 방식? 비동기 배치 방식?
실시간 API 방식
- 실시간 API 방식은 데이터를 바로 입력하고 즉시 결과를 받는 방식입니다.
- 예를 들어, 웹사이트에 텍스트를 입력하면 AWS Comprehend가 즉시 분석을 해서 결과를 반환합니다.
- 이 방식은 빠르게 결과가 필요할 때 유용합니다.
비동기 배치 방식
- 비동기 배치 방식은 많은 양의 데이터를 한꺼번에 처리하는 방식입니다.
- 데이터를 모아서 AWS Comprehend에 보내고, 분석이 완료되기를 기다린 후 결과를 받습니다.
- 이 방식은 대량의 데이터를 처리할 때 유용하며, 결과가 즉시 필요하지 않은 경우에 사용됩니다.
비유를 들어 설명
- 실시간 API 방식은 패스트푸드 점에서 주문을 하고 즉시 음식을 받는 것과 같습니다. 바로 결과를 원할 때 사용합니다.
- 비동기 배치 방식은 우체국에서 소포를 보내는 것과 비슷합니다. 많은 양의 소포를 보내고, 도착하기를 기다렸다가 나중에 결과(도착 여부)를 받는 것이죠. 한꺼번에 많은 작업을 처리할 때 유용합니다.
-> AWS Comprehend 도입으로 92%라는 향상된 정답률 얻기 성공
남은 과제 | 제품경험분석팀에서 실무에 바로 활용할 수 있도록 하기
분석 전 데이터를 업로드하고, 결과를 내려받는 일련의 작업들이 필요
# 시도 1 : API 활용
- API를 제공하고, API 통해 정답셋 추가, VoC 문장의 카테고리 분류를 진행
- Swagger를 제공하여 API를 사용해서 언제든 VoC 분류를 진행할 수 있도록 함.
(내부환경) 가장 간단한 방법이지만, 이 작업을 담당할 개발자가 없음. 오히려 낯설고 비효율적인 방법으로 보여짐.
🥮 Swagger란 무엇인가?
Swagger는 소프트웨어 개발에서 API(애플리케이션 프로그래밍 인터페이스)를 쉽게 이해하고 사용할 수 있도록 도와주는 도구입니다. API는 다른 프로그램들이 서로 소통할 수 있게 해주는 규칙과 방법을 말합니다. 개발자들은 API를 통해 다른 소프트웨어나 서비스를 호출해서 특정 기능을 수행할 수 있습니다.
🥮 왜 Swagger가 중요한가?
1. 문서화: Swagger는 API의 사용 방법을 설명하는 문서를 자동으로 만들어줍니다. 이 문서에는 API를 호출하는 방법, 필요한 입력 데이터, 반환되는 결과 등이 포함됩니다. 쉽게 말해, 사용 설명서 같은 역할을 합니다.
2. 테스트: Swagger를 통해 API를 쉽게 테스트해볼 수 있습니다. 웹 브라우저에서 버튼을 클릭해서 API를 호출해보고, 결과를 확인할 수 있습니다. 개발자들은 이를 통해 API가 제대로 작동하는지 확인할 수 있습니다.
# 시도 2 : S3 활용
- S3(Amazon Simple Storage Service)를 활용하여 엑셀 파일을 직접 업로드 하면 일괄적으로 분류 작업을 진행하도록
(비효율) 엑셀파일을 직접 업로드하고 다운로드 받는 등 (API를 대신해 사용) 5개의 절차를 거쳐야 한다는 점에서 커뮤니케이션 비용이 발생
# 시도 3. : 구글 시트 활용
구글 시트에 업데이트 후 분류 작업 진행 -> 구글 시트에 분류된 카테고리를 업데이트해주는 것.
(채택) 작업자도 실시간 업데이트를 통해 바로 결과를 확인할 수 있어 사용
기능 고도화 (시각화, 검색 등)
- 데이터 적재 및 표시 : VoC 분류를 위해 data들을 모두 Elasticsearch에 보관하고 있었기에 Elasticsearch API를 활용
- 대시보드 시각화 자료 : ES에 적재된 데이터를 Kibana 대비보드의 공유 기능을 활용해 iframe으로 그래프와 표 형태로 구현
- VoC 검색 기능 : API 개발을 통해 적재된 데이터를 활용한 검색 기능 개발
- UI 개발 : 프론트엔드 개발팀의 지원으로 API 연동 및 인터페이스 개
- 정보 보안 검토와 QA 작업을 마무리로, 'VoC 리포팅 페이지' 구축 완료.
VoC 대시보드 구축 작업의 의미
누구나 무신사를 이용하는 고객이 어떤 생각을 가지고 있는지,
어떤 불편함이 있는지 확인
-> 기획의 근거로 활용 가능!
PM의 한마디
필요한 작업이 있을 때 바로 개발을 시작해서 모델을 만드는 것도 중요하지만,
이미 마련되어 있는 도구와 라이브러리를 활용할 수 있도록 아이디어를 얻을 수 있는
다양한 커뮤니티 활동과 검색 활동도 못지않게 중요하다!
'[기획자 시선]' 카테고리의 다른 글
Day8. 무신사에서 환불구조 개선하기 by 클레임 PM (0) | 2024.05.16 |
---|---|
Day7. 배민에서 AI로 선물 메시지 보내기 (0) | 2024.05.15 |
Day5. (1) 무신사에서 VoC 대시보드 제작하기 by UX 파트 (0) | 2024.05.13 |
Day4. 롯데온에서 선물 수락 및 거절 개선하기 (1) | 2024.05.12 |
Day3. 당근에서 검색 필터 사용성 개선하기, 검색필터 레퍼런스 (1) | 2024.05.11 |