内置 AI 的语言检测

发布时间:2024 年 9 月 24 日;上次更新时间:2024 年 12 月 10 日

在将文本从一种语言翻译成另一种语言之前,您必须先确定给定文本所使用的语言。以前,翻译需要将文本上传到云服务,在服务器上执行翻译,然后下载结果。

Language Detector API 会在设备端进行推理,以便您改善隐私保护状况。虽然可以发布执行此操作的特定库,但需要下载额外的资源。

可用性

注册源代码试用

如需开始使用 Language Detector API,请按以下步骤操作:

  1. 确认您已阅读并同意遵守 Google 的《生成式 AI 使用限制政策》
  2. 前往 Language Detector API 源试用
  3. 点击注册,然后填写表单。
    • 网站来源字段中,提供您的来源或扩展程序 ID chrome-extension://YOUR_EXTENSION_ID
  4. 如需提交,请点击注册
  5. 复制提供的令牌,并将其添加到您要启用试用版的来源或扩展程序文件中的每个网页。
  6. 开始使用 Language Detection API

详细了解如何开始使用来源试用

添加了对 localhost 的支持

如需在源试用期间在 localhost 上访问 Language Detection API,您必须将 Chrome 更新到最新版本。然后,请按下列步骤操作:

  1. 前往chrome://flags/#optimization-guide-on-device-model
  2. 选择 Enabled BypassPerfRequirement。这会跳过性能检查和 VRAM 要求,这可能会导致 Gemini Nano 无法在您的设备上下载。
  3. 前往chrome://flags/#language-detection-api
  4. 选择已启用
  5. 点击重新启动或重启 Chrome。

用例示例

Language Detector API 主要适用于以下场景:

  • 确定输入文本的语言,以便进行翻译。
  • 确定输入文本的语言,以便加载适用于语言特定任务(例如毒性检测)的正确模型。
  • 确定输入文本的语言,以便正确标记文本,例如在在线社交网络网站中。
  • 确定输入文本的语言,以便相应地调整应用界面。例如,在比利时网站上,仅显示与法语用户相关的界面。

使用 Language Detector API

Language Detector API 是 Translator API 更大的家族的一部分。首先,运行功能检测,看看浏览器是否支持 Language Detector API。

if ('ai' in self && 'languageDetector' in self.ai)
  // The Language Detector API is available.
}  

模型下载

语言检测依赖于针对检测语言的特定任务进行微调的模型。虽然该 API 是在浏览器中构建的,但当网站首次尝试使用该 API 时,系统会按需下载模型。在 Chrome 中,与其他模型相比,此模型非常小。事实上,由于 Chrome 浏览器功能也使用此模型,因此它可能已经存在。

如需查看模型是否已准备就绪,请调用异步 self.ai.languageDetector.capabilities() 函数并检查 available 字段。有三种可能的响应:

  • 'no':当前浏览器支持 Language Detector API,但目前无法使用。例如,由于没有足够的可用磁盘空间来下载模型。
  • 'readily':当前浏览器支持 Language Detector API,并且可以立即使用。
  • 'after-download':当前浏览器支持 Language Detector API,但需要先下载模型。

如需触发下载并实例化语言检测器,请调用异步 self.ai.languageDetector.create() 函数。如果对 capabilities() 的响应为 'after-download',最佳实践是监听下载进度,以便在下载需要时间时通知用户。

如需了解是否可以检测到给定语言,请调用 languageAvailable() 函数。

const languageDetectorCapabilities = await self.ai.languageDetector.capabilities();
languageDetectorCapabilities.languageAvailable('es');
// 'readily'

以下示例演示了如何初始化语言检测器。

const languageDetectorCapabilities = await self.ai.languageDetector.capabilities();
const canDetect = languageDetectorCapabilities.capabilities;
let detector;
if (canDetect === 'no') {
  // The language detector isn't usable.
  return;
}
if (canDetect === 'readily') {
  // The language detector can immediately be used.
  detector = await self.ai.languageDetector.create();
} else {
  // The language detector can be used after model download.
  detector = await self.ai.languageDetector.create({
    monitor(m) {
      m.addEventListener('downloadprogress', (e) => {
        console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
      });
    },
  });
  await detector.ready;
}

运行语言检测器

Language Detector API 使用排名模型来确定给定文本最有可能使用的是哪种语言。排名是一种机器学习,其目标是对项列表进行排序。在本例中,Language Detector API 会按概率从高到低对语言进行排名。

detect() 函数可以返回第一个结果(最可能的答案),也可以按置信度对排名候选进行迭代。这将作为 {detectedLanguage, confidence} 对象的列表返回。confidence 级别以介于 0.0(最低置信度)和 1.0(最高置信度)之间的值表示。

const someUserText \= 'Hallo und herzlich willkommen\!';
const results \= await detector.detect(someUserText);
for (const result of results) {
  // Show the full list of potential languages with their likelihood, ranked
  // from most likely to least likely. In practice, one would pick the top
  // language(s) that cross a high enough threshold.
  console.log(result.detectedLanguage, result.confidence);
}
// (Output truncated):
// de 0.9993835687637329
// en 0.00038279531872831285
// nl 0.00010798392031574622
// ...

演示

在我们的演示中预览 Language Detector API。在文本区域中输入不同语言的文本。

标准化工作

相应提案获得足够支持后,Language Detector API 已移至 W3C Web Incubator Community Group。该 API 是更大的 Translation API 提案的一部分。

Chrome 团队向 W3C 技术架构组征求了反馈,并询问了 MozillaWebKit 的标准立场。

分享反馈

如果您对 Chrome 的实现有任何反馈,请提交 Chromium bug。如需针对 Language Detector API 的 API 形状提供反馈,请在 Translation API GitHub 代码库中对现有问题进行评论或创建新问题。