• 検索結果がありません。

リアクティブ対話システム

N/A
N/A
Protected

Academic year: 2021

シェア "リアクティブ対話システム"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)

リアクティブ対話システム

Reactive dialogue system

両角

和軌

1

久保寺

1

Kazuki Morozumi

1

and Makoto Kubodera

1

1

株式会社

Nextremer

1

Nextremer Co., Ltd

Abstract: We propose new dialogue system architecture using reactive design, functional design and

microservices.This architecture improves continuous delivery and problem division for dialogue system. For provider side, when we provide some dialogue system we will get feedback from user and should improve own system as soon as possible.Reactive dialogue system make modification & deployment easy. For system side, Reactive dialogue system can change own functionality based on any event.

It means system can change own self based on user request, domain of task and topic of conversation.

1.はじめに

本提案では、対話システムの各機能の結合度を下 げ、より柔軟に振る舞いを変更できるリアクティブ 対話システムの構成について述べる。 リアクティブ対話システムでは、対話システムを 構成する各機能を1 つの関数として扱い、それらの 関数を合成することで1 つの対話システムを構成す る。これにより各関数は独立した環境で動作し、各 機能の変更や機能の組み合わせの変更を容易にする。 以降、リアクティブ対話システムが解決する課題、 システムの構成要素について詳しく解説する。 図1. リアクティブ対話システム概要

2.対話システム運用における課題

株式会社 Nextremer ではこれまで多くの音声対話 システム、テキストチャットボットシステムを開 発・運用してきた。対話システムを利用したサービ スの実運用において、ユーザー満足度を向上させる ための細かなチューニングが多く発生することが明 らかになった。 具体的には、ユーザーの発話に対して想定と全く 異なる応答をしている場合に、ルールベースの対話 シナリオ、辞書、外部知識を更新するような作業で ある。また、対話システムの効果検証を行うために、 複数の対話戦略を比較する場面が多々あり(例えば AB テストなど)、対話システムの振る舞いをいくつ かのパターンで変更させる必要があった。弊社のこ れまでの対話システム開発では対話システムそのも もの実装に重きを置いていたため、重厚で結合度の 高い実装となっていた。これにより上記のような運 用や実験の際に、結合度の高い実装の影響で意図し た変更を柔軟に行えず、場合によっては大部分を実 装し直す必要があった。 対話システムの領域では、主に対話タスクを解決 するアルゴリズムとその精度が関心の対象であるた め、昨今のWeb 開発に取り入れられているようなデ プロイのサイクルを高速にしたり、変更を容易に可 能にするアーキテクチャについてはさほど言及され ていない。しかし、対話システムを利用したサービ 人工知能学会研究会資料 SIG-SLUD-B508-07 - 35 -

(2)

スの評価は当然ながら利用したユーザーが快適に利 用できたか、が焦点となるため、利用ユーザーから のフィードバックを得て柔軟に振る舞いを適用させ ていく必要がある。 ユーザーの状況に合わせた細かな修正や、精度を 向上した新機能をオンラインで投入でき、ユーザー からフィードバックを得て更に改善していくような デプロイと改善のプロセスが対話システム運用では 重要となる。 リアクティブ対話システムは前述の対話システム 運用における課題を解決するために、対話システム を構成する各機能を関数として部品化して、柔軟な 機能変更を容易にする。

3.アーキテクチャ

ユーザーからフィードバックを得て柔軟にサービ スを改善していくサイクルは、昨今のSNS やソーシ ャルゲームなどに代表されるWeb サービスの業界で 広く認知され、それを可能にするためのシステムア ーキテクチャが提案・運用されている。 Web サービスに利用されている柔軟な変更を可能 にする概念・技術のうち、リアクティブ対話システ ムの構成において重要なものをいくつか紹介する。

3.1 マイクロサービス

2014 年に ThoughtWorks 社の James Lewis らが提唱 したマイクロサービス[1]は、複数の機能から構成さ れる 1 つの大きな(モノシリックな)アプリケーショ ンを機能毎に開発・運用が行えるように分割するこ とで、迅速な機能のアップデートや、システムのス ケーラビリティ・耐障害性を向上させることができ ると主張している。 マイクロサービスの目的は大規模なWeb サービス を安定して運用・改善するための開発組織の構造を システムアーキテクチャで表現することにある。こ れは対話システム開発においてもマイクロサービス のアイディアを取り入れることで、新機能を迅速に 対話システムに反映させて検証サイクルの速度を上 げられるという大きな利点がある。

3.2 Your Server as a Function

2014 年に Marius Eriksen は 1 つ 1 つのサーバーの 入出力に対して型を定義することで、サーバー(もし くは機能)を関数として扱うための手法を提唱し、こ のアイディアを実装したライブラリ Finagle を公開 した。[2] Marius Eriksen の主張はマイクロサービスを意識 されたものではないが、思想や設計に両者で共通し たものがあるためマイクロサービスを実装するため のライブラリとしてFinagle が利用されている。[3]

3.3 リアクティブシステム

2014 年に Jonas Bonér らは自身の経験則に基づい た、システムの可用性・スケーラビリティを高める ための汎用的なシステムアーキテクチャを提唱した。 [4] 上記では主に大規模システムにおける設計のガイ ドラインを示しているが、ユーザーに対しての応答 を主眼に置きシステムの状況に応じて柔軟に振る舞 いを変更するという点が、対話システムにおいても 有用と考えられる。 例えば、モバイル端末に搭載されたパーソナルア シスタントでは、端末の電波・電源状況、保持する データ、連携する外部サービスの状況など、リアル タイムに状況が変化することが考えられる。それぞ れの場合にユーザーにとって適切な応答・アクショ ンを行うためにはいくつかの固定された振る舞いで はなく、柔軟にシステムの振る舞いが変更されるこ とが要求される。 システムに含まれる各機能がメッセージに応じて リアクティブに動作するようなアーキテクチャはこ のような要求を満たすために有用である。

