언어 감지

웹 기능: 언어 감지기

Language Detector API는 지정된 텍스트 문자열의 언어를 식별하도록 설계된 클라이언트 측 웹 API입니다. 브라우저에서 로컬로 감지를 수행하므로 사용자 개인 정보 보호가 강화되고 무거운 외부 라이브러리나 비용이 많이 드는 서버 측 호출의 필요성이 줄어듭니다.

주요 사용 사례

  • 번역 준비: 번역사에게 텍스트를 보내기 전에 출발어를 식별합니다.
  • 안전 및 필터링: 유해성 감지와 같은 작업을 위해 특정 모델을 로드합니다.
  • 접근성: 스크린 리더를 위해 올바른 lang 속성으로 콘텐츠에 라벨을 지정합니다.
  • UI 현지화: 사용자의 입력 언어에 따라 애플리케이션 인터페이스를 조정합니다.

하드웨어 및 시스템 요구사항

  • OS: Windows 10/11, macOS 13 이상, Linux 또는 Chromebook Plus
  • 저장용량: 22GB의 여유 공간 (공간이 10GB 미만으로 줄어들면 모델이 삭제됨)
  • RAM/CPU: 16GB RAM 및 4개 이상의 CPU 코어
  • VRAM: GPU를 사용하는 경우 4GB 이상

구현 가이드

1. 모델 관리 및 사용자 활성화

감지기를 인스턴스화하거나 다운로드를 트리거하기 전에 모델 사용 가능 여부를 확인합니다.

필수: 모델이 downloadable 또는 downloading 상태일 때 NotAllowedError를 방지하려면 언어 감지기를 인스턴스화하거나 LanguageDetector.create()로 모델 다운로드를 트리거하는 작업은 사용자 동작 (예: 버튼 클릭)으로 시작해야 합니다.

// Check if the model is available or downloadable
const availability = await LanguageDetector.availability();

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

2. 달리기 감지

API는 0.0에서 1.0 사이의 신뢰도 점수와 함께 순위가 지정된 잠재적 언어 목록을 반환합니다.

const someUserText = 'Hallo und herzlich willkommen!';
const results = await detector.detect(someUserText);

for (const result of results) {
  // result.detectedLanguage (e.g., 'de')
  // result.confidence (e.g., 0.999)
  console.log(result.detectedLanguage, result.confidence);
}

매우 짧은 구문이나 단일 단어에 감지기를 사용하면 정확도가 크게 떨어지므로 사용하지 마세요.

보안 및 환경

  • iframe: 교차 출처 iframe은 API에 액세스하기 위해 명시적인 권한 정책이 필요합니다.

    <iframe
      src="https://cross-origin.example.com/"
      allow="language-detector"
    ></iframe>
    
  • 웹 작업자: 권한 정책의 복잡성으로 인해 현재 웹 작업자에서 API를 사용할 수 없습니다.

  • 개인 정보 보호: 감지 과정에서 Google 또는 서드 파티로 데이터가 전송되지 않습니다.

대체 전략

사용하기 전에 전역 범위에서 LanguageDetector 객체를 사용할 수 있는지 확인하세요.

if ('LanguageDetector' in self) {
  // The Language Detector API is supported.
} else {
  // Execute fallback strategy
}

LanguageDetector API가 지원되지 않거나 사용 가능 여부 확인에서 'unavailable'를 반환하는 경우 다음과 같이 적절하게 대체해야 합니다.

  1. 원격 API 대체: 감지 요청을 서버 엔드포인트 또는 Cloud API (예: Vertex AI Gemini API)로 리디렉션하여 언어를 식별합니다.
  2. 단계적 성능 저하: 언어 감지 요소/버튼을 사용 중지하고 이 브라우저에서 현재 클라이언트 측 감지가 지원되지 않음을 사용자에게 알려 처리되지 않은 예외나 비정상 종료를 방지합니다.