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
77
自然言語でナビを!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
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
22
14k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
260
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
88
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.3k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.3k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
220
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.2k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.2k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.2k
Other Decks in Technology
See All in Technology
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
280
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
110
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
Platform Engineering for Software Developers and Architects
syntasso
1
520
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
120
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
120
Large-scale JavaScript Application Architecture
addyosmani
510
110k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Raft: Consensus for Rubyists
vanstee
136
6.6k
BBQ
matthewcrist
85
9.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Optimizing for Happiness
mojombo
376
70k
Speed Design
sergeychernyshev
25
620
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
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 ご清聴ありがとう ございました