Wykrywanie języka

Funkcje internetowe: Wykrywanie języka

Language Detector API to interfejs API po stronie klienta, który służy do identyfikowania języka danego ciągu tekstowego. Wykrywanie lokalnie w przeglądarce zwiększa prywatność użytkowników i ogranicza potrzebę korzystania z dużych bibliotek zewnętrznych lub kosztownych wywołań po stronie serwera.

Kluczowe przypadki użycia

  • Przygotowanie do tłumaczenia: identyfikowanie języka źródłowego przed wysłaniem tekstu do tłumacza.
  • Bezpieczeństwo i filtrowanie: wczytywanie konkretnych modeli do zadań takich jak wykrywanie toksyczności.
  • Ułatwienia dostępu: oznaczanie treści prawidłowym atrybutem lang na potrzeby czytników ekranu.
  • Lokalizacja interfejsu: dostosowywanie interfejsów aplikacji na podstawie języka wprowadzania użytkownika.

Wymagania sprzętowe i systemowe

  • System operacyjny: Windows 10/11, macOS 13 lub nowszy, Linux lub Chromebook Plus.
  • Miejsce na dane: 22 GB wolnego miejsca (model zostanie usunięty, jeśli ilość wolnego miejsca spadnie poniżej 10 GB).
  • RAM/CPU: 16 GB pamięci RAM i co najmniej 4 rdzenie procesora.
  • VRAM: co najmniej 4 GB w przypadku korzystania z GPU.

Przewodnik po implementacji

1. Zarządzanie modelami i aktywacja użytkowników

Przed próbą utworzenia instancji detektora lub uruchomienia pobierania sprawdź dostępność modelu.

OBOWIĄZKOWE: utworzenie instancji detektora języka lub wywołanie pobierania modelu za pomocą LanguageDetector.create() MUSI być inicjowane przez gest użytkownika (np. kliknięcie przycisku), aby zapobiec wystąpieniu błędu NotAllowedError, gdy model jest w stanie downloadable lub downloading.

// 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. Wykrywanie biegu

Interfejs API zwraca uporządkowaną listę potencjalnych języków ze wskaźnikiem ufności od 0.0 do 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);
}

Unikaj używania detektora w przypadku bardzo krótkich wyrażeń lub pojedynczych słów, ponieważ dokładność znacznie spada.

Bezpieczeństwo i środowisko

  • Elementy iframe: elementy iframe współdzielenia wymagają wyraźnych zasad uprawnień, aby uzyskać dostęp do interfejsu API.

    <iframe
      src="https://cross-origin.example.com/"
      allow="language-detector"
    ></iframe>
    
  • Web Workers: interfejs API nie jest obecnie dostępny w Web Workers ze względu na złożoność zasad dotyczących uprawnień.

  • Prywatność: podczas procesu wykrywania żadne dane nie są wysyłane do Google ani do innych firm.

Strategia zastępcza

Przed użyciem sprawdź, czy obiekt LanguageDetector jest dostępny w zakresie globalnym:

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

Jeśli interfejs API LanguageDetector nie jest obsługiwany lub testy dostępności zwracają wartość 'unavailable', musisz zastosować odpowiednie rozwiązanie zastępcze:

  1. Zdalny interfejs API: przekieruj żądanie wykrywania do punktu końcowego serwera lub interfejsu API w chmurze (takiego jak Vertex AI Gemini API), aby zidentyfikować język.
  2. Łagodna degradacja: wyłącz elementy i przyciski wykrywania języka i poinformuj użytkownika, że wykrywanie po stronie klienta nie jest obecnie obsługiwane w tej przeglądarce, aby zapobiec nieobsługiwanym wyjątkom lub awariom.