본문 바로가기
사이드 프로젝트/음악추천 챗봇 서비스

음악추천챗봇8. 아티스트 유사도 테스트 수행 및 예외처리

by 카프리썬 2021. 7. 2.
728x90

테스트 수행 

어느정도 유사도가 나오는지 궁금해서 몇가지 아티스트 데이터를 넣어봤다. (아티스트 총 22)

그리고 데이이터처리 및 분석결과 혹시 유사아티스트의 결과값이 바뀌는지도 확인해보았고,

실제로 어느정도 유사한지를 확인해보았다. 

 

1. 유사도 정확성 

정교한 값이 아니라 그냥 무작정 평균값으로 비교하기에 크게 기대는 하지 않았다.

그런데 걸그룹(예: 브레이브걸스)에 대한 유사아티스트들이 다 걸그룹으로 나오거나,

보이그룹(예:빅뱅)에 대한 유사아티스들이 다 보이그룹으로 나오는 경우는 꽤 신기했다. 

 

 

2. realated_artist 테이블업데이트

신규아티스트들이 들어오고 s3,아테나 스크릡트를 돌리고 나서 유사아티스트가 결과가 바뀌는지도 확인해보았다.

처음 APINK의 유사한 아티스트들은 러블리즈,트와이스, 브레이브걸스였다

그런데 오마이걸이 신규아티스트로 입력이 되고 S3와Athena에 의해 데이터처리와 분석이 이루어지자 결과가 바뀌었다.

오마이걸 내용이 유사아티스트에 들어가게 된 것이다. 


예외사항 확인

1) 카카오 오픈빌더 패턴발화에 정의한 이름이 아닌 경우, 아예 메세지를 인식하지 못함

예를 들어, 

카카오 오픈빌더 : 엑소 '만' 정의한 상태

챗봇입력 : 엑소 -> 아티스트명으로 인식하고 스포티파이 api에서 검색 -> DB에 EXO 저장

챗봇입력 : EXO,  exo ->  DB에 아무리 있더라도 카카오챗봇이 아티스트명으로 인식하지 못함 

 

=> 카카오 오픈빌더에 대문자 아티스트명 추가 필요

 

2) 아티스트명이 같더라도 한글과 영어에 따라 다르게 인식함 

예를 들어, 

카카오 오픈빌더 : 에스파, ASEPA를 정의한 상태

챗봇입력 : 에스파-> DB에 없는 신규 아티스트일 경우 스포티파이에서 (asepa)검색 -> DB에 asepa 저장

챗봇입력 : 에스파 -> DB에는 영어로 저장되어 있기 떄문에 못찾음

ASEPA, asepa -> DB에 저장된걸 찾아옴 (대소문자는 상관이 없음!!)

 

=>한글, 영어를 구분해야함  : 음 근데 일단은 입력은 영어로 검색하라게 해야겠다..!

 

아, 그리고 RDS와 DynamoDB에 저장된 아티스트명이 달랐는데, 알고보니 다르게 저장하고 있었다.

DynamoDB에는 사용자가 입력한 이름으로 저장하고 있던것!

그래서 아티스트명은 항상 스포티파이api에서 수집한 형식(영문)으로 저장하도록 이런 작은 부분들도 수정했다. 

 

3) 띄어쓰기까지 구분함

예를 들어,

카카오 오픈빌더 : 오마이걸,OHMYGIRL 이라고 정의한 상태

챗봇입력 :  OHMYGIRL -> DB에 없는 신규 아티스트일 경우 스포티파이에서 (OH MY GIRL)검색 후 저장 

챗봇입력 : OHMYGIRL -> DB에는 띄어쓰기까지 포함되서 저장되어 있기 떄문에 못찾음 

 

=> 띄어쓰기까지 포한해서 구분해야함 

일단 띄어쓰기까지 정확하게 입력하도록 제한하고, 카카오 오픈빌더의 발화패턴으로 그렇게 정해놔야겠다. 

 

예외사항 처리

카카오 오픈빌더에 한글 아티스명을 입력해둔 덕분에 아티스트명을 인식은 할 수 있었다.

그리고 스포티파이에선 그 아티스트이름을 영어이름으로 검색하고, DB에도 영어이름으로 저장한다.

그래서 검색하고자 할때는 꼭 영어로 검색해야한다! 

 

추가 변경사항

s3, 아테나 스크립트를 아직 수행하지 않은 경우 (입력한 아티스트에 대한 related_artist 테이블이 없는 경우)

유사도 결과를 알려주지 않고, 입력한 아티스트 노래정보들 메세지로 뿌려주도록 변경했다! 

반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });