Za pomocą ML Kit możesz określić język ciągu tekstu. Możesz uzyskać najbardziej prawdopodobny język ciągu oraz wyniki ufności dla wszystkich możliwych języków ciągu.
ML Kit rozpoznaje tekst w ponad 100 językach w ich natywnych alfabetach. Dodatkowo można rozpoznawać tekst zapisany alfabetem łacińskim w języku arabskim, bułgarskim, chińskim, greckim, hindi, japońskim i rosyjskim. Zobacz pełną listę obsługiwanych języków i alfabetów.
| Wbudowana | Pobierana | |
|---|---|---|
| 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 czasie kompilacji. | Model jest pobierany dynamicznie za pomocą Usług Google Play. |
| Wpływ na rozmiar aplikacji | Zwiększenie rozmiaru o około 900 KB. | Zwiększenie 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ć, jak używać tego interfejsu API.
Zanim zaczniesz
W pliku
build.gradlena poziomie projektu sprawdź, czy w sekcjachbuildscriptiallprojectsjest uwzględnione repozytorium Google Maven.Dodaj zależności bibliotek ML Kit na Androida do pliku Gradle na poziomie modułu aplikacji, który zwykle znajduje się w
app/build.gradle. W zależności od potrzeb wybierz jedną z tych zależności:Aby dołączyć model do aplikacji:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }Aby używać 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żywać 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.xmlaplikacji:<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ż wyraźnie 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 podczas instalacji ani nie poprosisz o wyraźne pobranie, model zostanie pobrany przy pierwszym uruchomieniu identyfikatora. Żądania wysyłane przed zakończeniem pobierania nie przynoszą żadnych wyników.
Określanie języka ciągu
Aby określić język ciągu, wywołaj LanguageIdentification.getClient(), aby uzyskać instancję LanguageIdentifier, a następnie przekaż ciąg do metody identifyLanguage() w 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, a
kod języka BCP-47 zostanie
przekazany do odbiornika sukcesu, wskazując język tekstu. Jeśli nie uda się wykryć języka z wystarczającą pewnością, zostanie przekazany kod
und (nieokreślony).
Domyślnie ML Kit zwraca wartość inną niż und tylko wtedy, gdy określi język z poziomem ufności co najmniej 0,5. Ten próg możesz zmienić, przekazując obiekt LanguageIdentificationOptions do 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
Aby uzyskać wartości ufności najbardziej prawdopodobnych języków ciągu, pobierz instancję LanguageIdentifier, a następnie przekaż ciąg 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 odbiornika sukcesu zostanie przekazana lista obiektów IdentifiedLanguage. Z każdego obiektu możesz pobrać kod BCP-47 języka i pewność, że ciąg jest w tym języku. Pamiętaj, że te wartości wskazują pewność, że cały ciąg jest w danym języku. ML Kit nie identyfikuje wielu języków w jednym ciągu.
Domyślnie ML Kit zwraca tylko języki o wartościach ufności 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.