Flutter自然语言处理插件firebase_mlkit_language的使用

Flutter自然语言处理插件firebase_mlkit_language的使用

Pub

一个用于在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)),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
1 回复

更多关于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.jsonios/Runner/GoogleService-Info.plist 中添加了 Firebase 配置文件。

然后运行你的 Flutter 应用:

flutter run
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!