ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ
              _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
             _/_/ メールマガジン 『語ろうか、手話について』   _/_/
            _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
No. 80                                              2002年 6月19日発行
ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ☆ミ

  皆さん、こんにちは。梅雨入りなんて地味なニュースもありますが、やはり
全国的には、これほど盛り上がるとは思わなかったワールドカップの話題で一
色の今日この頃。いかがおすごしでしょうか。このメルマガが配信されている
時には、日本の決勝トーナメントの1回戦が終わってますね。勝ったのかな?意
外とコロっと負けちゃったりして。逆に、さらに意外なところで韓国と決勝ま
で行っちゃったりして。

  さて、この記事を配信しているメルマガ会社が発行している「うぃまぐ」に
次のような記事がありました。
  「うぃまぐ」のご案内  http://www.mag2.com/wmag/

  ------------------------------------------------------------------
    私は勤続20年のベテランナース。今、ろうあ者のおばあちゃんが入院し
  ていて、身振り手振りでコミュニケーションをとるのに一苦労。特に、排
  便があったかどうかを聞くときは、トイレにしゃがんだカッコウで手をお
  尻に当て、「ブツ」がでるようすを表現します。白衣の天使の姿には程遠
  く、誰にも見られたくないです。
  ------------------------------------------------------------------

是非、この人には手話を習って、小も大も下痢もスマートに表現できるよう
になって欲しいものです

----------------------------------------------------------------------

  結構長く続いている「自然言語処理学から見た手話」シリーズですが、よう
やく今週でひと山、乗り越えます。乗せる、解析する、変換する、生成するの
4段階のうち、解析するの主要部分の説明が終わります。内容としては、ここ
で半分をちょい過ぎます。今回は手話の話がほとんどありませんけど、ご容赦
ください。

----------------------------------------------------------------------

  では、解析の話の続きです。前回、解析は、形態素、構文、意味、文脈の4
段階にわかれていると言いました。今日は、その2番目、構文解析です。形態
素解析は、文を形態素に分解する処理でした。構文解析は、この形態素を組み
上げることです。

  例えば

         「太郎は運動会で一等を取りました。」

を形態素解析すると

         「太郎/は/運動会/で/一等/を/取りました/。」

の8個に区切れます。最後の「。」はどうでもいいとして、これを構文として
組み上げると次のようになります。

                     /\
                   /    \
                 /        \
               /          /\
             /          /    \
           /          /        \
         /          /          /\
       /          /          /    \
     /\        /\        /\      \
   /    \    /    \    /    \      \
  太郎    は  運動会  で  一等     を   取りました
 (名詞)(助詞)(名詞) (助詞)(名詞) (助詞)  (動詞)

  なんとなく、意味はわかりますかね? これは、「取りました」という動詞に
「太郎/は」「運動会/で」「一等/を」という部分が「かかっている」ことを
示しています。「かかる」というのは、そこで主語述語の関係が成り立ってい
るということで、これは簡単な文が取り出せることを意味しています。例えば
「太郎は取りました」「一等を取りました」という部分的な文が成り立つこと
を示しています。図形的に見ると、綺麗に三角形をしていることがわかります
かね。
  逆に「太郎は運動会で」だと文が完結しません。この部分では三角形になり
ません。
  もっと部分的に見ると「太郎/は」も部分的に「太郎」が「は」にかかって
いることを示しています。これは文になりませんけど、形からすると、三角形
になるのはわかりますよね。専門的には、これを部分木と言います。

  この図で示したのを「構文木」と言います。これを作るのが構文解析の目標
です。
  ちなみに、上の構文木は、カッコを使って次のように書けます。

     ( ((太郎)は) ( ((運動会)で) (((一等)を) 取りました) ) )

  構文木を書くのは面倒なので、後はこの方法で書きますね。

  懸命な読者はお気づきでしょうけど、この構文木に品詞が付いています。こ
れを組み合わせて書くと次のようになります。

     ( ((太郎[名詞])は[助詞]) ( ((運動会[名詞])で[助詞]) 
                         (((一等[名詞])を[助詞]) 取りました[動詞]) ) )

  かなりごちゃごちゃになりましたけど、あんまり使わないと思うので、こん
な方法もあるんだな、と、頭に留めておいてください。

