您可以使用机器学习套件识别文本字符串使用的语言。您可以 获取字符串最可能使用的语言以及所有预测的 字符串可能使用的语言。
机器学习套件可识别原生脚本中 100 多种不同的语言的文本。 此外,系统还可以识别用拉丁字母拼写的阿拉伯语、保加利亚语、中文 希腊语、印地语、日语和俄语。请参阅 受支持语言和脚本的完整列表。
<ph type="x-smartling-placeholder">捆绑 | 不分类显示 | |
---|---|---|
库名称 | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
实现 | 模型在构建时静态关联到您的应用。 | 模型通过 Google Play 服务动态下载。 |
应用大小影响 | 大小会增加大约 900 KB。 | 大小增加约 200 KB。 |
初始化时间 | 模型立即可用。 | 可能需要等到模型下载完毕后才能首次使用。 |
试试看
- 您可以试用示例应用, 请查看此 API 的用法示例。
准备工作
<ph type="x-smartling-placeholder">请务必在您的项目级
build.gradle
文件中添加 Google 的buildscript
和allprojects
部分中的 Maven 制品库。将 Android 版机器学习套件库的依赖项添加到模块的 应用级 Gradle 文件,通常为
app/build.gradle
。请选择以下其中一项: 以下依赖项:如需将模型与应用捆绑,请执行以下操作:
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. // ... }
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. // ... } });
如果调用成功,将返回一个
BCP-47 语言代码
传递给成功监听器,表示文本的语言。如果拒绝
能够准确地检测到语言,则代码
传递 und
(未确定)。
默认情况下,机器学习套件仅在识别出und
置信度值至少为 0.5 的语言。您可以更改此设置
通过向 getClient()
传递一个 LanguageIdentificationOptions
对象来达到阈值:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
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. // ... }
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. // ... } });
如果调用成功,系统就会将 IdentifiedLanguage
对象列表传递给
成功监听器。您可以从每个对象获取语言的 BCP-47 代码,以及
字符串使用该语言的置信度。请注意,
这些值表示整个字符串出现在
语言;机器学习套件不会在单个字符串中识别多种语言。
默认情况下,机器学习套件仅返回置信度值至少为
0.01。您可以更改此阈值,方法是传递
LanguageIdentificationOptions
对象
getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
如果没有语言符合此阈值,则此列表将包含一个值为
und
。