Googleは先週、Android 9、コードネームPieを発表した。Androidは人工知能に支えられた新たな機能セットをローンチしているが、その最も重要な機能のひとつがAndroid Smart Linkifyだ。
Smart Linkifyは、前バージョンであるAndroid OreoでリリースされたSmart Text Selectionをベースにしており、テキストから特定の種類のエンティティ(住所や電話番号など)を検出し、クリック可能なリンクを加えることで、ユーザがマップを立ち上げたり、直接電話することができるようにする。この機能は、デバイス内のフィードフォワードニューラルネットワークによって実現されている。このシステムは言語毎に500kBしか消費せず、インターフェースコードも250kBを越えない。また、ほぼリアルタイムで動作するように設計されており、Google Pixel上では20ms未満で結果を算出する。
最初に入力テキストをスペースで単語にトークン化し、可能なすべての単語列を最大15語まで計算する。取得した単語列はニューラルネットワークに送り込まれ、エンティティとしての有効性に基づいて[0...1]の範囲の値が割り当てられる。重なり合うエンティティを取り除いた後、より高いスコアを持つエンティティを選択する。これらプロセスの最初の処理結果として、タイプの不明な、重複しない単語列が得られる。
次に、第2のニューラルネットワークを使用して、各単語列のタイプを電話番号、アドレス、および不明なエンティティに識別する。このニューラルネットワークは、文脈内での単語列をインプットとして受け取り、最初の3つの単語と最後の3つの単語をEntity、先行する5つの単語をLeftコンテキスト、後に続く5つの単語をRightコンテキストとして、意味を識別する上での特徴として使用する。このニューラルネットワークの処理で面白いのは、大文字で始まる単語を識別するために二項素性(binary feature)を使用していることだ。この特性においては、住所は非常にユニークであり、特定が容易であることがその理由だ。
ニューラルネットワークのトレーニングするため、Googleは、実在のデータを基にした、現実性のある偽造データを生成している。Schema.orgのアノテーションから取得したエンティティ、住所、電話番号、ランダムな単語リストを使用して、トレーニングセットを合成した。観察可能なエンティティを取得し、それをランダムな単語で囲むことが、望ましい結果に到達する上で有効であった。また、例えば“ID:”を電話番号として識別することを防ぐためのネットワークのトレーニング用に、意図的に誤ったデータのサンプルも作成した。
この機能では国際化対応が重要であるため、すべてのラテン語系言語で良好に動作するモデルのテストに基づいて、中国語、日本語、韓国語、タイ語、アラビア語、ロシア語のそれぞれのモデルが追加された。APIでは現時点で16言語がサポートされており、今後数ヶ月でさらに追加される予定である。モデルのトレーニングにはTensorFlowが、デバイス内蔵用のカスタム推論ライブラリにはTensorFlow LiteとFlatBuffersが使用されている。開発者がSmart Linkifyの使用を開始するには、TextClassifier APIのgenerateLinksメソッドを使用する。
この記事を評価
- 編集者評
- 編集長アクション