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
99
自然言語でナビを!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
23
15k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
660
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
220
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.8k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.5k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
340
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.5k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.6k
Other Decks in Technology
See All in Technology
Claude Code に プロジェクト管理やらせたみた
unson
7
4.8k
Amplify Gen2から知るAWS CDK Toolkit Libraryの使い方/How to use the AWS CDK Toolkit Library as known from Amplify Gen2
fossamagna
0
150
【あのMCPって、どんな処理してるの?】 AWS CDKでの開発で便利なAWS MCP Servers特集
yoshimi0227
6
600
AWS CDK 入門ガイド これだけは知っておきたいヒント集
anank
4
490
マルチプロダクト環境におけるSREの役割 / SRE NEXT 2025 lunch session
sugamasao
1
220
衛星運用をソフトウェアエンジニアに依頼したときにできあがるもの
sankichi92
1
210
敢えて生成AIを使わないマネジメント業務
kzkmaeda
2
500
shake-upを科学する
rsakata
7
900
事例で学ぶ!B2B SaaSにおけるSREの実践例/SRE for B2B SaaS: A Real-World Case Study
bitkey
1
270
ゼロからはじめる採用広報
yutadayo
3
1k
大量配信システムにおけるSLOの実践:「見えない」信頼性をSLOで可視化
plaidtech
PRO
0
260
スタートアップに選択肢を 〜生成AIを活用したセカンダリー事業への挑戦〜
nstock
0
270
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Optimizing for Happiness
mojombo
379
70k
Music & Morning Musume
bryan
46
6.7k
Thoughts on Productivity
jonyablonski
69
4.7k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
What's in a price? How to price your products and services
michaelherold
246
12k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
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 ご清聴ありがとう ございました