Za pomocą pakietu ML Kit możesz określić język ciągu tekstowego. Dostępne opcje możesz pobrać najbardziej prawdopodobny język ciągu lub uzyskać wskaźniki ufności dla wszystkich możliwych języków ciągu.
ML Kit rozpoznaje tekst w 103 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.
Zanim zaczniesz
- Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.
- Dodaj do modułu zależności między bibliotekami ML Kit na Androida
Plik Gradle (na poziomie aplikacji) (zwykle
app/build.gradle
):apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { // ... implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0' implementation 'com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7' }
Określ język ciągu
Aby określić język ciągu, pobierz wystąpienie
FirebaseLanguageIdentification
, a następnie przekaż ten ciąg do funkcji
Metoda identifyLanguage()
.
Przykład:
FirebaseLanguageIdentification languageIdentifier =
FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyLanguage(text)
.addOnSuccessListener(
new OnSuccessListener<String>() {
@Override
public void onSuccess(@Nullable String languageCode) {
if (languageCode != "und") {
Log.i(TAG, "Language: " + languageCode);
} else {
Log.i(TAG, "Can't identify language.");
}
}
})
.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. Zobacz
pełną listę obsługiwanych języków. Jeśli nie
.und
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 FirebaseLanguageIdentificationOptions
do
getLanguageIdentification()
:
FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
.getInstance()
.getLanguageIdentification(
new FirebaseLanguageIdentificationOptions.Builder()
.setIdentifyLanguageConfidenceThreshold(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 FirebaseLanguageIdentification
, a następnie przekazać ciąg znaków do funkcji
Metoda identifyAllLanguages()
.
Przykład:
FirebaseLanguageIdentification languageIdentifier =
FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyAllLanguages(text)
.addOnSuccessListener(
new OnSuccessListener<String>() {
@Override
public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) {
for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) {
String language = identifiedLanguage.getLanguageCode();
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. Zobacz
pełną listę obsługiwanych języków. 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
FirebaseLanguageIdentificationOptions
obiekt do
getLanguageIdentification()
:
FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
.getInstance()
.getLanguageIdentification(
new FirebaseLanguageIdentificationOptions.Builder()
.setIdentifyAllLanguagesConfidenceThreshold(0.5f)
.build());
Jeśli żaden język nie spełnia tego progu, na liście będzie znajdować się 1 element z wartością
und