# ニつの動作を含む重文型命令文を受理するためのサービス指向発話文解析の拡張

但田聖 徳久雅人 木村周平
鳥取大学 工学部
b19t2060u@edu.tottori-u.ac.jp
\{tokuhisa,kimura\}@tottori-u.ac.jp

## 概要

本稿では，2つの動作を一度に命令する発話文を受理 してサービスの提供を行う手法について述べる。スマー トフォンや家電に音声認識を使ったサービス要求の命令 が可能である. 1 つの動作を命令する発話文は受理可能 である.しかし，2つの動作を命令するためには 2 回の 発話が必要となる.

本稿では，車載器に用いられるサービス指向発話文解析器（従来手法）に対して，文分割，分割評価および命令合成を追加することで，2つの動作を含む命令文であっ ても適切にサービスの提供が実現できることを示す.

## 1 はじめに

近年，音声認識を用いた技術が普及している．スマー トフォンや家電に，音声認識を使ったサービス要求の命令が可能になっている.

本研究室では音声命令によって操作可能な車載器の開発を進めている [1].この車載器では，1つの動作のため の命令文しか実行することができない. よって，この車載器に 2 つの動作を命令したい時は，1つずつ動作を命令しなければならず，時間と手間がかかってしまう.

そこで，本稿では車載器で 2 つの動作を含む重文型命令文が実行できるようにすることを目的とする.

## 2 先行研究

文分割についての先行研究，発話文解析についての先行研究，および本稿の位置づけについて述べる.

## 2.1 文分割についての先行研究

先行研究 [2] は, 複雑な文の可読性の向上や解析処理 を目的とした研究である．WEBSPLIT という単純な文 と複雑な文をぺアとするデータセットを提案し，文分割 を可能にしたが，実際に複雑な文の解析に適用できるか の確認は行われなかった。

## 2.2 発話文解析についての先行研究

先行研究 [1] では, ユーザからのサービス要求型発話 を受け取ると，発話文の意図するサービスとメソッドを 発話文解析によって推定し，小型計算機上でサービス結果を出力する研究が行われた. 発話文解析の流れと先行研究の問題点について述べる.

## 2.2.1 発話文解析の流れ

発話文解析の流れを図 1 に示す.

図 1 発話文解析の流れ

発話文解析器がユーザから発話文を受け取ると，パー ジングが行われる． パージングではサービス別に用意さ れた辞書を用いて各語句にタグ付けを行い，「サービス 別タグ付き文」を出力する．次に，意図解析では，オリ ジナルコーパスの事例と「サービス別タグ付き文」の比較を行い，意図クラスを求める．オリジナルコーパスは，「発話文，サービス名，メソッド名・引数」という事例で 構成され，サービス名とメソッド名・引数の組を意図ク ラスとする．比較の際，事例 $i$ とサービス別タグ付き 文」との近さ $d_{1}$ を次式で求めて利用する.

$
d_{1}\left(U, T_{i}\right)=\frac{2\left|U \cap T_{i}\right|}{|U|+\left|T_{i}\right|+\beta}
$

ここで， $U$ はタグ付き文のタグの集合， $T_{i}$ は意図解析用事例 $i$ のタグの集合， $\beta$ は偏りを持たせるパラメータで ある.

近さの降順で意図クラスが得られ，解候補として複数 が出力される.

次に，スロットフィリングでは，得られた解候補の引数に対して代入を行い，得られたスロット值（引数と代入語句の対）を解候補に加えて出力する.

最後に，選択では，解候補のタグの一致率およびス ロットの代入率からスコア $d_{2}$ を次式で求めて利用する.

$
d_{2}\left(U, T_{i}, b, s\right)=\frac{2\left|U \cap T_{i}\right|+b}{|U|+\left|T_{i}\right|+s+\beta}
$

ここで，bはスロットフィリングにおいて代入されたス ロット数であり，s はスロットフィリングにおいて代入 されるべきスロット数である。なお， $U, T_{i}$ おび $\beta$ は 式 (1)と同じである.