----------------------------------------------------------------------

  さて、そもそも、なんでこんな事をするのでしょう? 訳のわからない構文木
を作っても、それが役に立たなければ、いくら難しい理屈をこね回しても意味
がありません。(でも、たまにそういう研究があるんですよね。税金がいかに
使われているかはよくよくチェックしないとなりません。)

  では、構文木を作る目的ですが、それは「処理するために手がかり」を得る
ためです。

  普通、機械が処理することは、入力とそれに対する手順が決まっています。
電卓を思い出してください。キーが並んでいて、それを押すと計算できます。
キーを押すと、数字が出たり、足したり引いたり出来ます。キーに対する動作
が決まっているわけでする。キーを叩く以外の動作はできません。
  テレビを思い出してください。スイッチを入れると画面が表示されまする。
チャンネルを変えとか、音量を変えるとか、今は複雑な操作ができるテレビも
ありますが、どれもスイッチに対する動作が決まっていて、それ以外の操作は
できないわけです。これは入力があらかじめ決まっていて、それに対する処理
もテレビの中で決まっているわけです。

  計算機は処理するものですから、それに対する入力と、そこからの出力があ
ります。大事なことは、入力が決まっていないと、処理が出来ないことです。
もし想定以外の入力が来ても、対応できません。電卓を拳で叩いても壊れるだ
けです。

  あらゆる物事は、入力と処理と出力で見ることが出来ます。人間ならば、食
べることが入力で、処理が脳みそ、動きが出力と考えられます。もっと細かく
見れば、脳が処理部分、目が入力、動きが出力と考えられます。もっと単純な
冷蔵庫を考えてみましょう。入力がドアを開けて野菜を入れること、処理が冷
やして保存すること、出力が冷えた野菜を出すことです。

  では、言葉はどうでしょう? 長い文もあれば短い文もあります。使われてい
る文字は沢山ありますし、組み合わせ方法は無限大です。冷蔵庫に対する野菜
の比ではありません。つまり、言葉は、今までのように単純な処理では対応で
きないのです。計算機(パソコン)は、とても賢そうに見えますが、実は単純で
す。ホームページを見る場合でも、ホームページのデータをインターネットか
ら取ってくる方法は世界共通で決まっていますし、計算機にはその手順がプロ
グラムされています。しかし、言葉は誰かが決めたわけでもないし、さらにど
んどん変わっていきます。このようなものを処理するプログラムは、普通のプ
ログラムとは違い、入力の段階で悩まなくてはならないわけです。文の長さは
まちまち、種類は無限。なんとも雲をつかむような話です。

  そこで、まず手がかりをえることを考えました。それが自然言語処理です。
どんな入力文でも、ぶった切り、形態素に変換し、構文構造を生成すれば、処
理しやすくなるわけです。これが主語で、述語はこれだな、といった、見当が
付けやすくなります。それから処理するわけです。

----------------------------------------------------------------------

  さて、いよいよ構文解析の具体的な手順です。

  自然言語処理の特徴は、単純に「語」の字面しか見ないことです。動作する
のは計算機(コンピュータ)の上ですから、人間のような知識はありません。機
械的に、「直感」というものは「抜き」で、全て「手順(プログラム)」で教え
てやらなければなりません。ここに紹介するのは、教科書に載っているような
古い方法ですが、一番原理的にわかりやすいものです。

  必要なものは
    1. 文法
    2. 辞書
    3. アルゴリズム
  です。

----------------------------------------------------------------------

  文法とは、品詞のつながりです。これは文脈自由文法(Context-Free
pharase structure Grammar: CFG)と呼ぶもので、書きます。例えば、次の通
りです。

   ----------------------------
   文     -> 名詞句 : 動詞句
   名詞句 -> 名詞 : 助詞
   動詞句 -> 名詞句 : 動詞句
   動詞句 -> 動詞
   ----------------------------

  ここには4つの規則が書いてあります。1つ目の規則は文が名詞句と動詞句か
ら成り立つことを示しています。名詞句は名詞と助詞から成り立ちます。動詞
句は2つの場合があり、名詞句と動詞句から成り立つ場合と、動詞だけの場合
があります。この4つの規則で、先ほどの文は解析できます。普通は、100〜数
千個の規則があれば、たいていの日本語は解析できます。規則の数は少ないほ
ど良いとされていますが、少なすぎると処理できる日本語文の種類が減ってし
まいます。いかに少ない数で、効率よく、たくさんの日本語文を処理できるか
今も研究が進められています。

