デベロッパー アトムを使った開発
Join our mailing list

Grammar Development

音声認識および自然言語理解のための文法開発

文法開発(Grammar Development)とは、ユーザの音声発言を 音声認識ソフトウェアに言葉として認識させるためのものです。 DVDレコーダーを音声で対話的な操作をするための文法を例に考えてみましょう。 ユーザが以下のような音声コマンドを発することを DVDレコーダーは理解できなければならないとします。
「今晩'アグリーベティ' 録画しといて」
「今日の'アグリーベティ'を録画してください」

文法フォーマット

文法はルールに従って作成され、機能します。 文法のルールは、ユーザが話す(だろうと予測される)フレーズのリストの ようなものと考えると理解しやすいでしょう。 上記の例は文法のルールには以下のように表記できます。

          <RecordShow>  = 今晩'アグリーベティ' 録画しといて
                        | 今日の'アグリーベティ'を録画してください
          ;
        

ここで、ふたつめのフレーズの頭にある縦線 | は選択肢であることを意味します。 つまり、ユーザが上の言い方、下の言い方のどちらで話しても 認識ソフトは同じ意味として理解する、と言うことをあらわします。 ここで多様な言い方を入力することで、ユーザが制限のない、 自然で自由な話し方をできるようになります。

ルールを参照させる(ルール・リファレンス)

DVDレコーダーとして、ひとつの番組だけでなく 他のテレビ番組も録画できる機能が必要です。 そのために、すべてのテレビ番組の名前を網羅したリスト、 <ShowName>を新しく作成し、 <RecordShow>のルールから 参照(リファレンス)させます。




          <RecordShow>  = 今晩 <ShowName> 録画しといて  
                        | 今日の<ShowName>を録画してください
          ;
          
          <ShowName>    = アグリーベティ
                        | グレイズ・アナトミー
                        | ヒーローズ
                        | ...
          ;
          
        

文法を安定させる・自由な発話に対応

ユーザがそれぞれに異なる言い方を自然に自由に話して音声操作できるようにするため、 文法を豊かに作成しさまざまな言い方に対応できるように開発することが ロバストな音声アプリケーション開発に重要です。 たとえば、「・・・を録画して欲しい」と言う意味のさまざまな発話に 対応させるには以下のように文法を作成します。



          <RecordShow>  = 今晩 <ShowName> <WantRecord>   
                        | 今日の<ShowName><WantRecord> 
          ;


          
          <ShowName>    = アグリーベティ
                        | グレイズ・アナトミー
                        | ヒーローズ
                        | ...
          ;
          
          <WantRecord> = '録画' 'しといて'
                    | 'を' '録画' 'して' 'ください'
                     | 'を' '録画' 'して' 'ね'
                    | '録画' 'しとけ'
                   | ...
          ;
        

コマンド追加

文法にはさらに多くのコマンドを追加することができます。 たとえば、以下の<Please>の文法を加えることで さらに多様な言い方で録画を命令することができるようになります。

          <WantRecord> = '録画'
                    | '録画' <Please>
                   | ...
          ;

          <Please>  = お願い
                      | お願いします
                      | をお願いね
                      | をして
                      | をしてください
                      | しといて
                     | ...
          ;
          
        

文法のチューニング

大きな文法を作成していくうちに、 タグのよっては非文法的なコマンドになったりすることがあります。 例えば録画予約の一覧を見たいときのために 以下のような文法を作成したとします。

          <ShowReserve> = 録画予約みせて
                 | 録画予約をみせてください
                 | 録画予約<Please>
          ;
        

この場合、「録画予約お願いします」などのユーザ発話については 正しく録画予約番組の一覧を表示するためのコマンドとして機能しますが、 「録画予約して」、「録画予約しといて」などの発話は ユーザがある番組を録画するための予約をしたい意味などで使われることもあり、 そのために作成したコマンド文法と重複が考えられ、 文法的にこのコマンドには不適となります。

アトムグラマーツール には、このような文法エラーなどを自動的に検索、表示する機能がついており、 文法作成の迅速化、作業の軽減に役立ちます。

注: このページの文法フォーマットは 解説をわかりやすくするため簡易化されています。

*アジリングアでは音声対話システムの開発に当たり コンサルタントサービス を承っております。 こちらまで お気軽にご相談ください。