ML Kit를 사용하면 텍스트 문자열의 언어를 식별할 수 있습니다. 문자열의 언어일 가능성이 있는 언어와 문자열의 가능한 모든 언어에 대한 신뢰도 점수를 가져올 수 있습니다.
ML Kit는 네이티브 스크립트에서 100개가 넘는 다양한 언어로 된 텍스트를 인식합니다. 또한 그리스어, 러시아어, 불가리아어, 아랍어, 일본어, 중국어, 힌디어로 된 로마자 텍스트도 인식할 수 있습니다. 지원되는 언어 및 스크립트의 전체 목록을 참고하세요.
번들 | 번들 해제됨 | |
---|---|---|
라이브러리 이름 | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
구현 | 모델은 빌드 시 앱에 정적으로 연결됩니다. | 모델은 Google Play 서비스를 통해 동적으로 다운로드됩니다. |
앱 크기 영향 | 크기가 약 900KB 증가합니다. | 크기가 약 200KB 증가합니다. |
초기화 시간 | 모델을 즉시 사용할 수 있습니다. | 처음 사용하기 전에 모델이 다운로드될 때까지 기다려야 할 수 있습니다. |
사용해 보기
- 샘플 앱을 사용해 이 API의 사용 예를 살펴보세요.
시작하기 전에
프로젝트 수준
build.gradle
파일의buildscript
및allprojects
섹션에 Google의 Maven 저장소가 포함되어야 합니다.모듈의 앱 수준 Gradle 파일(일반적으로
app/build.gradle
)에 ML Kit Android 라이브러리의 종속 항목을 추가합니다. 필요에 따라 다음 종속 항목 중 하나를 선택합니다.모델을 앱과 함께 번들로 묶는 방법:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }
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' }
Google Play 서비스에서 모델을 사용하도록 선택하는 경우 Play 스토어에서 앱을 설치한 후 기기에 모델을 자동으로 다운로드하도록 앱을 구성할 수 있습니다. 이렇게 하려면 앱의
AndroidManifest.xml
파일에 다음 선언을 추가합니다.<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Google Play 서비스 ModuleInstallClient API를 통해 모델 가용성을 명시적으로 확인하고 다운로드를 요청할 수도 있습니다.
설치 시 모델 다운로드를 사용 설정하지 않거나 명시적 다운로드를 요청하지 않으면 식별자를 처음 실행할 때 모델이 다운로드됩니다. 다운로드가 완료되기 전에 요청하면 결과가 나오지 않습니다.
문자열의 언어 식별
문자열의 언어를 식별하려면 LanguageIdentification.getClient()
를 호출하여 LanguageIdentifier
의 인스턴스를 가져온 후 문자열을 LanguageIdentifier
의 identifyLanguage()
메서드로 전달합니다.
예를 들면 다음과 같습니다.
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. // ... }
자바
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. // ... } });
호출이 성공하면 BCP-47 언어 코드가 성공 리스너로 전달되어 텍스트의 언어를 표시합니다. 언어를 확실하게 감지할 수 없는 경우 und
(미확인) 코드가 전달됩니다.
기본적으로 ML Kit는 신뢰도 값이 0.5 이상인 언어를 식별하는 경우에만 und
외의 값을 반환합니다. LanguageIdentificationOptions
객체를 getClient()
에 전달하여 이 기준을 변경할 수 있습니다.
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
자바
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
가능한 문자열 언어 가져오기
문자열의 언어일 가능성이 있는 언어의 신뢰도 값을 가져오려면 LanguageIdentifier
의 인스턴스를 가져온 후 문자열을 identifyPossibleLanguages()
메서드에 전달합니다.
예를 들면 다음과 같습니다.
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. // ... }
자바
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. // ... } });
호출이 성공하면 IdentifiedLanguage
객체 목록이 성공 리스너에 전달됩니다. 각 객체에서 언어의 BCP-47 코드와 문자열이 해당 언어에 있다는 신뢰도를 얻을 수 있습니다. 이 값은 전체 문자열이 지정된 언어임을 나타냅니다. ML Kit는 단일 문자열에서 여러 언어를 식별하지 않습니다.
기본적으로 ML Kit는 신뢰도 값이 0.01 이상인 언어만 반환합니다. LanguageIdentificationOptions
객체를 getClient()
에 전달하여 이 기준을 변경할 수 있습니다.
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
자바
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
이 기준을 충족하는 언어가 없으면 목록에 und
값이 포함된 항목 하나만 표시됩니다.