2018年12月15日開催「Developers Boost~U30エンジニアの登竜門~」にて発表した資料です。
CONFIDENTIAL ©NAVITIME JAPAN自然言語でナビを!VUIとしてのカーナビ株式会社ナビタイムジャパンACTS(研究開発部門) 本多 広晃C-6#devboostB
View Slide
CONFIDENTIAL ©NAVITIME JAPAN自己紹介本多 広晃Hiroaki Honda- サーバーサイド- 自然言語処理- フットサル- 温泉
CONFIDENTIAL ©NAVITIME JAPANNAVITIMEについて会社名 株式会社ナビタイムジャパン設立 2000年3月1日業務内容 コンシュマー向けナビゲーションアプリ/Webサイトの運営・開発通信カーナビゲーション事業経路探索エンジンのライセンス事業 など従業員数 500名 ★うちエンジニアが8割以上!
CONFIDENTIAL ©NAVITIME JAPANNAVITIMEについて外国人&海外公共交通自動車NAVITIME 乗換NAVITIMEこみれぽバスNAVITIMEドライブサポーター カーナビタイムトラックカーナビNAVITIME TransitNAVITIME forJapan TravelPlat byNAVITIMENAVITIMETravelウォーキングNAVITIME-ALKOO-二輪車 トラベル&フィットネス自転車NAVITIMEツーリングサポーター月間ユニークユーザー数約5,100万人 有料会員数約480万人(2018/09時点)
CONFIDENTIAL ©NAVITIME JAPANNAVITIMEについてトータルナビ事業 ヘルスケア事業バス事業 ドライブ事業ツーリング事業 メディアトラベル事業インバウンド事業 キャリア協業事業テレマティクス事業 交通コンサルティング事業ビジネスナビタイム事業法人ソリューション事業・トータルナビアプリ・乗換検索アプリ・法人向けウォーキングコース作成ツールの開発、販売・バスアプリ・公共交通事業者向けソリューションサービス・各種カーナビアプリ・自転車、バイクのナビアプリ・旅行計画,予約アプリ・海外乗換アプリ・自治体向け観光アプリ・外国人旅行客誘致等のコンサルティング・通信キャリア会社とのプロダクトアプリ・国内外カーメーカー、車載機メーカー向けOEMアプリ・移動に関するビッグデータを活用した各種コンサル・動態管理ソリューション・トラックアプリ・サービス内で使用されている機能をAPi,SDKで販売事業領域B to C B to B / B to G
CONFIDENTIAL ©NAVITIME JAPANボイスコントロールとは2013年ファーストリリースハンズフリーでナビを操作可能「ナビタイム」または「ボイスコントロール」で起動
CONFIDENTIAL ©NAVITIME JAPAN今日話すこと• 2013年当時に作りこんだ自前の自然言語処理エンジンはメンテナンスコストが嵩んでいた• 一方で、最近はVUIの開発環境が整っている• 開発ツール群• 設計ガイドライン• 既存のコードベースで改修を重ねるよりも、新しい技術スタックを使ってリプレースした方がいいと判断⇒この過程における苦労話と、得られた知見を共有します
CONFIDENTIAL ©NAVITIME JAPANArchitectureBusiness Logic Controller NLPSTT/TTS社内API群- 経路検索- 地図- 天気発話音声 テキスト解析結果音声 テキスト
CONFIDENTIAL ©NAVITIME JAPAN本日のスコープBusiness Logic Controller NLP
CONFIDENTIAL ©NAVITIME JAPAN自前の自然言語処理エンジンの課題正規表現でゴリゴリルールベースの処理が複雑…品詞分解もゴリゴリ道路名称のパターン
CONFIDENTIAL ©NAVITIME JAPAN自前の自然言語処理エンジンの課題言い回しの数だけDBにレコードが存在する…• 同じ意味の文言を、想定される言い回しの数(数十パターン)ぶんDBに格納• 1文字でも異なると認識不可例)
CONFIDENTIAL ©NAVITIME JAPAN最初に考えたことBusiness Logic Controller NLPここを…
CONFIDENTIAL ©NAVITIME JAPAN最初に考えたことBusiness Logic Controller NLPこうしましょう
CONFIDENTIAL ©NAVITIME JAPANLanguageUnderstanding(LUIS)
CONFIDENTIAL ©NAVITIME JAPANWhat is LUIS?文章の意図解釈と固有表現抽出をしてくれる
CONFIDENTIAL ©NAVITIME JAPANWhat is LUIS?文章の意図解釈と固有表現抽出をしてくれるユーザーの発話
CONFIDENTIAL ©NAVITIME JAPANWhat is LUIS?文章の意図解釈と固有表現抽出をしてくれるモデルに定義した意図0~1の値をとるスコア※今回の話で非常に重要。後述。
CONFIDENTIAL ©NAVITIME JAPANWhat is LUIS?文章の意図解釈と固有表現抽出をしてくれる発話に含まれる固有表現モデルに定義した固有表現のタイプ
CONFIDENTIAL ©NAVITIME JAPANWhy LUIS?• 機械学習により文言のゆらぎを吸収してくれる• 言い回しのDBを排除できる• 音声認識での失敗をカバー可能• ユーザーの発話:『近くのコンビニに行きたい』• 音声認識の結果:『近くのコンビニに期待』• 日本語に対応• 形態素解析もやってくれるので前処理不要
CONFIDENTIAL ©NAVITIME JAPANしかし
CONFIDENTIAL ©NAVITIME JAPAN新事実の発覚Business Logic Controller NLP発話の意図解釈だけでなく会話の状態管理も担っていることが判明
CONFIDENTIAL ©NAVITIME JAPAN状態を保持しないシーケンス天気は?周辺の朝9時の天気は曇り。気温は14度です。
CONFIDENTIAL ©NAVITIME JAPAN状態を保持するシーケンス東京タワーに行きたい東京タワーが見つかりました。目的地にしますか?東京タワー周辺の朝9時の天気は曇り。気温は14度です。天気は?
CONFIDENTIAL ©NAVITIME JAPANリプレーススコープの拡大• 当初の想定では、NLPサーバーをLUISに置き換えるだけで完結するものだと思っていた• しかしNLPサーバーは状態を保持していたため、同じ「天気は?」という質問でも、それまでの会話の内容によって返答が変わる• 一方LUISはステートレスなサービスで、レスポンスは冪等⇒この差異をどこかで吸収する必要が生じた
CONFIDENTIAL ©NAVITIME JAPAN次に考えたことBusiness Logic Controller NLPこいつを
CONFIDENTIAL ©NAVITIME JAPAN次に考えたことBusiness Logic Controller NLPこうしましょう
CONFIDENTIAL ©NAVITIME JAPANBot Service
CONFIDENTIAL ©NAVITIME JAPANWhat is Bot Service?• 実装~デプロイ、分析などBot開発におけるライフサイクルをサポートしてくれる統合環境• SDKによりBot開発が容易に• C#• JavaScript• 様々なチャネルと統合が可能• Slack, Facebook Messenger, Skype, Email …
CONFIDENTIAL ©NAVITIME JAPANWhy Bot Service?状態管理を一任できる• 会話IDが発行され、ユーザー毎の状態管理が容易• 対応するアプリが増えても安心
CONFIDENTIAL ©NAVITIME JAPANしかしまた新たな課題が…
CONFIDENTIAL ©NAVITIME JAPANつくり始めて気づいたこと既存システムが優秀だった• 多機能で、全てを移植するとなると長引く• 現時点でのLUISでは対応できないケース(例) 字句の並びは似てるが意図が異なる発話・「地図を小さく」⇒ 地図を小さくしてほしい・「地図が小さい」⇒ 地図を大きくしてほしい
CONFIDENTIAL ©NAVITIME JAPAN最終的な構成Business LogicController NLPDispatcher
CONFIDENTIAL ©NAVITIME JAPAN最終的な構成Business LogicController NLPDispatcher既存の資産はそのまま流用
CONFIDENTIAL ©NAVITIME JAPAN最終結果Business LogicController NLPDispatcher新旧両方の解析器にリクエスト
CONFIDENTIAL ©NAVITIME JAPAN最終結果Business LogicController NLPDispatcherLUISが返却するスコア値が閾値を上回った場合、新解析器の結果を利用。閾値を下回ったら、旧解析器の結果を利用。
CONFIDENTIAL ©NAVITIME JAPAN最終結果Business LogicController NLPDispatcher段階的な機能移行が可能
CONFIDENTIAL ©NAVITIME JAPANうまくいった点旧システムをブラックボックスにしたまま移行できた• 結合テストを書くことで、調査を最低限に• 入り組んだロジックもAIもブラックボックスというアナロジーLUISのスコア判定による新旧システムの共存• 旧システム:今までの機能担保• 新システム:新機能や複雑な発話の対応• 段階的に移行できることで心に余裕ができた
CONFIDENTIAL ©NAVITIME JAPAN既存システムに新サービスを組み込むには• つくりこまれた既存システムは得てして高機能• 一方、新しい技術は改善していくことを前提にして市場に投入されるため、最初は完全ではない• 段階的な移行はこのギャップを埋めるのに有効(可能な限り)段階的に移行する
CONFIDENTIAL ©NAVITIME JAPAN既存システムに新サービスを組み込むには• いざモジュールをすげ替えようとした時に、APIが綺麗でないと結局全書き換えになる• とはいえ最初からきれいなインターフェースを見つけるのは難しいので、定期的なリプレースは有効かもシステム間の疎結合を保っておく
CONFIDENTIAL ©NAVITIME JAPANご清聴ありがとうございました