スコアの降順で意図クラスおよび引数の具体值が得ら れ, 最高スコアの命令 (サービス名・メソッド名・スロッ 卜値）が選ばれる。命令はサービスの実行部に送られて， ユーザにサービスの提供が行われる．以上の流れで発話文解析を行う。
以下に発話文解析の例を示す.

発話文：鳥取の地図を表示してください

意図クラス：serviceMap.comShow(loc)

解候補のスロット値 : $\mathrm{loc}=$ 鳥取

命令：serviceMap.comShow(loc=鳥取)

## 2.2.2 先行研究の問題点

2 つ動作を含む重文型命令文を先行研究の手法に入力すると， 1 事例につき 1 意図クラスしかオリジナル コーパスに登録されてないため，1つの命令しか実行さ れない． 2 つの動作を含む命令を実行させるには，オリ ジナルコーパスの発話文を組み合わせて命令文を作り， その 1 つの命令文につき動作を 2 つ登録するというア イデアが考えられる。しかし，オリジナルコーパスに登録されている発話文は約 3 千文であり，その組み合わせ は最大で約 9 百万文となる。これではコストが大きす ぎる.

## 2.3 本稿の位置づけ

本稿では，コストを抑えるために，コーパスへの文の 追加ではなく, 車載器の発話文解析器の拡張という手段 をとる。すなわち，文分割を発話文解析の前に行うこと で，2つの動作を含む文を 1 つの動作を含む 2 つの文と し，得られる命令を適切に実行することを試みる。ただ し，本稿では，2つの動作を含む表現を重文型命令文に 限定する。

## 3 提案手法

提案手法は，従来手法 (2.2 節) に対し，「文分割」，「分割評価」および「命令合成」を追加した拡張手法である （図 2)。拡張のねらいは次のとおりである.
- 文分割 $: 1$ 文 1 命令となるように文を分割
- 分割評価：分割/非分割のどちらが意味を波み 取ったかを評価
- 命令合成：単機能な複数命令か，高機能な単一命令かの選択

図 2 拡張された発話文解析器

以下に提案手法における処理の要点を例示する。

重文型命令文に対する文分割の結果を示す.

重文型命令文：地図を表示して音楽をかけてくだ さい

分割後の文 $1:$ 地図を表示してください

分割後の文 2 : 音楽をかけてください

分割評価では，重文型命令文を従来手法で解析した結果，および分割後の文 1 ，文 2 をそれぞれ解析した結果 という 3 つの結果を扱う。地図サービスと仮定すると「音楽」の意味が汲み取られず，音楽サービスを仮定する と「地図」の意味が汲み取られない。一方で分割後では それぞれで意味が汲み取られるため，分割が適切と判定 される.

命令合成については，別の例文で説明する．たとえば，「初音ミクをかけてから鏡音リンをかけてください」と いう場合，命令合成には 2 つの命令が入力され，代替命令が出力される.

命令 1 : serviceMusic.comSearch $(\mathrm{obj}=$ 初音ミク)

命令 2 : serviceMusic.comSearch(obj=鏡音リン)

代替命令：serviceMusic.compPlayList(obj1=初音

ミク，obj2=鏡音リン)

検索再生の命令 2 つよりも，プレイリストの命令 1 つ の方が容易にサービスの実行が行える.

本節では，文分割，分割評価および命令合成について 詳しく述べる。

## 3.1 文分割

文分割は，発話文に特定のワードが含まれている時，特定のワードの前後で単文に分割する．特定のワードの 決定方法，特定のワードの判別方法および文末処理につ いて示す.

## 3.1.1 特定のワードの決定方法

鳥バンクという日本語と英語の意味類型パターン辞書 がある [3].この中では，節間キーワードという主節と従属節をつなぐワードが定義されている．節間キーワード の出現頻度上位 30 件の内，重文型命令文に含まれると 想定されるものを特定のワードとして選出する.

節間キーワードの出現頻度上位 30 件は表 1 の通りと なった.

表 1 中の，「て」，「てから」，「たら」，「ながら」の 4 つ の節間キーワードを特定のワードとして選出した。

## 3.1 .2 特定のワードの判別方法

文分割の判断には，特定のワードの品詞，字面および その前後の単語の品詞で定義される条件を用いる (表 2 ).

