Zadanie Wykrywacz języka MediaPipe pozwala określić język tekstu. Poniżej znajdziesz instrukcje, jak używać Wykrywacza języka w aplikacjach na Androida. Przykładowy kod opisany w tych instrukcjach jest dostępny na GitHub.
Aby zobaczyć, jak działa to zadanie, obejrzyj prezentację. Więcej informacji o możliwościach, modelach i opcjach konfiguracji tego zadania znajdziesz w sekcji Omówienie.
Przykładowy kod
Przykładowy kod narzędzia do wykrywania języka zawiera proste wdrożenie tego zadania. Ten kod pomoże Ci przetestować to zadanie i rozpocząć tworzenie własnej funkcji wykrywania języka. Przykładowy kod narzędzia do wykrywania języka możesz przejrzeć na GitHubie.
Pobieranie kodu
Z instrukcji poniżej dowiesz się, jak utworzyć lokalną kopię przykładowego kodu za pomocą narzędzia wiersza poleceń git do kontroli wersji.
Aby pobrać przykładowy kod:
- Sklonuj repozytorium git za pomocą tego polecenia:
git clone https://github.com/google-ai-edge/mediapipe-samples
- Opcjonalnie skonfiguruj instancję git tak, aby używała rozproszonego procesu płatności, aby mieć tylko pliki dla przykładowej aplikacji do wykrywania języka:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/languagedetector/android
Instrukcje konfigurowania i uruchamiania przykładowego kodu w Android Studio znajdziesz w przewodniku konfiguracji na Androida.
Kluczowe elementy
Te pliki zawierają kluczowy kod aplikacji przykładowej do klasyfikacji tekstu:
- LanguageDetectorHelper.kt – inicjuje wzorzec do wykrywania języka i wybiera model.
- ResultsAdapter.kt – obsługuje i formatuje wyniki wykrywania.
- MainActivity.kt – implementuje aplikację, w tym wywołuje funkcje
LanguageDetectorHelper
iResultsAdapter
.
Konfiguracja
W tej sekcji opisujemy najważniejsze czynności, jakie należy wykonać, aby skonfigurować środowisko programistyczne i projekty kodu z myślą o wykrywaniu języka. Ogólne informacje o konfigurowaniu środowiska programistycznego na potrzeby zadań MediaPipe, w tym o wymaganiach dotyczących wersji platformy, znajdziesz w przewodniku konfiguracji na Androida.
Zależności
Funkcja do wykrywania języka korzysta z bibliotek com.google.mediapipe:tasks-text
. Dodaj tę zależność do pliku build.gradle
swojego projektu na Androida.
Możesz zaimportować wymagane zależności za pomocą tego kodu:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Model
Zadanie MediaPipe Language Detector wymaga wytrenowanego modelu, który jest zgodny z tym zadaniem. Więcej informacji o dostępnych wytrenowanych modelach dotyczących funkcji wykrywania języka znajdziesz w sekcji omawiającej zadania w sekcji na temat modeli.
Wybierz i pobierz model, a następnie zapisz go w katalogu projektu:
<dev-project-root>/src/main/assets
Podaj ścieżkę modelu w parametrze ModelName
.
Tworzenie zadania
Aby utworzyć zadanie, możesz użyć jednej z funkcji createFrom...()
. Funkcja createFromOptions()
akceptuje opcje konfiguracji wzorca do wykrywania języka. Możesz też zainicjować zadanie za pomocą funkcji fabrycznej createFromFile()
. Funkcja createFromFile()
akceptuje ścieżkę względną lub bezwzględną do wytrenowanego pliku modelu. Więcej informacji o konfigurowaniu zadań znajdziesz w artykule o opcjach konfiguracji.
Poniższy kod pokazuje, 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ładowej funkcji LanguageDetectorHelper w klasie initDetector()
.
Opcje konfiguracji
To zadanie ma te opcje konfiguracji aplikacji na Androida:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
maxResults |
Określa opcjonalną maksymalną liczbę prognozowanych języków o najwyższych wynikach do zwrócenia. 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 metadanych modelu (jeśli istnieją). 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 nie będzie pusty, podpowiedzi języka, których kodu języka nie ma w tym zestawie, zostaną odfiltrowane. Ta opcja wzajemnie się wyklucza categoryDenylist i korzystanie z obu daje błąd. |
Dowolne ciągi | Nie ustawiono |
categoryDenylist |
Ustawia opcjonalną listę niedozwolonych kodów języków. Jeśli nie są puste, prognozy języka, których kod języka jest w tym zbiorze, zostaną odfiltrowane. Ta opcja wzajemnie się wyklucza z categoryAllowlist , a korzystanie z obu daje błąd. |
Dowolne ciągi | Nie ustawiono |
Przygotuj dane
Wykrywacz języka obsługuje dane tekstowe (String
). To zadanie obsługuje wstępne przetwarzanie danych wejściowych, w tym tokenizację i wstępne przetwarzanie tensorów. Przetwarzanie wstępne jest realizowane w ramach funkcji detect()
. Nie ma potrzeby wcześniejszego wstępnego przetwarzania tekstu wejściowego.
String inputText = "Some input text for the language detector";
Uruchamianie zadania
Wykrywacz języka wykorzystuje metodę LanguageDetector.detect()
do przetwarzania tekstu wejściowego i przewidywania jego języka. Do wykrywania treści należy użyć osobnego wątku wykonania, aby uniknąć zablokowania wątku interfejsu użytkownika Androida z aplikacją.
Poniższy kod pokazuje, jak wykonać przetwarzanie za pomocą modelu zadań za pomocą osobnego wątku wykonywania.
// 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 uruchamiania zadania możesz zobaczyć w przykładowej funkcji LanguageDetectorHelper w klasie detect()
.
Obsługa i wyświetlanie wyników
Wykrywacz języka generuje element LanguageDetectorResult
zawierający listę przewidywanych języków wraz z prawdopodobieństwem tych prognoz. Kategorie języków są zdefiniowane w modelu. Więcej informacji o używanym modelu znajdziesz w sekcji poświęconej modelom w omówieniem zadania.
Poniżej znajdziesz przykład danych wyjściowych z tego zadania:
LanguageDetectorResult:
LanguagePrediction #0:
language_code: "fr"
probability: 0.999781
Wynik jest uzyskany przez uruchomienie modelu na tekście wejściowym: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."
.
Przykład wyświetlania wyników znajdziesz w przykładowej klasie ResultsAdapter i klasie wewnętrznej ViewHolder
.