Python 文本嵌入指南

借助 MediaPipe Text Embedder 任务,您可以创建文本数据的数字表示形式, 捕获其语义含义。以下说明介绍了如何使用 Python 版文本嵌入器。

如需详细了解功能、模型和配置选项 部分,请参阅概览

代码示例

文本嵌入器的示例代码提供了上述代码的完整实现, 供您参考。此代码可帮助您测试此任务, 开始构建自己的文本嵌入器。您可以查看、运行和修改 文本嵌入器示例 代码 只需网络浏览器即可访问 Google Colab。您可以查看 这个示例位于 GitHub

设置

本部分介绍了设置开发环境和 专门用于文本嵌入器的代码项目。有关 设置开发环境以使用 MediaPipe 任务,包括 平台版本要求,请参阅适用于 Python

<ph type="x-smartling-placeholder">

软件包

文本嵌入器使用 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 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 操作大多数情况下已经如此 因此,L2 归一化通过 TFLite 推理实现,无需 。 Boolean False
quantize 是否应通过 标量量化。嵌套被隐式假定为单位范数, 因此任何维度的值都必须在 [-1.0, 1.0] 范围内。使用 则使用 l2_normalize 选项。 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])