発話文を MeCab で形態素解析し，得られた解析結果 と表 2 を比較して文を分割するか判断する。

## 3.1.3 文末処理

文を分割した際，分割後の 1 文目の文末が不完全にな る.その対応として，分割前の文末表現を，分割後の 1 文目の文末に追加するという文末処理を行う．以下に，文末表現が「てください」の時の処理の例を示す.

処理前の分割後の文 1 : 音楽をかけ

処理後の分割後の文 $2:$ 音楽をかけてください 対象となる文末表現は以下のとおりである。

・〜てください|〜でください

・〜ます

・〜です

ここで，「ます/です」による命令文は，ユーザの行動を 車載器に受理させる際に使われる。たとえば，「今から 鳥取駅に行きます」や「10 時に出発です」のように予定 を登録する発話に用いられる。

## 3.2 分割評価

車載器のオリジナルコーパス (先行研究のコーパス) には既に重文型命令文が登録されている。たとえば，「シャッフルして音楽をかけてください」という文があ る.これは音楽の再生モードを変更するという，1 動作 を命令する重文型命令文である．発話文に対して毎回分割を行うと，過剩な分割となる恐れがある。この問題を 分割評価によって防ぐ.

非分割文と分割文のスコアを比較する．非分割文のス コアは $d_{2}$ を用いて求める. 分割文のスコア $d_{3}$ は，分割文の文 1 と文 2 のスコアを転用した值であり，次式を用 いて求める.

$
\begin{aligned}
& d_{3}\left(U_{1}, U_{2}, T_{1}, T_{2}, b_{1}, b_{2}, s_{1}, s_{2}\right)= \\
& \quad \frac{2\left(\left|U_{1} \cap T_{1}\right|-t\right)+2\left|U_{2} \cap T_{2}\right|+b_{1}+b_{2}}{\left|U_{1}\right|-t+\left|U_{2}\right|+\left|T_{1}\right|-t+\left|T_{2}\right|+s_{1}+s_{2}+\beta}
\end{aligned}
$

ここで, $U_{1}, T_{1}, b_{1}, s_{1}$ および $U_{2}, T_{2}, b_{2}, s_{2}$ は式 $(2)$ と同様であり，それぞれ分割後の文 1 および文 2 の值で ある. $\beta$ も同様である. $t$ は文末処理によって追加され た文末表現に対するタグ数である.

もし， $d_{2} \geqq d_{3}$ ならば非分割を採用し，そうでなけれ ば分割を採用する.

## 3.3 命令合成

命令合成の対象となる 2 つの命令の例を以下に示す.命令 1 : serviceMusic.comSearch( $\mathrm{obj}=$ 初音ミク)

命令 $2:$ serviceMusic.comSearch $(\mathrm{obj}=$ 鏡音リン) この 2 つの命令を連続で実行すると 1 曲目の再生が中断 され，2 曲目のみが再生されてしまう。

命令合成では，2つの命令が以下の条件を満たすとき，代替命令を出力する．代替命令は 2 つの命令の動作を含 む高機能な単一命令である.
- 1 つ目の命令が並列処理を行う，かつ

・ 2 つの命令間でリソースの競合がおこる

知識ベースとの照合によって，2つの命令が条件を満 たすか判断する。条件を満たす 2 つの命令と代替命令を 知識べースにまとめた（表 3)，代替命令を用意できない 場合はエラーとする. エラー時は 1 つ目の命令のみを出力するという運用にする.

## 4 実験

追加した処理部の動作の妥当性を確認する. 評価項目 を，命令文の害行誤り率および命令実行の応答時間と する.

## 4.1 実験準備

実験で用いるテストセットとして，テストセット 1～ 4 を用意した．テストセット $1 \sim 3$ をそれぞれ表 $4 \sim 6$ に 示す.

テストセット 1 は，実際に車載器を利用した際に得ら れた発話ログ 1,441 件の中から，組み合わせると重文型命令文となる，連続している 2 つの発話を抜粋したもの である (表 4).

