Przewodnik wykrywania języka w Androidzie

Zadanie MediaPipe Language Detector pozwala określić język tekstu. Te instrukcje pokazują, jak używać Wykrywacza języka z aplikacjami na Androida. Kod przykład opisany w tych instrukcjach jest dostępny GitHub

Aby zobaczyć, jak działa to zadanie, wyświetl demo. Więcej informacji o funkcjach, modelach i opcjach konfiguracji zapoznaj się z Przeglądem.

Przykładowy kod

Przykładowy kod Wykrywanie języka pozwala w prosty sposób . Ten kod pomoże Ci przetestować to zadanie i zacząć tworząc własną funkcję wykrywania języka. Możesz przeglądać Przykładowy kod wykrywania języka w GitHubie.

Pobieranie kodu

Poniżej znajdziesz instrukcje tworzenia lokalnej kopii przykładu. za pomocą narzędzia wiersza poleceń git do kontroli wersji.

Aby pobrać przykładowy kod:

  1. Sklonuj repozytorium git za pomocą tego polecenia:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Opcjonalnie możesz skonfigurować instancję git tak, aby wykorzystywała rozproszony proces płatności, masz więc tylko pliki przykładowej aplikacji Wykrywacz języka:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

Aby dowiedzieć się, jak skonfigurować i uruchomić przykład w Android Studio, znajdziesz w sekcji z przykładowymi instrukcjami konfiguracji kodu Przewodnik po konfiguracji na Androida

Kluczowe elementy

Te pliki zawierają kluczowy kod klasyfikacji tekstu przykładowa aplikacja:

Konfiguracja

W tej sekcji opisujemy najważniejsze czynności związane z konfigurowaniem środowiska programistycznego oraz w projektach kodu służących do wykrywania języka. Ogólne informacje na temat: skonfigurować środowisko programistyczne do korzystania z zadań MediaPipe, w tym wymagań wersji platformy, patrz Przewodnik po konfiguracji na Androida

Zależności

Wykrywacz języka korzysta z bibliotek com.google.mediapipe:tasks-text. Dodaj to zależności od pliku build.gradle projektu programowania aplikacji na Androida. Wymagane zależności możesz zaimportować przy użyciu tego kodu:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

Model

Zadanie wykrywania języka MediaPipe wymaga wytrenowanego modelu zgodnego z tym zadanie. Więcej informacji o dostępnych wytrenowanych modelach z Wykrywaczem języka znajdziesz w sekcji artykułu zapoznaj się z omówieniem zadania sekcją Modele.

Wybierz i pobierz model, a następnie zapisz go w katalogu projektu:

<dev-project-root>/src/main/assets

Określ ścieżkę modelu w parametrze ModelName.

Tworzenie zadania

Do utworzenia zadania możesz użyć jednej z funkcji createFrom...(). Funkcja createFromOptions() akceptuje opcje konfiguracji dla języka detektorem. Możesz też zainicjować zadanie, używając fabryki createFromFile() . Funkcja createFromFile() akceptuje ścieżkę względną lub bezwzględną do z plikiem wytrenowanego modelu. Więcej informacji o konfigurowaniu zadań znajdziesz w artykule Opcje konfiguracji:

Poniższy kod ilustruje, jak utworzyć i skonfigurować to zadanie.

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

Przykład tworzenia zadania znajdziesz w przykładowym kodzie LanguageDetectorHelper funkcji initDetector() klasy.

Opcje konfiguracji

To zadanie zawiera te opcje konfiguracji aplikacji na Androida:

Nazwa opcji Opis Zakres wartości Wartość domyślna
maxResults Ustawia opcjonalną maksymalną liczbę prognoz dotyczących najlepiej ocenianych języków na . Jeśli ta wartość jest mniejsza niż 0, zwracane są wszystkie dostępne wyniki. Dowolne liczby dodatnie -1
scoreThreshold Ustawia próg wyniku prognozy, który zastępuje próg podany w polu metadane modelu (jeśli występują). Wyniki poniżej tej wartości zostały odrzucone. Dowolna liczba zmiennoprzecinkowa Nie ustawiono
categoryAllowlist Ustawia opcjonalną listę dozwolonych kodów języków. Jeśli pole nie jest puste, prognozy dotyczące języka, których kod języka nie znajduje się w tym zestawie, zostaną zostały odfiltrowane. Ta opcja wyklucza się wzajemnie z: categoryDenylist i użycie obu spowoduje błąd. Dowolne ciągi Nie ustawiono
categoryDenylist Ustawia opcjonalną listę niedozwolonych kodów języków. Jeśli niepuste, prognozy dotyczące języka, których kod języka znajduje się w tym zestawie, zostaną odfiltrowane na zewnątrz. Ta opcja nie działa z: categoryAllowlist i użycie obydwu spowoduje błąd. Dowolne ciągi Nie ustawiono

Przygotuj dane

Wykrywanie języka obsługuje dane tekstowe (String). Zadanie obsługuje wprowadzanie danych w tym wstępnego przetwarzania danych, w tym tokenizacji i tensorów. Wszystkie wstępne przetwarzanie jest obsługiwane w ramach funkcji detect(). Nie ma potrzeby dodatkowego wstępnego przetwarzania tekstu wejściowego.

String inputText = "Some input text for the language detector";

Uruchamianie zadania

Wykrywanie języka używa metody LanguageDetector.detect() do przetwarzania danych wejściowych i prognozować język tekstu. Użyj oddzielnego wykonania wątek wykonywania wykrywania w celu uniknięcia zablokowania użytkownika Androida z Twoją aplikacją.

Ten kod pokazuje, jak wykonać przetwarzanie za pomocą zadania używając osobnego wątku wykonania.

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

Przykład uruchomienia zadania znajdziesz w przykładowym kodzie LanguageDetectorHelper funkcji detect() klasy.

Obsługa i wyświetlanie wyników

Wykrywanie języka zwraca wynik LanguageDetectorResult składający się z listy z prognozami językowymi oraz prawdopodobieństwo ich uzyskania. kategorie językowe zdefiniowane w modelu, zobacz przegląd zadania Sekcja Modele, w której znajdziesz szczegółowe informacje o używanym modelu.

Poniżej znajdziesz przykładowe dane wyjściowe tego zadania:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

Ten wynik uzyskano przez uruchomienie modelu na tekście wejściowym: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."

W przykładowym kodzie możesz zobaczyć, jak wyświetlić wyniki ResultsAdapter i ViewHolder klasy wewnętrznej.