4.リアクティブ対話システム

本提案での、柔軟に振る舞いを変化させるリアク ティブ対話システムの構成について技術的な詳細を 述べる。 リアクティブ対話システムは Function, Selector, Coordinator によって構成されている。 図2.システムアーキテクチャ

4.1 Function

対話システムでは主に、言語理解、対話状態の管 - 36 -

(3)

理、対話知識検索、外部システムとの連携、行動選 択、応答生成など複数の機能によって構成されてい る。[5] リアクティブ対話システムではこれらの各機能を WebAPI として独立に実装し、独立した機能として 動作させる。この際の 1 つ 1 つの独立した機能を Function と呼ぶ。

4.2 Selector

複数のFunction を組み合わせて動作させる際の呼 び出し順序(call graph)を定義する機能を Selector と 呼ぶ。

4.3 Coordinator

Selector によって定義された call graph を参照し、 その順序に沿って書く Function を呼び出す機能を Coordinator と呼ぶ。

各Function の出力を次の Function への入力として 渡すため、Unix/Linux コマンドをパイプで連結させ るようにCoordinator は動作する。Selector は call graph を更新すると、Cordinator はリアルタイムに Function の呼び出し順を変更し、対話システム全体の振る舞 いが変更されることとなる。 前述の対話システム運用の課題に対する適用例と しては、例えばある Function A の機能を更新した Function A’を実装したとする。これを稼働中の対話 システムにデプロイする場合には、Selector を通して call graph 内の Function A を Function A’に変更する ことで対話システムの動作を即時に切り替えること ができる。また、call graph 内の任意の位置に新たな Function を差し込むことも可能となるため、既存の 機能と新機能を並行稼働したり、既存の振る舞いに 影響を与えずに内部の機能を追加するような変更も 可能となる。 上記のような新機能のデプロイの簡易化の他にも、 ユーザー毎にcall graph を変化させたり、対話のドメ インが変化する毎に call graph を変化させるように 利用することができる。 これにより対話システムの開発者は、ミクロでは Function の開発に集中し、マクロな視点では利用ユ ーザーに主眼を置いた対話システムの振る舞いに集 中することができるようになる。

5.課題

本提案では対話システムの振る舞いを柔軟に変化 させるためのソフトウェアアーキテクチャに対して 述べた。 一方で、あるユーザー要求に対して対話システム がどのように振る舞うべきか、という点については 言及していない。ユーザーの要求を満たすためにど のようなFunction を提供すべきか、どのような call graph が適切か、という Selector の処理がリアクティ ブ対話システムを利用する際の課題として想定され る。 単純にFunction のバリエーションを増やしていっ た場合、Function の種類が増えるほどに幅広い要求 に応えられる対話システムの実現が可能となる。ま た、Function は必ずしもクローズドな環境で提供さ れる必要はないため、一般の開発者が自由に開発・ 公開できるような発展も考えられる。 しかし、Function の種類が非常に多く存在した場 合、適切なcall graph を人間が設定することは簡単な タスクではない。リアクティブ対話システムの柔軟 な変更の性質を考慮すると、人間が事前に設定した” 固定された” 機能の組み合わせではその利点を十分 に活かすことはできないと考えている。

Selector が自動化され 1 アクセス毎に call graph が 変更されるような動作をしてよりリアクティブ対話 システムらしさが発揮される。 また、Function は必ずしもクローズドな環境で提 供される必要はなく、一般の開発者が自由に開発・ 公開できるようにすることも可能となる。 図3. リアクティブ対話システムの発展 - 37 -

(4)

6.参考文献

[1] James Lewis , Martin Fowler: Microservices, https://martinfowler.com/articles/microservices.html (2014)

[2] Marius Eriksen: Your server as a function (2013) [3] Phil Calçado: Microservices in Scala and Finagle ,

https://developers.soundcloud.com/blog/building-product s-at-soundcloud-part-3-microservices-in-scala-and-finagle (2014)

[4] Jonas Bonér, Dave Farley, Roland Kuhn, and Martin Thompson.: The Reactive Manifesto,

http://www.reactivemanifesto.org/ (2014)

[5] 中野 幹生, 駒谷 和範, 船越 孝太郎, 中野 有紀子,

奥村 学: 対話システム (自然言語処理シリーズ)

(2015)

参照

関連したドキュメント

SVF Migration Tool の動作を制御するための設定を設定ファイルに記述します。Windows 環境 の場合は「SVF Migration Tool の動作設定 (p. 20)」を、UNIX/Linux

本節では本研究で実際にスレッドのトレースを行うた めに用いた Linux ftrace 及び ftrace を利用する Android Systrace について説明する.. 2.1

・HSE 活動を推進するには、ステークホルダーへの説明責任を果たすため、造船所で働く全 ての者及び来訪者を HSE 活動の対象とし、HSE

手動のレバーを押して津波がどのようにして起きるかを観察 することができます。シミュレーターの前には、 「地図で見る日本

パキロビッドパックを処方入力の上、 F8特殊指示 →「(治)」 の列に 「1:する」 を入力して F9更新 を押下してください。.. 備考欄に「治」と登録されます。

の 立病院との連携が必要で、 立病院のケース ー ーに訪問看護の を らせ、利用者の をしてもらえるよう 報活動をする。 の ・看護 ・ケア

・電源投入直後の MPIO は出力状態に設定されているため全ての S/PDIF 信号を入力する前に MPSEL レジスタで MPIO を入力状態に設定する必要がある。MPSEL

基準の電力は,原則として次のいずれかを基準として決定するも