テストセット 2 は，テストセット 1 の 2 つの発話を 3 または 4 つの特定のワードで組み合わせて作った重文型命令文である．各テスト文中にある（）内の|で区切ら れている単語は，それぞれの単語だけを含む文に展開す るという意味で，（）内に 4 つ単語を含む場合は，4つの 重文型命令文が得られる (表 5 ).

テストセット 3 は，並列処理を行う命令文のぺアを組 み合わせた重文型命令文である (表 6).

テストセット 4 は，従来の車載器のオリジナルコーパ スである (表なし, 総文数 3,519 文).

## 4.2 誤り率についての実験

テストセット 2 および 3 を用いることで 2 つの動作を 含む重文型命令文の実行確認を行う．テストセット 4 を 用いることで，元々実行できていたオリジナルコーパス の命令文 (1 動作の文) が実行できること，すなわち，提

案手法に拡張前との互換性があることを確認する。車載器 1 4を用意し, それぞれの車載器で誤り率を 求めた. 車載器 1 は従来の車載器, 車載器 2 は従来の車載器に文分割を追加した車載器, 車載器 3 は文分割・分割評価を追加した車載器, 車載器 4 は文分割・分割評価・命令合成を追加した車載器である. 誤り率は表 7 の通り になった.

テストセット 2 の誤り率は, 車載器 1 では 1.00 とな り, 車載器 $2 \sim 4$ では 0.00 となった. 文分割を追加する ことで重文型命令文を実行できることが確認できた。

なり, 車載器 4 では 0.00 となった. 命令合成を追加す ることによって，並列動作を起こす重文型命令文を適切 に実行できることが確認できた.

テストセット 4 の誤り率は, 車載器 2 では 0.39 とな り, 車載器 $1 ， 3$ および 4 では 0.00 となった. 文分割を 追加することで過剰分割がおきていることが確認できた が，分割評価を追加することで過剩分割が抑えられてい ることが確認できた.

過剩な分割が抑制された命令文を表 8 亿示す. 予定登録の命令や，元々登録されていた重文型命令が分割され ずに車載器 4 で処理できた. なお，車載器 2 で実際に表
8 の文を実行すると求めていないサービスが実行された.

## 4.3 応答時間についての実験

2 つの動作を， 1 つずつ命令した時と，重文型命令に よって一度に命令した時の応答時間を比較するために， テストセット 1 および 2 の平均応答時間を求めた. 結果 は表 9 の通りになった.

テストセット 2 の平均応答時間は, テストセット 1 の 平均応答時間に比べて約 4 秒の短縮が確認できた. 自動車内において操作にかかる時間が 4 秒短縮されることは 有益であると考える。

## 5 おわりに

本稿では, 車載器上で 2 つの動作を含む重文型の命令 に対して実行を可能にした. 手法としては，従来の車載器の発話文解析器に文分割・分割評価・命令合成の 3 つ の処理を追加した. 文分割では, 重文型命令文を分割し,解析可能とした. 分割評価および命令合成では, 文分割 に伴う実装上の問題に対応した．以上より文分割は複雑 な文の解析に有用であることが分かった. さらに，既存 の 1 動作のための解析器が流用できる点も利点である.

本稿では複雑な文を重文型の言い方に限定したが，複雑な文には重文型以外の言い回しも多くある. 今後は重文型の言い方以外の複雑な文にも文分割が有用である か，研究を進めて確認していきたい。

## 謝辞

本研究は JSPS 科研費 JP19K12548 の助成を受けた ものです.

## 参考文献

[1] 徳久 雅人, 木村 周平: 小型計算機におけるサービス指向発話文解析, 自然言語処理, 26(3), pp.545-578, 2019.

[2] Shashi Narayan, Claire Gardent, Shay B. Cohen, and Anastasia Shimorin: Split and Rephrase. Natural Language Processing(EMNLP), pp. 606-616, 2017.

[3] 池原悟, 阿部 さつき, 徳久 雅人, 村上 仁一: 非線形な表現構造 に着手した重文と複文の日英パターン化, 自然言語処理, 11(3), pp.69-95, 2004.
 但田聖 徳久雅人 木村周平 鳥取大学 工学部 b19t2060u@edu.tottori-u.ac.jp \{tokuhisa,kimura\}@tottori-u.ac.jp  