당근마켓에서 딥러닝 활용하기 - 불량 게시물 검사

1*eEFYtWNQPb6tAeXqjNfRnA.png

 

https://medium.com/n42-corp/%EB%8B%B9%EA%B7%BC%EB%A7%88%EC%BC%93%EC%97%90%EC%84%9C-%EB%94%A5%EB%9F%AC%EB%8B%9D-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0-3b48844eba62

 

 

 

당근마켓은 중고직거래 스마트폰 앱 서비스입니다.

업자, 주류, 가짜 등 불량 게시물을 판단하는데 딥러닝을 사용했다고 합니다.

 

이제 딥러닝도 실제 업무에서 많이 활용되기 시작하는 것 같습니다.

기업 입장에서는 환영할만한 일이지만 점점 사람이 하는 일이 줄어드는게 걱정이네요.

 

[출처] http://aidev.co.kr/deeplearning/3000

당근마켓에서 딥러닝 활용하기

안녕하세요, 당근마켓 소프트웨어 엔지니어 Ed 입니다.

요새 인공지능/딥러닝이 정말 많이 거론되고 있는데요. 저희 당근마켓에서도 이러한 기술을 적극 활용하려 하고, 그동안 서비스에 적용한 내용을 공유하고자 합니다.

아직 당근마켓을 모르시는 분들을 위해 소개하면,

당근마켓은 우리 동네 주민들과 중고 직거래를 위한 스마트폰 앱 서비스예요. 주변 맘들은 이젠 익히 아실지도 :)

https://www.daangn.com/

게시글 분류

당근마켓 사용자들로부터 게시글이 판매금지 품목에 해당한다면 신고 기능으로 제보받고 있습니다. 이렇게 제보받은 항목을 저희 당근마켓 팀은 검토하여 수락/거부 후 규정에 따라 처리하고 있습니다. 문제는 서비스가 성장하면서 저희 소규모 인원만으로는 감당할 수 없을 정도로 신고량이 늘어나게 되었습니다. 그렇다고 스타트업에서 운영인력을 선형적으로 채용하기 부담이 될 수 밖에 없었습니다.

그래서 딥러닝을 이용하여 해결하려 했습니다. 기존에 신고 처리한 내역을 학습 데이터로 사용하여 Tensorflow 분류 모델을 만들 수 있었습니다. 새로운 게시글이 등록되면 학습 모델에 예측을 하여 정해놓은 확률에 따라 신고받기 전 선조치, 다수 신고 자동처리에 활용하여 운영량을 대폭 줄일 수 있었습니다.

더불어 확실한 광고 같은 게시글은 등록 후 바로 미노출되어 사용자에게 불쾌감을 주지도 않게 되어 서비스 품질/만족도를 높일 수 있는 이점도 생겼습니다.

예측 결과

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 
 
전문 판매업자/홍보, 가품/이미테이션
 
 
 
주류/담배, 동물, 일반

전체 분류 테스트 정확도 accuracy는 88% 결과가 나왔습니다. 중요하게 생각한 것은 일반 게시글 재현율 recall 95% 입니다.

일반 게시글이 다른 분류로 예측되는 피해를 입지 않도록 다른 분류의 정확도 precision를 높이는 것보다 일반 게시글 재현율을 높이는데 중점을 둔 결과입니다.

Tensorflow 기반의 CNN, RNN, Fully connected layers로 네트워크를 구성하여 모델을 학습합니다. 이 모델은 Cloud Machine Learning Engine에 배포하여 예측에 사용하고 있으며, cloudml-samples/flowers 예제를 참고하여 모델 배포까지 시스템을 보다 쉽게 구축할 수 있었습니다.

 
게시글 분류 모델 네트워트

유사한 게시글 찾기

당근마켓은 따뜻한 지역거래를 위해 사기꾼이거나 비매너 사용자를 적극 제재하고 있습니다. 일부는 제재를 받고도 악의적이거나 제재를 피해 새로운 계정을 만들어 활동하여 당근마켓 사용자에게 지속적으로 피해를 주고 있는 문제가 있습니다. 대비책으로 이용 제재 받은 사용자의 게시글과 유사한 글을 올리는 사용자는 같은 사용자일 확률이 높으므로 적극 모니터링 관리 / 자동 처리하고 있습니다.

또한 유사한 게시글을 찾는 기능을 통해 비슷한 게시글을 계속 올리는 사용자를 찾아낼 수 있었습니다. 예를 들어 스마트폰만 계속 올리는 전문 판매업자, 다량의 가품 핸드백 판매자가 있었는데 이런 사용자를 쉽게 검출하고 제재하여 반복적인 게시글과 수익의 목적인 사용자를 방지할 수 있었습니다.

