Flutter自然语言处理插件firebase_mlkit_language的使用
Flutter自然语言处理插件firebase_mlkit_language的使用
一个用于在Flutter中使用Firebase ML Kit自然语言API的插件。
对于其他Firebase产品的Flutter插件,请参阅FlutterFire.md。
注意:此插件仍在开发中,某些API可能尚未可用。反馈和Pull Requests非常欢迎!
使用方法
要使用此插件,请在pubspec.yaml
文件中添加firebase_mlkit_language
作为依赖项。您还需要为每个平台项目(Android和iOS)配置Firebase(详见示例文件夹或https://codelabs.developers.google.com/codelabs/flutter-firebase/#4)。
iOS
版本1.0.0+
使用最新的Firebase ML Kit版本,最低部署目标为9.0。可以在iOS项目的Podfile
中添加platform :ios, '9.0'
。
支持的语言
所有支持的语言可以在此处找到:https://firebase.google.com/docs/ml-kit/translation-language-support。
此外,它们也可以在SupportedLanguages
类中找到。
使用ML Kit语言标识器
1. 创建语言标识器实例
初始化一个LanguageIdentifier
。
final LanguageIdentifier languageIdentifier = FirebaseLanguage.instance.languageIdentifier();
2. 调用processText(String)
方法
调用processText(String)
方法并传入languageIdentifier
,它返回按检测到的语言概率递减排列的List<LanguageLabel>
。
final List<LanguageLabel> labels = await languageIdentifier.processText('Sample Text');
3. 提取数据
<LanguageLabel>
包含语言名称和预测的置信度,可以通过.text
和.confidence
访问。
for (LanguageLabel label in labels) {
final String text = label.text;
final double confidence = label.confidence;
}
使用ML Kit语言翻译器
注意事项
获取ModelManager
的实例,并下载所需的翻译模型(可选,结果是第一次使用时更快)。
FirebaseLanguage.instance.modelManager().downloadModel(SupportedLanguages.lang);
1. 创建语言翻译器实例
初始化一个LanguageTranslator
。
final FirebaseLanguage.instance.languageTranslator(SupportedLanguages.lang, SupportedLanguages.lang);
2. 调用processText(String)
方法
调用processText(String)
方法并传入languageTranslator
,它返回包含翻译为目标语言文本的字符串。
final String translatedString = await languageTranslator.processText('Sample Text');
使用ML Kit模型管理器
1. 创建模型管理器实例
初始化一个ModelManager
。
final ModelManager modelManager = FirebaseLanguage.instance.modelManager();
2. 使用模型管理器下载模型
调用downloadModel()
方法下载指定模型到设备的本地存储。建议在翻译之前下载所有需要使用的模型以确保首次使用快速。成功下载后,将返回字符串"Downloaded"。
modelManager.downloadModel(SupportedLanguages.lang);
3. 使用模型管理器删除模型
调用deleteModel()
方法从设备的本地存储中删除指定模型。成功删除后,将返回字符串"Deleted"。如果指定的模型未下载到设备,则返回字符串"Model not downloaded"。
modelManager.deleteModel(SupportedLanguages.lang);
4. 查看模型
调用viewModels()
方法返回设备本地存储中所有已下载语言的BCP-47语言代码列表。
modelManager.viewModels();
完整示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:firebase_mlkit_language/firebase_mlkit_language.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final inputTextController = TextEditingController();
var translatedText = "Translated Text";
var inputText;
var identifiedLang = "Detected Language";
var downloadedModelsLabel = "";
void onPressed() async {
inputText = inputTextController.text;
var result = await FirebaseLanguage.instance
.languageTranslator(
SupportedLanguages.English, SupportedLanguages.Spanish)
.processText(inputText);
setState(() {
translatedText = result;
});
}
void onPoked() async {
inputText = inputTextController.text;
var result = await FirebaseLanguage.instance
.languageIdentifier()
.processText(inputText);
setState(() {
identifiedLang = result[0].languageCode; // 返回最有可能的语言
});
}
void onGetDownloadedModels() async {
var downloadedModels =
await FirebaseLanguage.instance.modelManager().viewModels();
setState(() {
downloadedModelsLabel = downloadedModels.join(',');
});
}
void onDownloadCSModel() async {
await FirebaseLanguage.instance.modelManager().downloadModel("cs");
onGetDownloadedModels();
}
void onDeleteCSModel() async {
await FirebaseLanguage.instance.modelManager().deleteModel("cs");
onGetDownloadedModels();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text("Plug-In Example App"),
backgroundColor: Colors.blue,
),
body: Container(
padding: EdgeInsets.all(10),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(controller: inputTextController),
SizedBox(height: 10),
ElevatedButton(
child: Text("Translate", style: TextStyle(color: Colors.white)),
onPressed: onPressed,
style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.blue)),
),
SizedBox(height: 5),
Container(
padding: EdgeInsets.all(20),
child: Text(translatedText),
decoration: BoxDecoration(color: Colors.black.withOpacity(0.05)),
),
SizedBox(height: 5),
ElevatedButton(
child: Text("Identify Language", style: TextStyle(color: Colors.white)),
onPressed: onPoked,
style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.blue)),
),
SizedBox(height: 5),
Container(
padding: EdgeInsets.all(10),
child: Text(identifiedLang),
decoration: BoxDecoration(color: Colors.black.withOpacity(0.05)),
),
SizedBox(height: 5),
ElevatedButton(
child: Text("Show downloaded models", style: TextStyle(color: Colors.white)),
onPressed: onGetDownloadedModels,
style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.blue)),
),
SizedBox(height: 5),
Container(
padding: EdgeInsets.all(10),
child: Text(downloadedModelsLabel),
decoration: BoxDecoration(color: Colors.black.withOpacity(0.05)),
),
SizedBox(height: 5),
ElevatedButton(
child: Text("Download cs model", style: TextStyle(color: Colors.white)),
onPressed: onDownloadCSModel,
style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.blue)),
),
SizedBox(height: 5),
ElevatedButton(
child: Text("Delete cs model", style: TextStyle(color: Colors.white)),
onPressed: onDeleteCSModel,
style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.blue)),
),
],
),
),
),
),
);
}
}
更多关于Flutter自然语言处理插件firebase_mlkit_language的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
firebase_mlkit_language
是一个 Flutter 插件,用于在 Flutter 应用中集成 Firebase ML Kit 的语言处理功能。它提供了多种自然语言处理(NLP)功能,如文本识别、语言识别、翻译等。以下是如何在 Flutter 项目中使用 firebase_mlkit_language
插件的基本步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 firebase_mlkit_language
插件的依赖:
dependencies:
flutter:
sdk: flutter
firebase_core: latest_version
firebase_mlkit_language: latest_version
然后运行 flutter pub get
来安装依赖。
2. 初始化 Firebase
在使用 Firebase 服务之前,需要初始化 Firebase。在 main.dart
文件中进行初始化:
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
3. 使用 firebase_mlkit_language
插件
下面是一个简单的示例,展示如何使用 firebase_mlkit_language
插件进行文本识别和语言识别。
文本识别
import 'package:flutter/material.dart';
import 'package:firebase_mlkit_language/firebase_mlkit_language.dart';
class TextRecognitionPage extends StatefulWidget {
@override
_TextRecognitionPageState createState() => _TextRecognitionPageState();
}
class _TextRecognitionPageState extends State<TextRecognitionPage> {
String _recognizedText = '';
Future<void> _recognizeText() async {
final textRecognizer = FirebaseLanguage.instance.textRecognizer();
final recognizedText = await textRecognizer.processText('Your text here');
setState(() {
_recognizedText = recognizedText;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Text Recognition'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_recognizedText),
ElevatedButton(
onPressed: _recognizeText,
child: Text('Recognize Text'),
),
],
),
),
);
}
}
语言识别
import 'package:flutter/material.dart';
import 'package:firebase_mlkit_language/firebase_mlkit_language.dart';
class LanguageIdentificationPage extends StatefulWidget {
@override
_LanguageIdentificationPageState createState() => _LanguageIdentificationPageState();
}
class _LanguageIdentificationPageState extends State<LanguageIdentificationPage> {
String _identifiedLanguage = '';
Future<void> _identifyLanguage() async {
final languageIdentifier = FirebaseLanguage.instance.languageIdentifier();
final identifiedLanguage = await languageIdentifier.identifyLanguage('Your text here');
setState(() {
_identifiedLanguage = identifiedLanguage;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Language Identification'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_identifiedLanguage),
ElevatedButton(
onPressed: _identifyLanguage,
child: Text('Identify Language'),
),
],
),
),
);
}
}
4. 运行应用
确保你已经正确配置了 Firebase 项目,并且在 android/app/google-services.json
和 ios/Runner/GoogleService-Info.plist
中添加了 Firebase 配置文件。
然后运行你的 Flutter 应用:
flutter run