cleanUrl: /이커머스-도메인-개체명-인식기-개발하기

https://velog.velcdn.com/images/dongho18/post/192f676d-70e5-48e1-9ab1-db8b0b88336c/image.png

본 게시물은 "시각장애인을 위한 읽어주는 쇼핑 대화형 AI '소담' 개발 회고" 와 내용이 이어집니다.

오늘은 이커머스 도메인 개체명 인식기 개발을 주제로 글을 써보려고 한다.

개체명 인식이란?

개체명 인식(Named Entity Recognition)이란 말 그대로 이름을 가진 개체(named entity)를 인식하겠다는 것을 의미한다. 좀 더 쉽게 설명하면, 어떤 이름을 의미하는 단어를 보고는 그 단어가 어떤 유형인지를 인식하는 것을 말한다.

예를 들어 동호는 2025년에 토스에 입사했다. 라는 문장이 있을 때, 사람(person), 조직(organization), 시간(time)에 대해 개체명 인식을 수행하는 모델이라면 다음과 같은 결과를 보여준다.

https://velog.velcdn.com/images/dongho18/post/f021dca4-24b9-48e9-9b5d-87094b00c768/image.png

개발 배경

이전에 학교 팀 프로젝트를 진행하면서 상품 추천 알고리즘 개발을 맡은 적이 있었다. Word2Vec 를 사용해 사용자의 발화문과 DB에 저장돼있는 제품명을 비교해서 코사인 유사도 값을 계산한 뒤에 유사도 값이 가장 큰 상품을 추천해주는 방식으로 간단하게 구현을 진행했었다.

구현 방법

https://velog.velcdn.com/images/dongho18/post/7cfc68dc-2703-4b98-98c3-a30b713ab729/image.png

이 방법은 간단하면서도 나름 성능이 괜찮았지만, 한 가지 문제가 존재했다. 예를 들어 "다이슨 청소기 추천해줘"와 같은 문장 전체를 모두 벡터화시키다 보면, 중요하지 않은 정보들도 함께 벡터화가 되어 노이즈가 생긴다. 즉, 문장이 길어지면 길어질수록 추천 성능이 떨어진다. 그래서, 문장에서 중요한 키워드만 뽑아서 벡터화를 시키는 방법은 없을까를 고민하게 됐고 그에 대한 해결 방법으로 개체명 인식기 개발 방법에 대해 공부하게 된다.

https://velog.velcdn.com/images/dongho18/post/f3e0f549-58bd-433f-ac7a-9dcbb3f3f529/image.png