MediaPipe 文字嵌入工具工作可讓您建立文字資料的數值表示法,以擷取其語意含義。此功能經常使用數學比較技術 (例如 Cosine Similarity) 來比較兩個文字的語意相似度。這項工作會使用機器學習 (ML) 模型對文字資料執行作業,並將文字資料的數字表示法輸出為高維度的特徵向量清單 (又稱為嵌入向量),其提供浮點或量化格式。
開始使用
如要開始使用這項工作,請按照目標平台適用的任一實作指南操作。下列平台專用指南將逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例:
任務詳細資料
本節說明這項工作的功能、輸入、輸出和設定選項。
功能
- 輸入文字處理 - 針對不含圖內代碼化的模型,支援圖形外的代碼化。
- 嵌入相似度計算 - 內建公用程式函式,可以計算兩個特徵向量之間的餘弦相似度。
- 量化 - 支援特徵向量的純量量化。
工作輸入內容 | 工作輸出內容 |
---|---|
文字嵌入程式接受下列輸入資料類型:
|
文字嵌入程式會輸出包含以下內容的嵌入清單:
|
設定選項
這項工作有以下設定選項:
選項名稱 | 說明 | 值範圍 | 預設值 |
---|---|---|---|
l2_normalize |
是否使用 L2 正規化傳回的特徵向量。只有在模型不含原生 L2_NORMALIZATION TFLite Op 的情況下,才能使用這個選項。在大多數情況下,已經是此情況,L2 正規化是透過 TFLite 推論達成,不需要使用這個選項。 | Boolean |
False |
quantize |
是否應透過純量量化,將傳回的嵌入量化為位元組。以隱含方式假設嵌入為單位標準,因此任何維度保證在 [-1.0, 1.0] 中都有一個值。如果並非如此,請使用 l2_正規化選項。 | Boolean |
False |
模型
當您開始以這項工作進行開發時,我們會提供預設的建議模型。
Universal Sentence Encoder 模型 (建議)
這個模型採用雙重編碼器架構,並以各種問題答案資料集進行訓練。
請參考以下兩組語句:
- (「這是個迷人,而且經常影響了旅程」、「美好的旅程是美好又美好的旅程」)
- (「我喜歡我的手機」、「我討厭我的手機」
- (「這家餐廳好吃」、「我們必須仔細檢查計畫的詳細資料」)
前兩組文字嵌入的餘弦相似度會高於第三組的嵌入,因為前兩組語句分別共用一個「行程情緒」和「電話看法」主題,而第三組句子則不會有共同的主題。
請注意,雖然第二組的兩個語句具有反對的情緒,但相似度分數很高,因為這兩個語句有共同的主題。
模型名稱 | 輸入形狀 | 量化類型 | 版本 |
---|---|---|---|
Universal Sentence Encoder | 字串、字串、字串 | 無 (float32) | 最新 |
工作基準
以下為整個管道根據上述預先訓練模型所產生的工作基準。延遲時間結果是 Pixel 6 使用 CPU / GPU 的平均延遲時間。
模型名稱 | CPU 延遲時間 | GPU 延遲時間 |
---|---|---|
Universal Sentence Encoder | 18.21 毫秒 | - |