특징 추출

유사한 정도를 비교하기 위해 게시글의 특징을 뽑아야 합니다. 사진은 미리 학습하여 공개된 모델인 Inception V4 모델을 사용하였고, 텍스트는 doc2vec (StarSpace — ArticleSpace)을 사용하여 전체 게시글 내용을 학습 데이터로 모델을 비지도 학습 시킨 뒤 특징 embedding을 추출했습니다. 참고로 Inception V4 모델은 1년전부터 이미지 특성 추출하고 있어 그대로 사용한 것으로 이후 더 가볍고 성능이 좋은 새로운 모델로 전환을 하면 좋을 것 같습니다.

인덱스 서버

특징 embedding은 [0.12, 0.48, …, 0.9] 벡터 형태로 기존 데이터베이스에 저장할 순 있지만 비슷한 항목을 검색할 수 없습니다. 모든 벡터를 메모리에 올려서 가장 가까운 벡터를 찾는 방법이 있는데, 메모리 사용량과 검색 시간의 문제를 해결해야 합니다. 이에 매우 적합한 라이브러리인 Faiss를 사용하여 메모리를 적게 사용하며 매우 빠르게 검색할 수 있는 특징 embedding 인덱스를 구축할 수 있었습니다. 추가적으로 당근마켓 서버에서 사용하기 위해 서버간 통신은 gRPC 라이브러리를 활용했습니다.

고객 문의 분류

사용자들은 당근마켓 이용 중 문의사항이 있을 때 텍스트 글을 적어 질문을 보내고 있습니다. 이러한 문의 중 공통된 답변이 많을 경우 FAQ로 정리를 해놓고, 답변시 FAQ 링크를 보내주고 있습니다. 답변을 보낼 때 관련 참고 FAQ 링크를 찾는 작업은 단순하여 더욱 빠르고 편하게 하기 위해 학습 모델을 만들었습니다. 학습 데이터 구성은 답변에서 FAQ 링크를 라벨로 추출하여 문의 내용을 텍스트 분류로 지도 학습했습니다.

텍스트 분류로 사용한 fastText는 간편하고 빠르며 다른 분류 방법에 비해서도 성능도 괜찮게 나왔습니다.

학습 데이터에는 총 142개의 분류(FAQ)에서 각 분류 당 학습 데이터가 많지 않아 분류 테스트 정확도 accuracy는 64%로 높지 않게 나왔습니다. 하지만 앞으로 학습데이터인 FAQ에 대한 답변이 늘어남에 따라 더 높아질거라 예상합니다.

현재 문의 내용의 FAQ 예측이 일정 확률 이상이면 FAQ 추천을 표시하여 답변에 활용하고 있습니다.

 
FAQ 검색 전 추천링크를 클릭하여 쉽게 선택

유사 고객 문의 찾기

위의 FAQ 답변할 수 있는 고객 문의처럼 간단한 질문도 있지만, 복잡하고 다양한 질문도 많이 있습니다.

저희 당근마켓팀은 운영팀이 따로 있지 않고 팀원 모두 서로 돌아가면서 고객 문의에 답변합니다. 이렇게 여러 사람이 답변하다보니 이미 비슷한 질문에 답변을 한 경우, 참고면 더욱 간편하게 답변을 할 수 있어서 관련 답변이 있는지 여러 키워드로 검색을 해야하는 번거로움이 있었습니다. 이 부분도 텍스트 학습을 통해 더 효율적으로 빠르고 간편하게 찾을 수 있도록 적용해봤습니다.

유사한 질문을 찾기 위해 위의 유사 게시글 찾기처럼 질문의 특징을 추출하여 인덱스 구축하여 찾았습니다.

Embedding Projector로 시각화 해본 결과, 아래처럼 비슷한 질문들의 특징이 가깝게 분포되어 비슷한 질문들을 찾을 수 있는 걸 확인할 수 있었습니다.

 
문의내용의 t-SNE 시각화

가능성을 확인 후 실제 서비스에 적용으로 문의사항 답변 화면에서 유사 질문의 답변을 표시했습니다. 이제 저를 포함해서 고객문의 담당자는 이미 답변한 비슷한 문의에 대해서 손쉽게 답변할 수 있게 되었습니다. 야호^^!

마치며

