Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
自然言語でナビを!VUIとしてのカーナビ
Search
NAVITIME JAPAN
PRO
December 15, 2018
Technology
0
62
自然言語でナビを!VUIとしてのカーナビ
2018年12月15日開催「Developers Boost~U30エンジニアの登竜門~」にて発表した資料です。
NAVITIME JAPAN
PRO
December 15, 2018
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
1.7k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
130
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.2k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
4.8k
こうしてふりかえりは終わってしまった / A Demise of a retrospective
navitimejapan
PRO
44
27k
もーひとつの時間がない症候群 / Yet Another SOT Syndrome
navitimejapan
PRO
1
2.1k
シーズン2〜スクラムチームのバトンを渡す〜 / Season 2 -pass the button of a scrum team-
navitimejapan
PRO
2
2.9k
Other Decks in Technology
See All in Technology
ペパボのオブザーバビリティ研修2024 説明資料
kesompochy
0
1.1k
DDDにおける認可の扱いとKotlinにおける実装パターン / authorization-for-ddd-and-kotlin-implement-pattern
urmot
4
390
年間一億円削減した時系列データベースのアーキテクチャ改善~不確実性の高いプロジェクトへの挑戦~
lycorptech_jp
PRO
3
2.9k
Scaling Technical Excellence at 104: Evolution in AWS and Developer Empowerment
scotthsieh825
1
150
AI研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
130
エンジニア向け会社紹介資料
caddi_eng
14
220k
Classmethod Odyssey 登壇資料
yamahiro
0
390
AOAI Dev Day - Opening Session
yoshidashingo
2
430
How to Think Like a Performance Engineer
csswizardry
4
590
OSSコミットしてZennの課題を解決した話
dyoshikawa1993
0
150
ソフトウェアエンジニアリングの知見を活かして データ基盤をいい感じにする on Snowflake [MIERUNE BBQ #10]
mtpooh
2
150
たくさん本を読んだけど 1年後には綺麗サッパリ!を乗り越えて 学習の鬼になるぞ👹
yum3
0
160
Featured
See All Featured
A designer walks into a library…
pauljervisheath
201
24k
Build your cross-platform service in a week with App Engine
jlugia
227
17k
Visualization
eitanlees
139
14k
Optimizing for Happiness
mojombo
373
69k
How To Stay Up To Date on Web Technology
chriscoyier
784
250k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
A better future with KSS
kneath
231
17k
Rails Girls Zürich Keynote
gr2m
93
13k
Speed Design
sergeychernyshev
9
270
Music & Morning Musume
bryan
43
5.9k
Mobile First: as difficult as doing things right
swwweet
219
8.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
52k
Transcript
CONFIDENTIAL ©NAVITIME JAPAN 自然言語でナビを! VUIとしてのカーナビ 株式会社ナビタイムジャパン ACTS(研究開発部門) 本多 広晃 C-6
#devboostB
CONFIDENTIAL ©NAVITIME JAPAN 自己紹介 本多 広晃 Hiroaki Honda - サーバーサイド
- 自然言語処理 - フットサル - 温泉
CONFIDENTIAL ©NAVITIME JAPAN NAVITIMEについて 会社名 株式会社ナビタイムジャパン 設立 2000年3月1日 業務内容 コンシュマー向けナビゲーションアプリ/Webサイ
トの運営・開発 通信カーナビゲーション事業 経路探索エンジンのライセンス事業 など 従業員数 500名 ★うちエンジニアが8割以上!
CONFIDENTIAL ©NAVITIME JAPAN NAVITIMEについて 外国人&海外 公共交通 自動車 NAVITIME 乗換 NAVITIME
こみれぽ バス NAVITIME ドライブ サポーター カーナビ タイム トラック カーナビ NAVITIME Transit NAVITIME for Japan Travel Plat by NAVITIME NAVITIME Travel ウォーキング NAVITIME-ALKOO- 二輪車 トラベル&フィットネス 自転車NAVITIME ツーリングサポーター 月間ユニークユーザー数 約5,100万人 有料会員数 約480万人 (2018/09時点)
CONFIDENTIAL ©NAVITIME JAPAN NAVITIMEについて トータルナビ事業 ヘルスケア事業 バス事業 ドライブ事業 ツーリング事業 メディア
トラベル事業 インバウンド事業 キャリア協業事業 テレマティクス事業 交通コンサル ティング事業 ビジネス ナビタイム事業 法人 ソリューション事業 ・トータルナビアプリ ・乗換検索アプリ ・法人向けウォーキングコース 作成ツールの開発、販売 ・バスアプリ ・公共交通事業者向け ソリューションサービス ・各種カーナビアプリ ・自転車、バイクの ナビアプリ ・旅行計画,予約アプリ ・海外乗換アプリ ・自治体向け観光アプリ ・外国人旅行客誘致等の コンサルティング ・通信キャリア会社との プロダクトアプリ ・国内外カーメーカー、車載機 メーカー向けOEMアプリ ・移動に関するビッグデータを 活用した各種コンサル ・動態管理ソリューション ・トラックアプリ ・サービス内で使用されている 機能をAPi,SDKで販売 事業領域 B to C B to B / B to G
CONFIDENTIAL ©NAVITIME JAPAN ボイスコントロールとは 2013年ファーストリリース ハンズフリーでナビを操作可能 「ナビタイム」または 「ボイスコントロール」で起動
CONFIDENTIAL ©NAVITIME JAPAN 今日話すこと • 2013年当時に作りこんだ自前の自然言語処理エンジンはメンテナンスコストが 嵩んでいた • 一方で、最近はVUIの開発環境が整っている •
開発ツール群 • 設計ガイドライン • 既存のコードベースで改修を重ねるよりも、新しい技術スタックを使ってリプ レースした方がいいと判断 ⇒この過程における苦労話と、得られた知見を共有します
CONFIDENTIAL ©NAVITIME JAPAN Architecture Business Logic Controller NLP STT/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 JAPAN Language Understanding (LUIS)
CONFIDENTIAL ©NAVITIME JAPAN What is LUIS? 文章の 意図解釈と 固有表現抽出 をしてくれる
CONFIDENTIAL ©NAVITIME JAPAN What is LUIS? 文章の 意図解釈と 固有表現抽出 をしてくれる
ユーザーの発話
CONFIDENTIAL ©NAVITIME JAPAN What is LUIS? 文章の 意図解釈と 固有表現抽出 をしてくれる
モデルに定義した意図 0~1の値をとるスコア ※今回の話で非常に重要。後述。
CONFIDENTIAL ©NAVITIME JAPAN What is LUIS? 文章の 意図解釈と 固有表現抽出 をしてくれる
発話に含まれる固有表現 モデルに定義した 固有表現のタイプ
CONFIDENTIAL ©NAVITIME JAPAN Why 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 JAPAN Bot Service
CONFIDENTIAL ©NAVITIME JAPAN What is Bot Service? • 実装~デプロイ、分析などBot開発におけるライフサイ クルをサポートしてくれる統合環境
• SDKによりBot開発が容易に • C# • JavaScript • 様々なチャネルと統合が可能 • Slack, Facebook Messenger, Skype, Email …
CONFIDENTIAL ©NAVITIME JAPAN Why Bot Service? 状態管理を一任できる • 会話IDが発行され、ユーザー毎の状態管理が容易 •
対応するアプリが増えても安心
CONFIDENTIAL ©NAVITIME JAPAN しかしまた 新たな課題が…
CONFIDENTIAL ©NAVITIME JAPAN つくり始めて気づいたこと 既存システムが優秀だった • 多機能で、全てを移植するとなると長引く • 現時点でのLUISでは対応できないケース (例)
字句の並びは似てるが意図が異なる発話 ・「地図を小さく」⇒ 地図を小さくしてほしい ・「地図が小さい」⇒ 地図を大きくしてほしい
CONFIDENTIAL ©NAVITIME JAPAN 最終的な構成 Business Logic Controller NLP Dispatcher
CONFIDENTIAL ©NAVITIME JAPAN 最終的な構成 Business Logic Controller NLP Dispatcher 既存の資産はそのまま流用
CONFIDENTIAL ©NAVITIME JAPAN 最終結果 Business Logic Controller NLP Dispatcher 新旧両方の解析器にリクエスト
CONFIDENTIAL ©NAVITIME JAPAN 最終結果 Business Logic Controller NLP Dispatcher LUISが返却するスコア値が閾値
を上回った場合、新解析器の結 果を利用。閾値を下回ったら、 旧解析器の結果を利用。
CONFIDENTIAL ©NAVITIME JAPAN 最終結果 Business Logic Controller NLP Dispatcher 段階的な
機能移行 が可能
CONFIDENTIAL ©NAVITIME JAPAN うまくいった点 旧システムをブラックボックスにしたまま移行できた • 結合テストを書くことで、調査を最低限に • 入り組んだロジックもAIもブラックボックスというアナロジー LUISのスコア判定による新旧システムの共存
• 旧システム:今までの機能担保 • 新システム:新機能や複雑な発話の対応 • 段階的に移行できることで心に余裕ができた
CONFIDENTIAL ©NAVITIME JAPAN 既存システムに新サービスを組み込むには • つくりこまれた既存システムは得てして高機能 • 一方、新しい技術は改善していくことを前提にして市場に投入されるため、 最初は完全ではない •
段階的な移行はこのギャップを埋めるのに有効 (可能な限り)段階的に移行する
CONFIDENTIAL ©NAVITIME JAPAN 既存システムに新サービスを組み込むには • いざモジュールをすげ替えようとした時に、APIが綺麗でないと結局全書き 換えになる • とはいえ最初からきれいなインターフェースを見つけるのは難しいので、 定期的なリプレースは有効かも
システム間の疎結合を保っておく
CONFIDENTIAL ©NAVITIME JAPAN ご清聴ありがとう ございました