借助内置 AI 技术,Chrome 可检测语言

发布日期:2024 年 9 月 24 日

在将文本从一种语言翻译成另一种语言之前,您必须先确定给定文本所使用的语言。以前,这需要将文本上传到云服务。借助设备端推理,您可以改进隐私保护措施。虽然可以发布执行此操作的特定库,但需要下载额外的资源。

语言检测器和翻译器 API 提案旨在通过将模型微调为此任务(并将 API 内置到浏览器中)来解决此问题。

用例示例

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

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

使用 Language Detector API

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

if ('translation' in self && 'canDetect' in self.translation) {
  // The Language Detector API is available.
}  

模型下载

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

如需查看模型是否可以使用,请调用异步 translation.canDetect() 函数。有三种可能的响应:

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

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

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

const canDetect = await translation.canDetect();
let detector;
if (canDetect === 'no') {
  // The language detector isn't usable.
  return;
}
if (canDetect === 'readily') {
  // The language detector can immediately be used.
  detector = await translation.createDetector();
} else {
  // The language detector can be used after model download.
  detector = await translation.createDetector();
  detector.addEventListener('downloadprogress', (e) => {
 console.log(e.loaded, e.total);
  });
  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 试用版,即可开始面向用户测试此 API。此源试用从 Chrome 130 到 Chrome 135。

详细了解来源试用版的运作方式

标准化工作

相应提案获得足够支持后,Language Detector API 已移至 W3C Web Incubator Community Group。此 API 是更大的 Translation API 提案的一部分。Chrome 团队向 W3C 技术架构团队征求反馈,并请 MozillaWebKit 了解特定浏览器供应商的标准排名。

欢迎分享反馈

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

资源