BE-commerce 프로젝트
약 3분 분량 검색·추천

상품 텍스트에 한글이 3건뿐이라 한국어 검색은 사전으로 풀어야 했다

Search 한국어 검색동의어 Lucene 의사결정
목차

한국어 검색을 붙이려고 먼저 확인해 보니 상품 텍스트에 한글이 있는 상품이 105,545개 중 3개였습니다. 한국어 형태소 분석기(nori)를 붙여도 쪼갠 한국어가 맞을 곳이 없습니다. 필요한 것은 한국어를 카탈로그의 영어로 바꾸는 사전이었습니다. 앱에 있던 한·영 라벨을 사전으로 쓰자 한국어 검색어의 0건 비율이 90%대에서 10~12%로 줄었지만, 측정 전에 정한 기준(5% 이하)을 넘지 못해 기본으로는 켜지 않았습니다.

개요

이 쇼핑몰의 카탈로그는 H&M 데이터라 상품 이름과 설명이 영어입니다. 화면은 한국어라서 카테고리와 색상에는 한국어 라벨이 붙어 있습니다. 검색 품질을 잴 때(ch42)는 정답을 상품 속성 일치로 정해서 동의어와 한국어 쿼리를 재지 않았습니다.

이번에 두 가지를 쟀습니다. 한국어로 검색하면 무엇이 나오는지, 그리고 영국식 표기(Trousers, Vest top, Dungarees)인 카탈로그를 미국식 말(pants, tank top, overalls)로 검색하면 어떻게 되는지입니다.

한국어는 라벨 사전으로, 미국식은 영국식을 더해 검색어를 고친다. 한국어 0건은 90%대에서 10~12%로 줄었지만 기준(5%)에 못 미쳐 켜지 않았다

고치는 규칙

검색어를 엔진에 넘기기 전에 고칩니다. 엔진과 상관없이 같은 규칙이 적용됩니다.

  • 한국어: 띄어쓰기와 문장부호를 무시하고 라벨을 가장 길게 맞춥니다. 색상 라벨(“블랙”)은 색상 필터가 되고 중분류 라벨(“스커트”)은 그 중분류의 원문 이름(“Skirts”)이 검색어가 됩니다. 맞지 않는 한글은 버립니다
  • 미국식 → 영국식: pants에 trousers를 더하는 식의 목록 9개입니다. 원래 말은 그대로 둡니다. 목록은 측정 전에 이슈에 고정했습니다

쿼리셋과 결과

묶음만드는 법수
F미국식 말 그대로. 정답은 대응하는 영국식 종류의 상품9
G1중분류 한국어 이름21
G2색상 + 중분류, 띄어 씀(“블랙 스커트”)60
G3G2를 붙여 씀(“블랙스커트”)60
A~E이전 품질 실험의 쿼리 그대로545
묶음nDCG@10 끔켬0건 끔켬
A~E변화 없음변화 없음변화 없음변화 없음
F0.4420.57111%0%
G10.0220.31790%10%
G20.0000.28088%12%
G30.0000.28397%12%

측정 전에 정한 기준은 둘이었습니다. 한국어 0건 비율 5% 이하, 그리고 기존 A~E 묶음의 nDCG@10이 0.01 넘게 떨어지지 않을 것. 둘째는 지켰습니다. 545개 중 한 쿼리도 바뀌지 않았습니다. 고치기는 한글이나 목록의 미국식 말이 있을 때만 움직이기 때문입니다. 첫째를 넘지 못해 기본으로 켜지 않았습니다.

남은 0건의 원인은 사전의 말이었다

남은 0건은 “니트”와 “기타”가 든 쿼리였습니다. “니트”의 원문 이름은 “Knitwear”이고 “기타”는 “Unknown”입니다. 중분류의 원문 이름은 H&M의 부서명이라 상품을 설명하는 말이 아닙니다. 상품 텍스트에는 “Knitwear” 대신 “Sweater”와 “knit”가 있습니다.

G의 nDCG(약 0.28)도 같은 이유로 낮습니다. 라벨로 만든 쿼리를 라벨로 푼 값이라 사전 품질의 근거는 못 되지만, 그렇게 유리한 조건에서도 낮게 나온 것은 부서명이 상품을 찾는 말로 약하기 때문으로 봅니다. 나눠 재지는 않았습니다.

F도 사전과 쿼리가 같은 목록이라 품질 주장이 아닙니다. 오타 허용 검색이 잡지 못하는 동의어(pants와 trousers)가 목록으로 잡힌다는 경로만 확인한 것입니다.

첫 측정에서는 G1의 0건이 19%였습니다. 쿼리 쪽은 한글만 남기는데 라벨 쪽은 공백만 지워서 “양말·타이츠”처럼 가운뎃점이 든 라벨이 절대 맞지 않았습니다. 라벨도 한글만 남기게 고치자 10%가 됐고 두 값을 모두 기록에 남겼습니다.

정리

  • 검색어 고치기는 설정 뒤에 남기고 기본은 끕니다
  • 형태소 분석기는 넣지 않습니다. 카탈로그에 한국어 상품명과 설명이 들어오면 그때 의미가 생깁니다
  • 한국어 쿼리는 화면 라벨로 만든 것이라 사용자가 실제로 칠 말(“원피스”, “청바지”, “후드티”)과 다릅니다. 그 말들은 이 사전에 없습니다. 실제 한국어 검색 로그가 쌓이면 자주 나오는 말을 상품 종류로 잇는 사전을 만들어 같은 기준으로 다시 잽니다
프로필 사진
작성자 @범수

오늘의 노력이 내일의 전문성을 만든다고 믿습니다.

댓글

댓글 수정/삭제는 GitHub Discussions에서 가능합니다.