「”Clova Inside” の裏側 -いつでもどこでもサポートしてくれる自然言語理解の仕組み」- LINE DEVELOPER DAY 2018 #linedevday

2018年11月21日(水)に八芳園にて開催された「LINE DEVELOPER DAY 2018」の「"Clova Inside" の裏側 -いつでもどこでもサポートしてくれる自然言語理解の仕組み」セッションリポートになります。
2018.11.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、中村です。 2018年11月21日(水)に八芳園にて開催された「LINE DEVELOPER DAY 2018」のセッションリポートになります。

LINE DEVELOPER DAYとは?

「LINE DEVELOPER DAY」は、コミュニケーションアプリ「LINE」をはじめ、当社が運営する様々なサービスの技術領域でのチャレンジや取り組みなどをご紹介するエンジニア向け技術カンファレンスです。 今年は、「Next LINE」をコンセプトに、当社が投資する新たな技術領域におけるチャレンジや、それを支えるLINEのエンジニアの技術的知見や経験、挑戦などを通して、当社が目指すビジョンをご紹介いたします。

本記事の内容は、「"Clova Inside" の裏側 -いつでもどこでもサポートしてくれる自然言語理解の仕組み」になります。スピーカーはLINE株式会社 VA開発チーム 佐藤敏紀 (overlast)氏です。

セッションまとめ

  • 音声インターフェースなので子供からお年寄りまで利用できる / ながらで利用できる

Clovaでのスキルを利用する時の裏側

  • Inside of our NLU system
    • Natual Language Understanding & Dialog Management
    • AIアシスタントでは必須の機能
    • ルールベース / 機械学習ベースなどプロセスが複数あり、結果を最終的に突合する
    • システムはツールで管理しており、品質改善している
    • キーワード
      • 事前準備
        • 辞書を作る(バリュー・シノニム)
          • Trieのインデックス、Key-Valueのインデックスを作成する
          • Trieでバリュー検索し、Key-Valueで詳細検索
          • Clovaは、応答時間に厳密でNLU処理はAVG 0.050Sくらいじゃないと厳しい
    • 分類
      • 一般的な「天気」などのものはルールベースでの分類により、実行するfunctionを見つけ出す
    • フィルタリング
      • 実行に不必要なパラメータを排除したりする
    • ランキング
      • 認識データの確度などを検証する
  • Diffivulty of Speech Recognition
    • Emergence of new / unknown words
      • 八芳園が花公園になる(レアケース)
      • 新規用語は認識できないことが多い
        • 渋谷フクラス
      • NLUが学習する前は渋谷くらいは取れる
      • Point of Interestとしては粒度としてはダメ
    • Ambiguity inquery notation
      • 「今日」が「京」
      • 「13時」が「十三時」
    • User's speech queality
      • ユーザーの発話の揺れで接頭語に別のワードも認識してしまう
  • Free utterance of user's query
    • ユーザーは自由に話しかけてくる
    • よくあるのはルールベースで対応し、レアなものは機械学習ベースで拾う
  • Ranking of executable skills
    • ユーザーの発話内容で、実行機能が増える
    • サービスを設計に影響してくる
  • 各手法のメリット
    • ルールベース
      • Best precision
      • Easy to control
    • 機械学習
      • High recall
      • Low cost to maintenance
  • Future Work
    • Voice I/O が一番大きい魅力
    • 開発者目線では課題が山積み
    • VUI is ultimately defined by you
      • 様々な言い回しでコマンドを実行できる方法を考える

終わりに

いかがでしたでしょうか。スキル開発ではあまり意識せずに利用している部分ですが、ざっくりと仕組みを想像できることができました。