딥러닝을 이용해서 그다지 의미있는 성과를 보지 못하여 다른 방식을 시도하기로 하였다.
전반적인 개요는 아래처럼 기존의 임베딩 방식과 해시태크의 키워드를 활용하는 방식이다.
Vector based
벡터 기반은 보유하고 있는 데이터와 새로들어온 데이터간의 유사도를 측정하는 과정이다. 이 과정에서 새로 들어온 링크는 키워드를 추출할 수 있는 알고리즘이 필요하다.
→ 이 글에서 전반적으로 다루게될 내용
Keyword based
Collaborative filtering과 유사한 개념이다. 다른 사람들이 설정한 키워드를 바탕으로 많이 겹치는 링크들을 찾고 그 링크의 카테고리를 후보로 선택하는 것이다.
후보 랭킹 종합
현재 생각으로는 위의 두 과정에서 겹치는 내용 혹은 각 계수를 곱한 값을 더하여 점수를 기반한 랭킹을 만들게 된다.
포맷 고려한 필터링 및 토큰화
포맷의 고려는 동영상 링크(예: youtube)는 내부에 존재하는 텍스트를 통해서 키워드를 추출하는 것이 어렵다. 또한 링크의 포맷에 따라 카테고리에 미치는 영향이 다소 크다.
→ 알고리즘 맨 앞단에서 진행할지 마지막에 진행할 지는 미지수
카테고리 제목 추출
후보 카테고리에서 토큰화를 진행하여 적절한 단어를 추천한다.
다음과 같은 진행방향으로 흘러가길 기대한다.
광고 및 유사 연관 게시물의 텍스트에 대한 오염
해당 블로그는 UI/UX와 관련된 블로그이지만 키워드를 추출하면 다음과 같은 단어들을 볼 수 있다. → 문제는 “엄마”라는 단어이다.
원인은 아래와 같이 연관된 게시물의 텍스트가 같이 크롤링되면서 “엄마”라는 단어의 빈도가 증가하고 이는 문서 내에서 중요한 단어로 판별하게 된다.
요약글에 수많은 “엄마”가 몰려있다.
(해결시도) 앞뒤의 텍스트를 잘라서 텍스트를 추출한다.
위의 방식을 적용한 결과 마찬가지로 “엄마”라는 부분의 키워드를 줄일 수 없었다. 문제는 HTML의 트리구조에서 각 블로그마다 광고성, 관련 게시글과 관련된 DOM 구조를 위치시키는 방식이 다르다는 것이다.
(해결시도) og를 요약문으로 가정하여 텍스트 추출
Open graph에서 추출한 텍스트를 요약문으로 간주하고 이를 바탕으로 HTML 데이터의 문장을 필터링한다. 최종적으로 살아남은 문장을 핵심 문장이라고 판단하였다.
몇가지 애매한 결과도 있지만 아래와 같이 전반적으로 준수한 키워드를 뽑아 냈다.
→ Open graph가 없는 경우는 위와 같은 방식이 작동하지 않는다.
문제점
Open graph에서 추출한 요약문에 “배우”라는 단어가 있어 맛집과 관련된 글임에도 불구하고 관련 글 목록에서 배우와 관련된 텍스트가 수도 없이 나오게 되었다...