[융합연구팀 송지현]
Deep Natural Language Processing for LinkedIn Search Systems
최근 챗봇 시스템의 구조화와 최적화 설계가 얼마나 효과적으로 적용하는지를 Rasa Open Source 를 공부하면서 느끼고 있습니다. 그 안에서도 Intent와 entity의 설계 및 추출 또한 매우 중요하게 다가오는데요. 이는 검색엔진 분야에서도 크게 다르지 않습니다. 서치 중 재미있는 논문이 있어서 간략하게 리뷰해 보려고 합니다.
Natural language processing에서의 주요 목적중 하나는 user message에서 구조화된 정보를 추출하는 것입니다. 검색 엔진은 유저 쿼리에서 정보를 추출하여 그 쿼리에 맞는 답변을 제공하는 것입니다.
본 논문에서는 검색엔진을 효율적이고 견고하게 만드는 방법을 5가지의 컴포넌트로 나누어 소개를 하고 있으며, 챗봇에서도 중요한 Intents와 entity의 활용법도 함께 소개하고 있습니다.
검색 시스템을 견고하게 만들기 위해서는 검색에 걸리는 대기 시간, 견고함, 효율성 이 세가지를 중요하게 생각할 수 있습니다. 이 세 가지의 성능을 높히기 위해 본 연구에서는 5가지 시스템의 체계화된 구조를 통해 정해진 순서로 실험을 진행해 봤습니다.
검색엔진 5가지 컴포넌트
Classification(Query Intent) — 링크드인을 사용해본 유저라면 알겠지만 구인, 구직, 헬프 센터 검색 등의 큰 의미의 검색어를 많이 사용합니다. 우선 용어로 구분하여 쿼리의 의도를 분류합니다. 이 과정에서 방법론은 CNN and LSTM models을 사용하여 연구를 진행해 보고 이 중 둘 중 대기시간이 짧은 CNN을 선택하여 사용하기로 합니다.
Sequential Labeling(Query Tagging) — 의도에 맞는 엔티티를 만들어 더 좋은 검색결과를 얻을 수 있는 새로운 쿼리를 생성할 수 있도록 태깅합니다. CRF, SCRF(current system), LSTM-SCRF model를 사용하였습니다.
Ranking(Search Ranking) – 최대한 효율적이고 더 높은 클릭율을 파악해서 재정렬 합니다. 처음엔 CNN을 사용하고 나중에 수작업 피처들을 넣어 문서의 스코어를 예측합니다.
Sequence Generation(Query Suggestion) — 입력 쿼리와 재구성된 쿼리에 최소 하나의 공통 단어를 가져야 하고, 검색어의 빈도수와 재구성을 파악하여 사람들이 무엇을 찾고 있었는지 무엇을 검색했는지 등을 판단하고 쿼리를 제안해 줍니다. 그러나 이 방법은 소요 시간이 길어서 검색 결과 순위와 병렬로 제공합니다. 그 후 시간을 절약할 수 있었습니다.
Sequence Completion(Auto-Completion) — 쿼리 자동 완성 기능의 소요 시간이 대부분 정규화에서 발생하므로 본 연구에서는 정규화 되지 않은 가중치를 내보냄으로 시간을 절약합니다.
검색엔진 전체 시스템 구성도
쿼리가 들어오면 아래 순서로 검색 엔진이 작동됩니다.
- Language Understanding : 쿼리의 의도 파악하고, 엔티티의 명확화 그리고 몇 가지 부족한 부분을 추가하는 방식으로 기타 세부 정보를 식별하고 처리합니다.
- Language Generation : 자동완성, 스펠 체크, 쿼리를 제안하여 언어생성 등의 과정을 거칩니다.
- Doc Retrieval & Ranking : 여러 개의 문서에서 검색하고 그 중에 중요한 것(사용자의 클릭률 등)의 순위를 메겨서 계산합니다.
본 논문에서 Deep NLP는 자연어의 생성과 풍성하게 패러프레이징을 해서 의역 또한 가능해 정확도 측면에서 높은 성능을 낸다고 말하고 있습니다.
검색엔진에서 가장 큰 이슈인 대기 시간을 극복하기 위해서도 여러가지 방법을 제안하고 있는데요.
알고리즘 재설계, 병렬 컴퓨팅, 사전 학습된 임베딩, 두 가지 경로의 랭킹 계산을 적용하는 것이 그 대안이라고 말하고 있습니다.
또 검색의 견고함을 위해서는 학습데이터의 노이즈 제거와 딥러닝 기법과 함께 수작업 피처를 활용하는 방식을 제안하고 있습니다.
다섯 가지 컴포넌트를 거쳐서 성능이 높은 검색 엔진을 만드는 것이 본 논문의 기여점이며 해당 컴포넌트 하나하나 특색을 파악하고 적용하자면 챗봇의 정보 입력 및 또는 외부 지식을 유입하는 등에서도 활용이 가능할 것이라고 생각이 됩니다.
논문 : https://arxiv.org/pdf/2108.08252.pdf