내장 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 웹 인큐베이터 커뮤니티 그룹으로 이동했습니다. 이 API는 더 큰 Translation API 제안서의 일부입니다.

Chrome팀은 W3C 기술 아키텍처 그룹에 의견을 요청하고 MozillaWebKit에 표준 관련 입장을 요청했습니다.

의견 공유하기

Chrome 구현에 관한 의견이 있으면 Chromium 버그를 신고하세요. Translation API GitHub 저장소에서 기존 문제에 댓글을 달거나 새 문제를 열어 Language Detector API의 API 형식에 관한 의견을 공유하세요.