借助 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
<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."运行模型获得的。
如需查看处理此任务的结果并将其可视化的所需代码示例,请参阅 示例。