Za pomocą ML Kit możesz określić język ciągu tekstu. Możesz uzyskać najbardziej prawdopodobny język ciągu znaków, a także wyniki ufności dla wszystkich możliwych języków ciągu znaków.
ML Kit rozpoznaje tekst w ponad 100 różnych językach w ich oryginalnym piśmie. Dodatkowo tekst zapisany alfabetem łacińskim może być rozpoznawany w przypadku języków arabskiego, bułgarskiego, chińskiego, greckiego, hindi, japońskiego i rosyjskiego. Zobacz pełną listę obsługiwanych języków i skryptów.
Łączenie w pakiety | Odłączone | |
---|---|---|
Nazwa biblioteki | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Implementacja | Model jest statycznie połączony z aplikacją w momencie jej tworzenia. | Model jest pobierany dynamicznie za pomocą Usług Google Play. |
Wpływ rozmiaru aplikacji | Wzrost rozmiaru o około 900 KB. | Wzrost rozmiaru o około 200 KB. |
Czas inicjowania | Model jest dostępny od razu. | Przed pierwszym użyciem może być konieczne poczekanie na pobranie modelu. |
Wypróbuj
- Wypróbuj przykładową aplikację, aby zobaczyć przykład użycia tego interfejsu API.
Zanim zaczniesz
W pliku
build.gradle
na poziomie projektu dodaj repozytorium Maven firmy Google do sekcjibuildscript
iallprojects
.Dodaj zależności dla bibliotek ML Kit na Androida do pliku Gradle na poziomie aplikacji modułu, który zwykle znajduje się w
app/build.gradle
. Wybierz jedną z tych zależności w zależności od potrzeb:Aby połączyć model z aplikacją:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }
W przypadku korzystania z modelu w Usługach Google Play:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0' }
Jeśli zdecydujesz się użyć modelu w Usługach Google Play, możesz skonfigurować aplikację tak, aby automatycznie pobierała model na urządzenie po zainstalowaniu aplikacji ze Sklepu Play. Aby to zrobić, dodaj tę deklarację do pliku
AndroidManifest.xml
aplikacji:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Możesz też sprawdzić dostępność modelu i poprosić o pobranie za pomocą interfejsu ModuleInstallClient API w Usługach Google Play.
Jeśli nie włączysz pobierania modelu w momencie instalacji ani nie zażądasz wyraźnego pobrania, model zostanie pobrany przy pierwszym uruchomieniu identyfikatora. Żądania wysyłane przed zakończeniem pobierania nie przynoszą wyników.
Określanie języka ciągu znaków
Aby określić język ciągu znaków, wywołaj LanguageIdentification.getClient()
, aby uzyskać instancję LanguageIdentifier
, a następnie przekaż ciąg znaków do metody identifyLanguage()
klasy LanguageIdentifier
.
Na przykład:
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyLanguage(text) .addOnSuccessListener { languageCode -> if (languageCode == "und") { Log.i(TAG, "Can't identify language.") } else { Log.i(TAG, "Language: $languageCode") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyLanguage(text) .addOnSuccessListener( new OnSuccessListener<String>() { @Override public void onSuccess(@Nullable String languageCode) { if (languageCode.equals("und")) { Log.i(TAG, "Can't identify language."); } else { Log.i(TAG, "Language: " + languageCode); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
Jeśli wywołanie się powiedzie, do odbiornika sukcesu zostanie przekazany kod języka BCP-47, który wskazuje język tekstu. Jeśli nie można jednoznacznie wykryć języka, przekazywany jest kod und
(nieokreślony).
Domyślnie ML Kit zwraca wartość inną niż und
tylko wtedy, gdy zidentyfikuje język z wartością ufności wynoszącą co najmniej 0,5. Ten próg możesz zmienić, przekazując obiekt LanguageIdentificationOptions
do funkcji getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
Pobieranie możliwych języków ciągu znaków
Aby uzyskać wartości ufności dla najbardziej prawdopodobnych języków ciągu znaków, uzyskaj instancję LanguageIdentifier
, a następnie przekaż ciąg znaków do metody identifyPossibleLanguages()
.
Na przykład:
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener { identifiedLanguages -> for (identifiedLanguage in identifiedLanguages) { val language = identifiedLanguage.languageTag val confidence = identifiedLanguage.confidence Log.i(TAG, "$language $confidence") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() { @Override public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) { for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) { String language = identifiedLanguage.getLanguageTag(); float confidence = identifiedLanguage.getConfidence(); Log.i(TAG, language + " (" + confidence + ")"); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
Jeśli wywołanie się powiedzie, do detektora sukcesu zostanie przekazana lista obiektów IdentifiedLanguage
. Z każdego obiektu możesz uzyskać kod BCP-47 języka i pewność, że ciąg znaków jest w tym języku. Pamiętaj, że te wartości wskazują pewność, że cały ciąg znaków jest w danym języku. ML Kit nie rozpoznaje wielu języków w jednym ciągu znaków.
Domyślnie ML Kit zwraca tylko języki, których wartości ufności wynoszą co najmniej 0,01. Ten próg możesz zmienić, przekazując obiekt LanguageIdentificationOptions
do getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
Jeśli żaden język nie spełnia tego progu, lista zawiera 1 element o wartości und
.