内置 AI 的语言检测

发布时间:2024 年 9 月 24 日;最后更新时间:2025 年 5 月 20 日

Browser Support

  • Chrome: 138.
  • Edge: not supported.
  • Firefox: not supported.
  • Safari: not supported.

Source

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

Language Detector API 在客户端运行,这意味着您可以保护用户隐私。虽然可以提供执行此操作的特定库,但需要下载额外的资源。

何时使用语言检测

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

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

开始使用

运行功能检测,查看浏览器是否支持 Language Detector API。

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

模型下载

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

如需确定模型是否已准备就绪,请调用异步 LanguageDetector.availability() 函数。如果对 availability() 的响应为 downloadable,请监听下载进度并告知用户,因为下载可能需要一些时间。

如需触发下载并实例化语言检测器,请检查是否存在用户激活。然后,调用异步 LanguageDetector.create() 函数。

const detector = await LanguageDetector.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  },
});

运行语言检测器

Language Detector API 使用排名模型来确定给定文本中最有可能使用的语言。排名是一种机器学习,其目标是对商品列表进行排序。在本例中,语言检测器 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
// ...

API 游乐场

在我们的 API 游乐场中试用 Language Detector API。在文本区中输入以不同语言撰写的文本。

权限政策、iframe 和 Web Worker

默认情况下,语言检测器 API 仅适用于顶级窗口及其同源 iframe。可以使用权限政策 allow="" 属性将 API 访问权限委托给跨源 iframe:

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Language Detector API by
  setting the `allow="language-detector"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="language-detector"></iframe>

Language Detector API 在 Web Worker 中不可用。这是因为为每个工作器建立负责任的文档以检查权限政策状态非常复杂。

分享您的反馈

我们很想看看您使用 Language Detector API 构建了哪些内容。欢迎在 XYouTubeLinkedIn 上与我们分享您的网站和 Web 应用。

如果您对 Chrome 的实现有任何反馈,请提交 Chromium bug