당근마켓과 같이 일반 서비스에도 딥러닝을 도입/활용하면서 좋은 점이 많아 공유하게 되었습니다. 위에 언급한 라이브러리와 플랫폼 덕분에 딥러닝 시스템을 구축하기 생각보다 많이 편해진 것 같습니다. 아직 사용해보지 않은 분에게 활용해보시길 추천드립니다.

앞으로도 당근마켓 개인화 / 추천 등 다양한 분야에도 딥러닝을 적극 활용해 볼 계획입니다~!

우리 동네 중고 직거래 마켓 사용해보세요~ https://dngn.kr/2CV0Ztc

[출처] https://medium.com/n42-corp/%EB%8B%B9%EA%B7%BC%EB%A7%88%EC%BC%93%EC%97%90%EC%84%9C-%EB%94%A5%EB%9F%AC%EB%8B%9D-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0-3b48844eba62

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1195 [ 一日30分 인생승리의 학습법] VBA Web Scraping: How Can VBA Be Used To Scrape Website Data? file 졸리운_곰 2024.04.13 3
1194 [ 一日30分 인생승리의 학습법] 윈도우 실행파일 구조(PE파일) file 졸리운_곰 2024.03.31 3
1193 [ 一日30分 인생승리의 학습법] [Analysis] PE(Portable Executable) 파일 포맷 공부 file 졸리운_곰 2024.03.31 3
1192 [ 一日30分 인생승리의 학습법] 성공하는 메타버스의 3가지 조건 file 졸리운_곰 2024.03.30 7
1191 [ 一日30分 인생승리의 학습법] REST, REST API, RESTful 과 HATEOAS file 졸리운_곰 2024.03.10 9
1190 [ 一日30分 인생승리의 학습법] 렌더링 삼형제 CSR, SSR, SSG 이해하기 file 졸리운_곰 2024.03.10 2
1189 [ 一日30分 인생승리의 학습법] 엑셀 VBA에서 셀레니움 사용을 위한 Selenium Basic 설치 file 졸리운_곰 2024.02.23 11
1188 [ 一日30分 인생승리의 학습법]500 Lines or Less Blockcode: A Visual Programming Toolkit : 500줄 이하의 블록코드: 시각적 프로그래밍 툴킷 졸리운_곰 2024.02.12 4
1187 [ 一日30分 인생승리의 학습법] 구글 클라이언트(앱) 아이디를 발급받으려면 어떻게 해야 하나요? 졸리운_곰 2024.01.28 3
1186 [ 一日30分 인생승리의 학습법] 빅뱅 프로젝트를 성공적으로 오픈하기 위한 팁 졸리운_곰 2023.12.27 16
1185 [ 一日30分 인생승리의 학습법]“빅뱅 전환보다 단계적 전환 방식이 이상적 애자일팀과 협업 쉽게 체질 개선을” file 졸리운_곰 2023.12.27 12
1184 [ 一日30分 인생승리의 학습법] Big-bang / phased 접근 file 졸리운_곰 2023.12.27 3
1183 [ 一日30分 인생승리의 학습법] CodeDragon 메뉴 데이터 전환의 개념 이해 - 데이터 전환의 개념, 데이터 전환방식, 데이터 전환방식 및 장단점 비교, 데이터전환 이후 검토해야 할 사항 졸리운_곰 2023.12.27 5
1182 [ 一日30分 인생승리의 학습법] 블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 분쟁 해결 시스템 file 졸리운_곰 2023.12.27 6
1181 [ 一日30分 인생승리의 학습법] 블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 개념과 리뷰 시스템 file 졸리운_곰 2023.12.27 4
1180 [ 一日30分 인생승리의 학습법] 소켓 CLOSE_WAIT 발생 현상 및 처리 방안 file 졸리운_곰 2023.12.03 7
1179 [ 一日30分 인생승리의 학습법] robots 설정하기 졸리운_곰 2023.12.03 3
1178 [ 一日30分 인생승리의 학습법] A Tutorial and Elementary Trajectory Model for the Differential Steering System of Robot Wheel Actuators : 로봇 휠 액츄에이터의 차동 조향 시스템에 대한 튜토리얼 및 기본 궤적 모델 file 졸리운_곰 2023.11.29 6
1177 [ 一日30分 인생승리의 학습법] Streamline Your MLOps Journey with CodeProject.AI Server : CodeProject.AI 서버로 MLOps 여정을 간소화하세요 file 졸리운_곰 2023.11.25 2
1176 [ 一日30分 인생승리의 학습법] Comparing Self-Hosted AI Servers: A Guide for Developers / : 자체 호스팅 AI 서버 비교: 개발자를 위한 가이드 file 졸리운_곰 2023.11.25 10
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED