Python 文字嵌入指南

MediaPipe 文字嵌入工作可讓您建立文字資料的數值表示法, 擷取語意含義這些指示說明如何使用 搭配 Python 使用 Text Embedder。

進一步瞭解功能、模型和設定選項 請參閱總覽

程式碼範例

Text Embedder 的範例程式碼提供完整的實作 執行相關作業這個程式碼可協助您測試這項工作 您就可以開始建立自己的文字嵌入程式您可以查看、執行及修改 文字嵌入程式範例 程式碼 只要使用網路瀏覽器搭配 Google Colab 即可。您可以查看 這個例子 GitHub

設定

本節說明設定開發環境的重要步驟,以及 專門使用 Text Embedder 的程式碼專案。如需 設定開發環境以使用 MediaPipe 工作,包括: 平台版本需求,請參閱這份指南 Python

套件

Text Embedder 會使用 mediapipe pip 套件。您可以安裝依附元件 取代為:

$ python -m pip install mediapipe

匯入

匯入下列類別即可存取 Text Embedder 工作函式:

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 運算。在大多數情況下,這是預設情況 因此 L2 正規化會透過 TFLite 推論完成,完全不需 這個選項。 Boolean False
quantize 是否應透過以下方式,將傳回的嵌入量化為位元組: 純量量化內嵌以隱含形式被假設為單位非 因此,所有維度一定會有 [-1.0, 1.0] 的值。使用 l2_normalize 選項是如此。 Boolean False

準備資料

文字嵌入程式處理文字 (str) 資料。這個工作會處理資料輸入 預先處理作業,包括符記化和張量預先處理。

所有預先處理作業都在 embed 函式中處理。不需要 以便事先對輸入文字進行額外預先處理

input_text = "The input text to be embedded."

執行工作

Text Embedder 會使用 embed 函式觸發推論。文字 也就是傳回輸入文字的嵌入向量

下列程式碼示範如何使用工作模型執行處理程序。

# Perform text embedding on the provided input text.
embedding_result = text_embedder.embed(input_text)

處理及顯示結果

Text Embedder 會輸出 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])