iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
AI & Data

那些在科技公司和 app 背後的資料科學系列 第 25

[Day 25] Spotify 使用 NLP 以助於 Podcast 搜尋

  • 分享至 

  • xImage
  •  

近幾年,Podcast 越發熱門,Spotify 的用戶也越來越頻繁地使用關鍵字搜尋相關節目,希望找到自己有興趣的 Podcast 內容。不過,Podcast 的標題敘述五花八門,不一定會將用戶下的關鍵字明確地放在標題文字。因此,如何讓使用者更準確地找到感興趣的收聽節目成為 Spotify 的一大挑戰。

Spotify 既有的搜尋系統是 Elasticsearch,不過他只會回傳跟搜尋關鍵字(query)完全一致的內容,即便語意相同,只要關鍵字有些許不同,就不會被 Elasticsearch 找到並回傳。因此,Spotify 轉而借助 NLP 的力量,特別是 Natural Language Search(又名 Semantic Search),以更輕易地找到相關內容。

使用到的技術為:Self-supervised learning、Transformer neural network,並也使用 Approximate Nearest Neighbor (ANN)。

Spotify 使用 Dense Retrieval 這個架構,其目標是產生和搜尋關鍵字(query)位於相同 embedding space 中的節目向量(episode vectors)。產生向量的方式是利用不同的文字來源,例如搜尋關鍵字(query)是使用其本身的輸入文字;而節目則是和其有關的所有文字資料,包含標題、節目敘述、和其來源 Podcast 的標題及敘述等等。


將文字轉成向量的方法

如上述,Spotify 需要將各種標題、敘述及搜尋關鍵字轉成向量,而最常見的模型是 BERT。不過 BERT 並不完全符合本次情境,原因有二:

幾經考量下,他們決定使用 Universal Sentence Encoder CMLM 模型(詳見 Universal Sentence Representation Learning with Conditional Masked Language Model),其優勢有二:

  • 他們使用的 self-supervised objective Conditional Masked Language Modeling (CMLM) 能夠直接生成高品質的 sentence embedding。
  • 此模型 pre-trained 於超過一百種語言,可見 TFHub

資料的來源

  1. 之前使用 Elasticsearch 搜尋過的關鍵字(query)和成功配對的節目(episode),搜集成一對資料(query, episode)。
  2. 經由過去的 logs,將用戶的搜尋關鍵字,和一開始搜尋失敗,但最後有找到的節目作為配對。其目的是要更強化用戶輸入的關鍵字,和其希望找到的節目內容之間的連結。此對資料被稱為(query_prior_to_successful_reformulation, episode)。
  3. 從節目的標題和敘述中找尋資料,產生(synthetic_query, episode)。
  4. 最後,有一些是手動為熱門節目寫的關鍵字(query)。

Training

為了訓練模型,Spotify 首先使用 pre-trained 的 Universal Sentence Encoder CMLM 架構,並產生兩套模型,分別抓取有關搜尋關鍵字(query)和節目的 embedding。兩邊的 encoders 會共享權重,並藉由 cosine similarity 計算搜尋關鍵字向量(query vector)和節目向量(episode vector)的相似程度。

In-bacth negatives

為了更有效率地訓練模型,除了成功的配對資料以外,也需要失敗的資料。然而,在資料生成階段,只有抓取成功資料,要如何讓模型也知道不能搜尋到哪些節目呢?

Spotify 使用 in-batch negatives,方法是對於每個資料配對(query, episode),隨機挑選在同個 batch 下,其他 episode 當作負面配對,藉此告知模型哪些節目是不能被預測的 。而這個也是在前幾天的文章中,提過的 Pinterest 使用的方法。


在使用這個方法後,Spotify 的用戶在 Podcast 的參與度有顯著提升。

好的,以上就是 Spotify 使用 NLP 方法以改進 Podcast 搜尋的介紹。


謝謝讀到最後的你,如果喜歡這系列,別忘了按下喜歡和訂閱,才不會錯過最新更新。
也歡迎到我的 medium 逛逛!


Reference:


上一篇
[Day 24] Pinterest 生成推薦內容的方法(四)- PinnerFormer
下一篇
[Day 26] Airbnb 使用 ResNet50 標記房間圖片
系列文
那些在科技公司和 app 背後的資料科學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言