MediaPipe 文字嵌入工具工作可讓您建立文字資料的數值表示法,以擷取其語意含義。以下操作說明將說明如何搭配 Python 使用文字嵌入工具。
如要進一步瞭解這項工作的功能、模型和設定選項,請參閱總覽。
程式碼範例
文字嵌入程式的範例程式碼提供此工作在 Python 中的完整實作,供您參考。這個程式碼可協助您測試這項工作,並開始建構自己的文字嵌入程式。有了 Google Colab,只要使用網路瀏覽器即可查看、執行及編輯文字嵌入程式範例程式碼。您可以前往 GitHub 查看此範例的原始碼。
設定
本節說明設定開發環境的重要步驟,以及專門用於使用文字嵌入工具的程式碼專案。如需瞭解如何使用 MediaPipe 工作設定開發環境的一般資訊,包括平台版本需求,請參閱 Python 設定指南。
套裝組合
文字嵌入程式使用 mediapipe pip 套件。您可以使用以下項目安裝依附元件:
$ python -m pip install mediapipe
匯入
匯入下列類別,即可存取文字嵌入工具工作函式:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import text
型號
MediaPipe 文字嵌入程式工作需要與這項工作相容的已訓練模型。如要進一步瞭解文字嵌入工具的可用已訓練模型,請參閱工作總覽「模型」一節。
選取並下載模型,然後儲存至本機目錄中。您可以使用建議的 UniversalSentenceEncoder 模型。
model_path = '/absolute/path/to/universal_sentence_encoder.tflite'
在 model_asset_path
參數中指定模型的路徑,如下所示:
base_options = BaseOptions(model_asset_path=model_path)
建立工作
MediaPipe 文字嵌入程式工作會使用 create_from_options
函式設定工作。create_from_options
函式可接受設定選項的值,用來設定嵌入工具選項。您也可以使用 create_from_model_path
工廠函式來初始化工作。create_from_model_path
函式接受訓練模型檔案的相對或絕對路徑。如要進一步瞭解設定選項,請參閱設定選項一文。
下列程式碼示範如何建構及設定這項工作。
import mediapipe as mp
BaseOptions = mp.tasks.BaseOptions
TextEmbedder = mp.tasks.text.TextEmbedder
TextEmbedderOptions = mp.tasks.text.TextEmbedderOptions
# For creating a text embedder instance:
options = TextEmbedderOptions(
base_options=BaseOptions(model_asset_path=model_path),
quantize=True)
text_embedder = TextEmbedder.create_from_options(options)
設定選項
這項工作的 Python 應用程式設定選項如下:
選項名稱 | 說明 | 值範圍 | 預設值 |
---|---|---|---|
l2_normalize |
是否使用 L2 正規化傳回的特徵向量。只有在模型不含原生 L2_NORMALIZATION TFLite Op 的情況下,才能使用這個選項。在大多數情況下,已經是此情況,L2 正規化是透過 TFLite 推論達成,不需要使用這個選項。 | Boolean |
False |
quantize |
是否應透過純量量化,將傳回的嵌入量化為位元組。以隱含方式假設嵌入為單位標準,因此任何維度保證在 [-1.0, 1.0] 中都有一個值。如果並非如此,請使用 l2_正規化選項。 | Boolean |
False |
準備資料
文字嵌入程式適用於文字 (str
) 資料。這項工作會處理資料輸入預先處理作業,包括代碼化和張量預先處理。
所有預先處理作業都會在 embed
函式中處理。不需要事先對輸入文字進行額外的預先處理。
input_text = "The input text to be embedded."
執行工作
文字嵌入程式使用 embed
函式觸發推論。如果是嵌入文字,這代表傳回輸入文字的嵌入向量。
下列程式碼示範如何使用工作模型執行處理作業。
# Perform text embedding on the provided input text.
embedding_result = text_embedder.embed(input_text)
處理並顯示結果
文字嵌入程式會輸出 TextEmbedderResult
,其中包含輸入文字的嵌入清單 (浮點或量化量化)。
以下為這項工作的輸出資料範例:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
您可以使用 TextEmbedder.cosine_similarity
函式比較兩個嵌入的語意相似度。相關範例請看以下程式碼。
# Compute cosine similarity.
similarity = TextEmbedder.cosine_similarity(
embedding_result.embeddings[0],
other_embedding_result.embeddings[0])