ML Kit를 사용하면 텍스트 문자열의 언어를 식별할 수 있습니다. 문자열의 언어일 가능성이 있는 언어를 가져오거나 문자열의 가능한 모든 언어에 대한 신뢰도 점수를 가져올 수 있습니다.
ML Kit는 네이티브 스크립트에서 103개의 다른 언어로 된 텍스트를 인식합니다. 또한 그리스어, 러시아어, 불가리아어, 아랍어, 일본어, 중국어, 힌디어로 된 로마자 텍스트도 인식할 수 있습니다.
시작하기 전에
- 먼저 Android 프로젝트에 Firebase를 추가합니다.
- 모듈(앱 수준) Gradle 파일(일반적으로
app/build.gradle
)에 ML Kit Android 라이브러리의 종속 항목을 추가합니다.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' }
문자열의 언어 식별
문자열의 언어를 식별하려면 FirebaseLanguageIdentification
의 인스턴스를 가져온 후 문자열을 identifyLanguage()
메서드로 전달합니다.
예를 들면 다음과 같습니다.
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.
// ...
}
});
호출이 성공하면 BCP-47 언어 코드가 성공 리스너로 전달되어 텍스트의 언어를 표시합니다. 지원 언어의 전체 목록을 참조하세요. 언어를 확실하게 감지할 수 없는 경우 und
(미확인) 코드가 전달됩니다.
기본적으로 ML Kit는 신뢰값이 0.5 이상인 언어를 식별하는 경우에만 und
외의 값을 반환합니다. FirebaseLanguageIdentificationOptions
객체를 getLanguageIdentification()
에 전달하여 이 기준을 변경할 수 있습니다.
FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
.getInstance()
.getLanguageIdentification(
new FirebaseLanguageIdentificationOptions.Builder()
.setIdentifyLanguageConfidenceThreshold(0.34f)
.build());
가능한 문자열 언어 가져오기
문자열의 언어일 가능성이 있는 언어의 신뢰도 값을 가져오려면 FirebaseLanguageIdentification
의 인스턴스를 가져온 후 문자열을 identifyAllLanguages()
메서드에 전달합니다.
예를 들면 다음과 같습니다.
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.
// ...
}
});
호출이 성공하면 IdentifiedLanguage
객체 목록이 성공 리스너에 전달됩니다. 각 객체에서 언어의 BCP-47 코드와 문자열이 해당 언어에 있다는 신뢰도를 얻을 수 있습니다. 지원 언어의 전체 목록을 참조하세요. 이 값은 전체 문자열이 지정된 언어임을 나타냅니다. ML Kit는 단일 문자열에서 여러 언어를 식별하지 않습니다.
기본적으로 ML Kit는 신뢰도 값이 0.01 이상인 언어만 반환합니다. FirebaseLanguageIdentificationOptions
객체를 getLanguageIdentification()
에 전달하여 이 기준을 변경할 수 있습니다.
FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
.getInstance()
.getLanguageIdentification(
new FirebaseLanguageIdentificationOptions.Builder()
.setIdentifyAllLanguagesConfidenceThreshold(0.5f)
.build());
이 기준을 충족하는 언어가 없으면 목록에 und
값이 포함된 항목 하나만 표시됩니다.