Za pomocą pakietu ML Kit możesz określić język ciągu tekstowego. Dostępne opcje uzyskać najbardziej prawdopodobny język ciągu oraz wskaźniki ufności dla wszystkich możliwych języków ciągu.
ML Kit rozpoznaje tekst w ponad 100 różnych językach w skryptach natywnych. Tekst zlatynizowany można też rozpoznać w językach arabskim, bułgarskim, chińskim, greckim, hindi, japońskim i rosyjskim. Zobacz pełną listę obsługiwanych języków i skryptów.
Łączenie w pakiety | Niegrupowane | |
---|---|---|
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 kompilacji. | Model jest pobierany dynamicznie przez Usługi Google Play. |
Wpływ rozmiaru 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 jego pierwszym użyciem konieczne może być poczekać na pobranie modelu. |
Wypróbuj
- Wypróbuj przykładową aplikację, aby: zobaczysz przykład użycia tego interfejsu API.
Zanim zaczniesz
W pliku
build.gradle
na poziomie projektu uwzględnij parametr Google Repozytorium Maven w sekcjachbuildscript
iallprojects
.Dodaj zależności bibliotek ML Kit na Androida do biblioteki modułu pliku Gradle na poziomie aplikacji, który zwykle ma wartość
app/build.gradle
. Wybierz jedną z opcji: następujące 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' }
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ć aplikacja automatycznie pobiera model na urządzenie, ze Sklepu Play. Aby to zrobić, dodaj następującą deklarację do plik
AndroidManifest.xml
Twojej 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ż bezpośrednio sprawdzić dostępność modelu i poprosić o pobranie go Interfejs ModuleInstallClient API Usług Google Play.
Jeśli nie włączysz pobierania modelu w czasie instalacji lub nie poprosisz o pobieranie dla pełnoletnich, jest pobierany przy pierwszym uruchomieniu identyfikatora. Twoje prośby przed zakończeniem pobierania nie przyniosą żadnych wyników.
Określ język ciągu
Aby określić język ciągu, wywołaj LanguageIdentification.getClient()
w
pobierz wystąpienie LanguageIdentifier
, a potem przekaż ciąg znaków do funkcji
Metoda identifyLanguage()
dla 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,
Kod języka BCP-47 to
do detektora powodzenia, wskazując język tekstu. Jeśli nie
rozpoznanie języka, kod
Wartość und
(nieokreślona) została potwierdzona.
Domyślnie ML Kit zwraca wartość inną niż und
tylko wtedy, gdy identyfikuje
język z wartością ufności równą 0,5. Możesz to zmienić
próg, 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());
Znajdź możliwe języki ciągu
Aby uzyskać wartości ufności najbardziej prawdopodobnych języków ciągu, pobierz metodę
wystąpienie LanguageIdentifier
, a następnie przekazać ciąg znaków do funkcji
Metoda 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, lista obiektów IdentifiedLanguage
zostanie przekazana do funkcji
słuchaczem sukcesu. Z każdego obiektu możesz pobrać kod BCP-47 języka
pewność, że tekst jest w tym języku. Pamiętaj, że
te wartości wskazują pewność, że cały ciąg jest w danym
język; ML Kit nie identyfikuje wielu języków w 1 ciągu znaków.
Domyślnie ML Kit zwraca tylko te języki, w przypadku których poziom ufności wynosi co najmniej
0,01. Możesz zmienić ten próg, przekazując
LanguageIdentificationOptions
obiekt 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, na liście znajduje się 1 element o wartości
und