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.4' }
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
값이 포함된 항목이 1개 있습니다.