借助 MediaPipe Language Detector 任务,您可以识别一段文本使用的语言。这些 说明如何将语言检测器用于 Android 应用程序。代码 您可在 GitHub
要了解此任务的实际运行情况,请查看 演示。 如需详细了解功能、模型和配置选项 部分,请参阅概览。
代码示例
语言检测器的示例代码提供了此项功能的简单实现 供您参考。此代码可帮助您测试此任务并 构建自己的语言检测功能。您可以浏览 语言检测器示例代码 。
下载代码
以下说明介绍了如何创建示例的本地副本 使用 git 版本控制命令行工具构建代码库。
<ph type="x-smartling-placeholder">如需下载示例代码,请执行以下操作:
- 使用以下命令克隆 git 代码库:
git clone https://github.com/google-ai-edge/mediapipe-samples
- (可选)将您的 Git 实例配置为使用稀疏检出,
因此您只有语言检测器示例应用的文件:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/languagedetector/android
如需了解如何使用 Android Studio 设置和运行示例, 请参阅 Android 版设置指南。
关键组件
以下文件包含文本分类的关键代码, 示例应用:
- LanguageDetectorHelper.kt - 初始化语言检测器并处理模型选择。
- ResultsAdapter.kt - 处理检测结果和设置其格式。
- MainActivity.kt:
实现应用,包括调用
LanguageDetectorHelper
和ResultsAdapter
。
设置
本部分介绍了设置开发环境和 代码项目。有关 设置开发环境以使用 MediaPipe 任务,包括 平台版本要求,请参阅 Android 版设置指南。
<ph type="x-smartling-placeholder">依赖项
语言检测器使用 com.google.mediapipe:tasks-text
库。添加此项
依赖项添加到 Android 应用开发项目的 build.gradle
文件中。
您可以使用以下代码导入所需的依赖项:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
型号
MediaPipe Language Detector 任务需要一个与此训练兼容的模型, 任务。如需详细了解语言检测器的可用训练模型,请参阅 任务概览的“模型”部分。
选择并下载模型,然后将其存储在项目目录中:
<dev-project-root>/src/main/assets
在 ModelName
参数中指定模型的路径。
创建任务
您可以使用其中一个 createFrom...()
函数创建任务。通过
createFromOptions()
函数接受语言的配置选项
检测器。您也可以使用 createFromFile()
工厂初始化任务
函数。createFromFile()
函数接受
经过训练的模型文件。如需详细了解如何配置任务,请参阅
配置选项。
以下代码演示了如何创建和配置此任务。
// For creating a language detector instance:
LanguageDetectorOptions options =
LanguageDetectorOptions.builder()
.setBaseOptions(
BaseOptions.builder()
.setModelAssetPath(modelPath)
.build()
)
.build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);
您可以在代码示例中查看如何创建任务的示例
LanguageDetectorHelper
类 initDetector()
函数。
配置选项
此任务具有以下适用于 Android 应用的配置选项:
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
maxResults |
将评分最高的语言预测的可选数量上限设置为 return。如果此值小于零,则返回所有可用的结果。 | 任何正数 | -1 |
scoreThreshold |
设置预测分数阈值,以替换 模型元数据(如果有)。低于此值的结果将被拒绝。 | 任意浮点数 | 未设置 |
categoryAllowlist |
设置允许的语言代码的可选列表。如果不为空,
语言代码不在此集中的语言预测将
已滤除。此选项与
categoryDenylist ,同时使用这两个元素会导致错误。 |
任何字符串 | 未设置 |
categoryDenylist |
设置不允许使用的语言代码的可选列表。如果
非空语言预测,如果语言代码在此集合内,则将被滤除
。此选项与 categoryAllowlist 和
会导致错误。 |
任何字符串 | 未设置 |
准备数据
语言检测器使用文本 (String
) 数据。任务处理数据输入
预处理,包括标记化和张量预处理。全部
预处理在 detect()
函数中进行处理。无需
对输入文本进行额外的预处理。
String inputText = "Some input text for the language detector";
运行任务
语言检测器使用 LanguageDetector.detect()
方法处理输入
并预测文本使用的语言。您应该使用单独的执行
用于执行检测以免阻塞 Android 用户的线程
接口线程
以下代码演示了如何使用任务执行处理 使用单独的执行线程来训练该模型。
// Predict the language of the input text.
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = languageDetector.detect(text)
listener.onResult(results)
}
}
您可以在代码示例中查看如何运行任务的示例
LanguageDetectorHelper
类 detect()
函数。
处理和显示结果
语言检测器输出一个 LanguageDetectorResult
,其中包含一系列
语言预测以及这些预测的概率。通过
模型中定义的语言类别,请参阅任务概览
模型部分:详细了解您使用的模型。
以下示例展示了此任务的输出数据:
LanguageDetectorResult:
LanguagePrediction #0:
language_code: "fr"
probability: 0.999781
通过对输入文本运行模型来获得此结果:
"Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."
。
如需查看有关如何显示结果的示例,请参阅代码示例
ResultsAdapter
类和 ViewHolder
内部类。