----------------------------------------------------------------------

  次は辞書です。
  辞書というと、広辞苑や和英辞典などを思い浮かべると思いますが、ここで
用意する辞書はもっと単純なものです。形態素と品詞のつながりを書いたもの
です。

   ----------------------------
   太郎        : 名詞
   取りました  : 動詞
   走る        : 動詞
   美しい      : 形容詞
   介護        : 動詞句,名詞
   する        : 動詞
   が          : 助詞
   を          : 助詞
   ----------------------------

  この辞書は「太郎」が「名詞」であることを示しています。「介護」は動詞
句もしくは名詞であることを示しています。ちょっと、はしょって、上の文を
処理するだけの辞書は書きませんでしたが通常は、このような組み合わせを30
万個程度書きます。これが辞書です。

  なぜ、こんなものを作るのでしょうか? 先ほどの文法に関係しています。も
し、文法に直接、単語を書くと、その分だけ文法の組み合わせが必要です。事
実上、無限個必要になり、処理不可能です。これを仲介しているのが「品詞」
です。品詞とは、辞書の名詞とか動詞のこと。文法の中の「動詞」というもの
は「走る」でも「取りました」でも「する」でもいいわけです。その分、文法
が少なくできます。そして、品詞を並べるだけで、単純に辞書を増やしていく
ことが出来ます。仮名漢字変換の「単語登録」って、まさにこの原理です。

----------------------------------------------------------------------

  最後にアルゴリズム。これは処理の手順です。ここでは、単純なチャート法
を使います。今はLR法とかいうのがあるんですが、そんなのをやっていたら、
いくらなんでも「語ろうか」の範囲を超えるので省略です。もっとも、すでに
相当、手話から離れているような気がしますが、自然言語処理には欠かせない
部分なので、突っ走ります。

  アルゴリズムはとても簡単です。用意するのはスタックという入れ物と、
agendaという現在処理している部分を記録しておく所です。両方とも記憶部分
ですが、スタックは最後に入れた物が、最初に取り出せる仕組みになっていま
す。agendaは今処理している部分が置いてある所です。どうして、って言われ
てもしょうがないのですが、そういうものを使うんです。で、アルゴリズムは
次の通り。

1. 「文」からスタートする。文をスタックに入れる。
2. a. スタックから語を取り出して、agendaに入れる。
   b. スタックagendaが空なら、入力から次の語を取り出す。
   c. 入力がなければ終了
3  a. 活性弧 X->X1... @ W...Xnを X->X1...W @ ...Xnに拡張する。
   b. 活性弧 X->X1... @ W を不活性弧 X->X1...W @にしてagendaに入れる。
4. 3で新たな活性弧を作っていたら初期化する。

  わけがわからない? とにかく、今からやってみますから、見ててください。

----------------------------------------------------------------------

step 1
  agenda : 空
  Stack  : (文)
    Stackからagendaに記号を入れます。

step 2
  agenda : (@ 文)  ->   (文 @)  -> (@ 名詞句 動詞句)
  Stack  : 空
  保存   : (文 @)
    文法を適用して、文を拡張します。

step 3
  agenda : (@ 名詞句 動詞句)
  Stack  : 空
  保存   : (文 @)
    @は現在の処理位置です。文が文法の1つ目を使って、拡張されました。こ
    れを活性弧と呼びます。これで、名詞句を拡張します。

step 4
  agenda : (@ 名詞 助詞) -> (太郎 @ 助詞) -> (太郎 は @)
  Stack  : (名詞句 @ 動詞句)
  保存   : (文 @)
    名詞句を文法2を使って拡張します。展開途中はstackに入れておきます。
    その後、入力と一致させて、単語に変換していきます。

step 5
  agenda : 空
  Stack  : (名詞句 動詞句 @)
  終了   : ((太郎)が)
  保存   : (文 (名詞 助詞) @)
    @が最後まで行ったら、不活性弧になって終了になります。
    辞書を使って、形態素に変えていきます。

