この 2 つの機能は、イメージや動画の処理に特化していた既存の API とは違うことに気づいた方もいらっしゃるでしょう。ML Kit が目指しているのは、分野を問わず ML を活用してもらえるように、強力で使いやすい API を提供することです。そのため、自然言語処理(NLP)用のソリューションで ML Kit を拡張できたことをうれしく思っています。
NLP は、文字や音声などの自然言語データの分析や生成を扱う ML の一分野です。今回、すばらしいことに、テキストの言語を識別する API と、チャットアプリで応答候補を提案する API の提供を開始できました。どちらの機能も、ML Kit SDK の最新バージョンがあれば完全に端末上だけで動作します。対応しているのは、iOS(9.0 以降)および Android(4.1 以降)です。
以前のメッセージの内容を元に応答を提案する
メッセージング アプリに登場している新機能に、通知アクションやアプリ内部でいくつかの応答候補をユーザーに提案するというものがあります。この機能は、忙しいときにすばやく応答したい場合や、長いメッセージを書き始める場合に極めて便利です。
新しい Smart Reply API を使うと、皆さんのアプリでも短時間で同じことを実現できます。この API は、会話内の直近 10 個のメッセージに基づいて提案を行いますが、以前のメッセージが 1 個しかなくても動作します。これは完全に端末上だけで動作するステートレスな API なので、メモリにメッセージの履歴を保持することも、サーバーにメッセージを送信することもありません。
val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
.addOnSuccessListener { result ->
if (result.status == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.status == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
.addOnFailureListener {
// Task failed with an exception
// ...
}
スマート リプライのインスタンスを初期化し、直近のメッセージのリストを suggestReplies に渡すと、コールバックで提案のリストを含む result を受け取ることができます。
Smart Reply API の詳しい使い方については、ドキュメントをご覧ください。
さらに詳しく...
デベロッパーとしてこの新しい API をアプリに組み込むのは簡単ですが、内部で何が行われているのかについて知りたい方もいるでしょう。スマート リプライの中枢部分には、TensorFlow Lite で実行される機械学習モデルと、SentencePiece テキスト エンコーディング [1] および Transformer [2] に基づく最新アーキテクチャが存在します。
しかし、API の開発を始めたときに気づいたのですが、デベロッパーがアプリで使えるソリューションを提供するために必要なのは、中核となる提案モデルだけではありませんでした。たとえば、悪口に応答する場合や個人的な不幸や困難が起きている場合は提案を避けられるように、問題となる可能性があるトピックを検知するモデルを追加しました。また、中核となるモデルのトレーニングが行われていない言語に対して提案を行うことがないように、言語識別の機能も含めました。スマート リプライ機能は、まず英語のサポートからリリースされます。
テキストの一部から言語を識別する
与えられたテキスト文字列が何語かというのは、検出が難しいものの役に立つ情報です。言語に依存する機能は、たくさんのアプリに搭載されています。たとえば、スペルチェック、テキストの翻訳、スマート リプライなどの機能が思い浮かぶでしょう。言語を特定したい場合、ユーザーに尋ねる代わりに、新しい Language Identification API を使うことができます。
ML Kit は、110 種類の言語のテキストを認識します。通常は、いくつかの単語さえあれば、正確に判断できます。また高速に処理でき、iOS や Android を搭載したスマートフォンでは、1 ミリ秒から 2 ミリ秒以内に応答を返します。
Smart Reply API と同じように、関数を呼び出すことで言語を識別できます(この例では Kotlin を使っています)。
identifyLanguage 関数に何文字かのテキストを渡すと、コールバックで BCP-47 言語コードを受け取ることができます。確実に言語を識別できない場合、ML Kit は未確定(undetermined)を示すコード und を返します。Language Identification API から、可能性のある言語のリストとその信頼値を受け取ることもできます。
Language Identification API の詳しい使い方については、ドキュメントをご覧ください。
さっそく使ってみましょう
ML Kit を拡張して自然言語 API を提供できることをとても嬉しく思っています。ぜひ 2 つの新しい NLP API を試してみて、感想をお聞かせください。お気づきの点などは、いつでも Firebase Talk Google Group からご連絡ください。
さらのほかの API やカテゴリを追加して ML Kit を拡張し、皆さんが今まで以上にスマートな体験をユーザーに提供できるようになることを楽しみにしています。Google I/O での ML Kit の発表もお楽しみに。
Reviewed by Khanh LeViet - Developer Relations Team
謝辞 この研究は、Google の夏季インターンである Amanda Swangson 氏と、ディープ ラーニングおよびヒューマン コンピュータ インタラクションのリサーチ サイエンティストである Yang Li 氏が共同で行いました。
Reviewed by Hak Matsuda - Developer Relations Team
デベロッパー アドボケート
Firebase が Game Developers Conference に帰ってきました。今年、サンフランシスコで開催されたこのイベントでは、ゲーム デベロッパー向けにさらに Firebase が強化されていたことをお伝えします!
3 月 18 日の Google Mobile Developer Day では、次のことをお知らせしました。
C++ デベロッパーの皆さん、Firebase for Games を組み込む際にオープンソースの SDK を使えるようになりました!これにより、Firebase ツールセットを組み込む際に、さらに細かく制御できるようになります。コードを参照して SDK の内部動作を確認したり、ゲームに合わせて変更したりすることも簡単になります。また、クライアント SDK のブランチを独自に管理し、関心のある特定の変更だけを選択して反映することもできます。まだサポートされていない他のプラットフォームがあれば、SDK を拡張することもできます。
Firebase Authentication は、アプリにエンドツーエンドの ID ソリューションを提供します。この機能を使うと、パスワードや電話番号、Google、Facebook、Twitter などのよく使われているフェデレーション ID プロバイダを通してユーザーの認証や検証を行えます。
iOS ゲーム デベロッパーのために、Firebase Authentication が Game Center Authentication もサポートしました。既に Game Center にログインしている iOS ユーザーは、追加のログインフローを行うことなくアプリにログインできるようになります。