MediaPipe Text Embedder 工作可讓您建立文字資料的數值表示法,以便擷取其語意意義。這項功能經常用於比較兩段文字的語意相似度,使用的方法包括餘弦相似度等數學比較技巧。這項工作會使用機器學習 (ML) 模型處理文字資料,並以浮點或量化形式,將文字資料的數值表示法輸出為高維度特徵向量清單 (也稱為嵌入向量)。
開始使用
請按照下列目標平台的導入指南操作,開始使用此工作。這些平台專屬指南將逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例:
任務詳細資料
本節說明此工作的功能、輸入內容、輸出內容和設定選項。
功能
- 輸入文字處理:針對沒有圖形內符記化的模型,支援圖形外符記化。
- 嵌入相似度計算:內建公用函式,用於計算兩個特徵向量之間的餘弦相似度。
- 量化:支援特徵向量的純量量化。
工作輸入內容 | 任務輸出 |
---|---|
Text Embedder 接受下列輸入資料類型:
|
文字嵌入器會輸出包含以下項目的嵌入清單:
|
設定選項
此工作提供下列設定選項:
選項名稱 | 說明 | 值範圍 | 預設值 |
---|---|---|---|
l2_normalize |
是否要使用 L2 正規化,將傳回的特徵向量正規化。只有在模型未包含原生 L2_NORMALIZATION TFLite 運算時,才使用這個選項。在大多數情況下,模型都已包含這個運算,因此可透過 TFLite 推論達成 L2 規格化,而不需要使用這個選項。 | Boolean |
False |
quantize |
是否應透過純量量化,將傳回的嵌入值量化為位元組。系統會隱含假設嵌入項目為單位規範,因此任何維度都保證會具有 [-1.0, 1.0] 的值。如果不是這種情況,請使用 l2_normalize 選項。 | Boolean |
False |
模型
您開始使用此任務進行開發時,我們會提供建議的預設模型。
Universal Sentence Encoder 模型 (建議)
這個模型採用雙編碼器架構,並在各種問答資料集上進行訓練。
請參考以下兩組句子:
- ("it's a charming and often affecting journey", "what a great and fantastic trip")
- ("I like my phone", "I hate my phone")
- ("這家餐廳有個很棒的噱頭"、"我們需要再確認一下計畫的細節")
第一和第二組的文字嵌入值會比第三組的嵌入值有較高的餘弦相似度,因為第一和第二組的句子分別有「旅遊情緒」和「手機意見」這個共同主題,而第三組的句子則沒有共同主題。
請注意,雖然第二組的兩個句子情緒相反,但由於它們有共同的主題,因此相似度分數很高。
模型名稱 | 輸入形狀 | 量化類型 | 版本 |
---|---|---|---|
通用句子編碼器 | 字串、字串、字串 | None (float32) | 最新 |
工作基準
以下是根據上述預先訓練模型,針對整個管道的作業基準。延遲時間結果是 Pixel 6 使用 CPU / GPU 的平均延遲時間。
模型名稱 | CPU 延遲時間 | GPU 延遲時間 |
---|---|---|
Universal Sentence Encoder | 18.21 毫秒 | - |