Web 语言检测指南

借助 MediaPipe Language Detector 任务,您可以识别一段文本的语言。以下说明介绍了如何将 Language Detector 用于 Web 和 JavaScript 应用。 这些说明中介绍的代码示例可在 GitHub上找到。

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

代码示例

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

设置

本部分介绍了设置开发环境和代码项目以专门使用 Language Detector 的关键步骤。如需了解有关 设置开发环境以使用 MediaPipe 任务的一般信息(包括 平台版本要求),请参阅 Web 设置指南

JavaScript 软件包

Language Detector 代码可通过 @mediapipe/tasks-text 软件包获取。您可以从 平台 设置指南中提供的链接查找和下载这些库。

您可以使用以下代码进行本地暂存,并使用以下命令安装所需的软件包:

npm install @mediapipe/tasks-text

jsDelivr

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
    crossorigin="anonymous"></script>
</head>

模型

MediaPipe Language Detector 任务需要与此任务兼容的经过训练的模型。如需详细了解 Language Detector 的可用经过训练的模型,请参阅 任务概览的 模型部分

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

<dev-project-root>/app/shared/models

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

baseOptions: {
        modelAssetPath: `/app/shared/models/language_detector.tflite`
      }

创建任务

使用 Language Detector LanguageDetector.createFrom...() 函数之一来准备任务以运行推理。您可以将 createFromModelPath() 函数与经过训练的模型文件的相对路径或绝对路径搭配使用。以下代码示例演示了如何使用 createFromOptions() 函数。如需详细了解如何配置任务,请参阅 配置选项

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

async function createDetector() {
  const textFiles = await FilesetResolver.forTextTasks(
      "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  languageDetector = await languageDetector.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-models/language_detector/language_detector/float32/1/language_detector.tflite`
      },
    }
  );
}
createDetector();

配置选项

此任务具有以下适用于 Web 和 JavaScript 应用的配置选项:

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

准备数据

Language Detector 可处理文本 (string) 数据。此任务会处理数据输入预处理,包括分词和张量预处理。 所有预处理都在 detect 函数中处理。无需事先对输入文本进行额外的预处理。

const inputText = "The input text for the detector.";

运行任务

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

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

// Wait to run the function until inner text is set
const detectionResult = languageDetector.detect(inputText);

处理和显示结果

Language Detector 任务会输出一个 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."运行模型获得的。

如需查看处理此任务的结果并将其可视化的所需代码示例,请参阅 示例