Python のテキスト エンベディング ガイド

MediaPipe Text Embedder タスクを使用すると、テキストデータの数値表現を作成して、セマンティックな意味をキャプチャできます。ここでは、Python で Text Embedder を使用する方法について説明します。

このタスクの機能、モデル、構成オプションの詳細については、概要をご覧ください。

サンプルコード

参考用に、Text Embedder のサンプルコードでは、このタスクの完全な実装を Python で提供しています。このコードは、このタスクをテストして独自のテキスト エンベダーの作成を開始する際に役立ちます。Google Colab のウェブブラウザを使用して、Text Embedder のサンプルコードを表示、実行、編集できます。この例のソースコードは 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 Text Embedder タスクには、このタスクと互換性のあるトレーニング済みモデルが必要です。Text Embedder で利用可能なトレーニング済みモデルの詳細については、タスクの概要のモデル セクションをご覧ください。

モデルを選択してダウンロードし、ローカル ディレクトリに保存します。推奨されている UniversalSentenceEncoder モデルを使用できます。

model_path = '/absolute/path/to/universal_sentence_encoder.tflite'

次のように、model_asset_path パラメータ内にモデルのパスを指定します。

base_options = BaseOptions(model_asset_path=model_path)

タスクを作成する

MediaPipe Text Embedder タスクは、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_normalize オプションを使用します。 Boolean False

データの準備

Text Embedder は、テキスト(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 関数を使用して、2 つのエンベディングの意味的類似性を比較できます。例として、次のコードをご覧ください。

# Compute cosine similarity.
similarity = TextEmbedder.cosine_similarity(
  embedding_result.embeddings[0],
  other_embedding_result.embeddings[0])