step 6
  agenda : (名詞句 動詞句 @)
  Stack  : (@ 名詞句 動詞句) (@ 動詞)
  終了   : ((太郎)が)
  保存   : (文 (名詞 助詞) @)
    agendaが空だったので、Stackから戻します。それで動詞句の解析を進め
    ます。動詞句は2つのパターンがあるので、それぞれStackに入ります。
    agendaにある活性弧は処理が終了したので消えます。

step 7
  agenda : (@ 動詞)
  Stack  : (@ 名詞句 動詞句)
  終了   : ((太郎)が)
  保存   : (文 (名詞 助詞) @)
    次の入力は「運動会」ですが、辞書を見ても、これは動じてはないので、
    破棄されます。

step 8
  agenda : (名詞句 @ 動詞句)
  Stack  : 空
  終了   : ((太郎)が)
  保存   : (文 (名詞 助詞) @)

step 9
  agenda : (@ 名詞 助詞) -> ((運動会) @ 助詞) -> ((運動会)で)
  Stack  : (名詞句 @ 動詞句)
  終了   : ((太郎)が)
  保存   : (文 (名詞 助詞) @)
    文法2と辞書を使い、処理していきます。

step 10
  agenda : (名詞句 動詞句 @)
  Stack  : (@ 名詞句 動詞句), (@ 動詞)
  終了   : ((太郎)が) ((運動会)で)
  保存   : (文 (名詞 助詞) ((名詞 助詞)@))
    このあたりは繰り返しですね。Step9とStep10を繰り返します。

step 11
  agenda : (一等 を @)
  Stack  : (名詞句 @ 動詞句)
  終了   : ((太郎)が) ((運動会)で) 
  保存   : (文 (名詞 助詞) ((名詞 助詞)@))

step 12
  agenda : (名詞句 動詞句 @)
  Stack  : (@ 名詞句 動詞句), (@ 動詞)
  終了   : ((太郎)が) ((運動会)で) (一等 を)
  保存   : (文 (名詞 助詞) ((名詞 助詞) (名詞 助詞 @)))

step 13
  agenda : (取りしまた @)
  Stack  : (@ 名詞句 動詞句)
  終了   : ((太郎)が) ((運動会)で) (一等 を)
  保存   : (文 (名詞 助詞) ((名詞 助詞) (名詞 助詞 (動詞))))
    ここで動詞まで処理が終了しました。保存しておいたのを見ると、まさに
前に示した構文木ができあがっています。

----------------------------------------------------------------------

  長くなったので、今日はこの辺で。

  では、また来週。

----------------------------------------------------------------------
このメールマガジンは、インターネットの本屋さん『まぐまぐ』 を利用して
発行しています。http://www.mag2.com/ (マガジンID: 0000038270)
----------------------------------------------------------------------
■登録/解除の方法
  メールマガジン「語ろうか、手話について」は、以下のURLよりいつでも
  登録/解除可能です。
    http://www.mag2.com/m/0000038270.htm
    http://www.rr.iij4u.or.jp/~tokudama/kataro/
■バックナンバーの参照
    http://www.rr.iij4u.or.jp/~tokudama/kataro/
    http://backno.mag2.com/reader/Back?id=0000038270
■掲示板
    http://www64.tcup.com/6411/tokudama.html
    補助的な情報を掲載しています。編集者への連絡はMailをお使い下さい。
■苦情、文句、提案、意見など
    Subjectに[kataro]を入れて、以下のアドレスまでMailをお送り下さい。
    個別には返事ができないかもしれませんので、ご了承下さい。
      tokudama@rr.iij4u.or.jp
======================================================================
○メールマガジン「語ろうか、手話について」(週1回以上 発行)

発行: 手話サークル活性化推進対策資料室
編集: 徳田昌晃
協力: 五里、おじゃまる子、くぅ(ヘッダ作成)
発行システム: インターネットの本屋さん『まぐまぐ』http://www.mag2.com/
マガジンID: 0000038270

■意見、文句、提案、投稿は、居住都道府県名と氏名(匿名可)を添えて
  tokudama@rr.iij4u.or.jpまで送って下さい。
■メールマガジン「語ろうか、手話について」は、著作権は徳田昌晃に所属し
  ますが、基本的には転載・複写自由です。有効にご活用下さい。
======================================================================