Python 语言检测指南

MediaPipe Language Detector 任务可让您识别一段文本所用的语言。以下说明介绍了如何在 Python 中使用语言检测器。GitHub 上提供了这些说明中介绍的代码示例。

您可以观看演示,了解此任务的实际运用。如需详细了解此任务的功能、模型和配置选项,请参阅概览

代码示例

Language Detector 的示例代码在 Python 中提供了此任务的完整实现,供您参考。此代码可帮助您测试此任务并开始构建您自己的语言检测功能。您可以使用网络浏览器查看、运行和修改语言检测器示例代码

初始设置

本部分介绍了专门针对使用语言检测器来设置开发环境和代码项目的关键步骤。如需了解如何为使用 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 语言检测器任务需要使用与此任务兼容的经过训练的模型。如需详细了解适用于语言检测器的经过训练的模型,请参阅任务概览模型部分。

选择并下载模型,然后将其存储在项目目录中:

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

使用 BaseOptions 对象 model_asset_path 参数指定模型的路径,如下所示:

base_options = BaseOptions(model_asset_path=model_path)

创建任务

MediaPipe Language Detector 任务使用 create_from_options 函数来设置该任务。create_from_options 函数接受配置选项的值,以设置检测器选项。您还可以使用 create_from_model_path 工厂函数初始化任务。create_from_model_path 函数接受经过训练的模型文件的相对或绝对路径。如需详细了解如何配置任务,请参阅配置选项

以下代码演示了如何构建和配置此任务。

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.LanguageDetectorOptions(base_options=base_options)

配置选项

此任务为 Python 应用提供以下配置选项:

选项名称 说明 值范围 默认值
max_results 设置要返回的得分最高的语言预测结果(可选)上限。如果此值小于零,则返回所有可用的结果。 任何正数 -1
score_threshold 设置预测分数阈值,以替换模型元数据中提供的阈值(如果有)。低于此值的结果会被拒绝。 任意浮点数 未设置
category_allowlist 设置允许的语言代码的可选列表。如果为非空,则语言代码不在此集合之外的语言预测结果将被滤除。此选项与 category_denylist 互斥,同时使用这两者会导致错误。 任何字符串 未设置
category_denylist 设置不允许使用的语言代码的可选列表。如果非空,语言代码在此集合中的语言预测将被滤除。此选项与 category_allowlist 互斥,同时使用这两者会导致错误。 任何字符串 未设置

准备数据

语言检测器支持文本 (str) 数据。该任务会处理数据输入预处理,包括标记化和张量预处理。所有预处理都在 detect 函数中处理。无需事先对输入文本进行额外的预处理。

input_text = 'The input text to be classified.'

运行任务

语言检测器使用 detect 函数来触发推断。对于语言检测,这意味着返回输入文本可能使用的语言。

以下代码演示了如何使用任务模型执行处理。

with python.text.LanguageDetector.create_from_options(options) as detector:
  detection_result = detector.detect(input_text)

处理和显示结果

语言检测器输出一个 LanguageDetectorResult,其中包含语言预测列表以及这些预测的概率。下面显示了此任务的输出数据示例:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

通过对输入文本运行模型可获得此结果:"Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."

如需查看处理和直观呈现此任务结果所需的代码示例,请参阅 Python 示例应用