Deep Natural Language Processing for LinkedIn Search
本文為 “Deep Natural Language Processing for LinkedIn Search” (2021.08) 的論文重點摘要
論文全文參考
Description
Goal
- 討論在搜尋引擎的 5+1 項 NLP 任務實務上的作法
- 在重視延遲問題的搜尋任務上, 如何導入 BERT
- 三大挑戰
- 延遲性:搜尋引擎最重要的問題之一。
- 穩定性:這邊主要是提到 DL overfit 的問題。
- 有效性:找出適用各種任務的最佳解法, 可能是 rule base 或 DL model。
Search system overview
大致流程為:
User 輸入搜尋句 → 檢查搜尋句完整性 → 判斷搜尋意圖 → 找尋相關候選文章 → 輸出相關候選文章排序
六大搜尋任務
Query Intention Prediction
- Goal: 判斷 User 搜尋的目的是屬於哪一個既有標籤分類 (7類)
- NLP task: Text Classification
- Difficulty: 搜尋內容比一般文章來的短造成更嚴重的歧義問題
- Example:
michael dell
(person names),dell engineer jobs
(company)
- Example:
- Solution (short-term)
- Method: 使用 TextCNN 的作法, backbone 使用了 GloVe 作為 embedding, 並結合了手工特徵(用戶行為, 文章統計, search log)
- Finding
- 不用手工特徵, 準確度掉了 0.4%
- LSTM 雖然準度有提升 0.2%, 但延遲率較 CNN 增加了 0.5ms
- Solution (long-term)
- Method: 將 backbone 換成 LiBERT (Linkedin BERT)
- Finding
- 準確度較 CNN 提升了 3.28%, 但沒有比較延遲率的結果
Query Tagging
- Goal: 抓出 query 中包含的 entity
- NLP task: NER
- Difficulty: entity 有嵌套以及歧異的問題
- Example:
research scientist
(title),research
(skill),scientist
(title)
- Example:
- Solution
- Feature: 分為 char based, word based, lexicon base
- Method: 使用 semi-markov conditional random field (SCRF)
- Finding: 由於 query 本身已經很短了, 還要再從中抽取 entity 導致大多 DL 模型效果不如建立辭典的方式 (lexicon)
Document Ranking
- Goal: 給定 Query, 從一堆文章找出相關度排序
- NLP task: Semantic Textual Similarity
- Difficulty: 延遲性 & 持續有效性
- Solution
- Method
- Step 1: 提取 Query 和一份文檔有多個區塊 embedding
- Step 2: 計算 Query embedding 和各區塊 embedding 的 cos similarity
- Step 3: 將 cos 特徵和手工特徵 concat 起來
- Step 4: 建立 learning-to-rank layer 來計算此文檔的分數
- Supplementary
- learning-to-rank layer
- Reference:Neural Ranking Models with Multiple Document Fields
- Sign:
- : matching netword
- : 集成 D 文檔的各區塊
- : query representation
- : doc representation
- : D 文檔的各個 field representation
- 文檔的檢索分數
- learning-to-rank layer
- Method
- Finding: 手工特徵是在個任務的實驗上屬於強力特徵。個人抱持懷疑的態度,畢竟驗證指標使用的是 NDCG, 而非衡量文章相似度作為指標。
Query Auto Completion
- Goal: 在 user 輸入關鍵字的時, 同時推薦可能想輸入的候選字
- NLP task: Language Generation
- Difficulty: 延遲性
- Solution
- Candidate Generation
- 對於過往出現過的關鍵詞, 可以用記憶體存取的方式直接讀取
- 對於未出現的關鍵詞, 採用啟發式的方式產生候選字
- 啟發式結果可以從三個方式去得
- 一定時間內, 同個 session 接續查詢的 query
- (水平) 同用戶輸入的兩個 query 有 co-word
- (垂直) 不同用戶兩個 query 同時出現
- Reference: Mitra and Craswell (2015)
- 啟發式結果可以從三個方式去得
- Candidate Ranking
- LSTM 計算後面要接龍字的分數值
- Candidate Generation
Query Suggestion
- Goal: 在搜尋結束時, 給予 user 下個搜尋字推薦, 類似推薦文章的想法
- NLP task: Machine Translation (Seq2Seq)
- Difficulty: 延遲性, 穩定性
- Solution
- seq2seq model
- Finding
- 此任務也可以用來做 query rewrite, 也許可以避免一些 user query 的冷門字
- Example:
software developer
→software engineer
- Example:
- 此任務也可以用來做 query rewrite, 也許可以避免一些 user query 的冷門字
BERT Pretrained
- Goal: 訓練基於自己 domain 的 BERT model
- NLP task: Eembedding
- Difficulty: 延遲性
- Solution
- 收集自有的 domain data
- 使用輕量的 BERT 架構 (12層 → 6層), 以利加快推論速度
Conclusion
- 依據任務 & 資料特性決定要使用甚麼樣的 model, 不一定都要套用 DL model
- 文中指出在 Query Tagging 和 Query Auto Completion (seen) 上 DL model 沒有 benefit
- 對於延遲性的建議
- 重新設計算法 (e.g., query auto completion)
- 平行計算 (e.g., query suggestion)
- Embedding pre-sum (e.g., document ranking)
- Two stage ranking (e.g., document ranking)
- 對於穩定性的建議
- Check training data, 剔除高度相似的資料
- Reuse 手工特徵, 這邊指的是避免過度依賴文字相關的結果