This article at Wikipedia

構文解析

構文解析こうぶんかいせき、Syntactic Analysis)とは、ある文章の文法的な関係を説明すること(parse)。計算機科学の世界では、構文解析は字句解析(Lexical Analysis)とともに、おもにプログラミング言語などの形式言語の解析に使用される。また、自然言語処理に応用されることもある。

形式言語の構文解析

たとえば、インターネット上の Webページやメールアドレスをあらわす URL は、次のような構文をもっている: • http://サーバ名/パス名 (webページをあらわす場合, http://ja.wikipedia.org/ など) • mailto:ユーザ名@ドメイン名 (電子メールアドレスをあらわす場合, mailto:god@heaven.mil など) ブラウザに "http://ja.wikipedia.org/index.html" などの文字列を入力した場合、ブラウザはそこからサーバ名 "ja.wikipedia.org" とパス名 "index.html" を読みとらなければならない。これは構文解析の非常に簡単な例である。

より複雑な構文解析は、CJAVA などのプログラミング言語において次のような数式を計算する場合に必要となる。

2 + ( a + b × c ) ÷ ( d - e )
この場合、コンピュータはどこから計算を始めなければならないかと言うと、まずかっこの中を先に計算しなければならない。しかし数学では同一のかっこの中でもかけ算を足し算より先に行わなければならないという規則がある (演算子の優先順位)。このため、実際にコンピュータが計算する順序は次のようになるだろう。 • まず b × c の値を計算する。 • そこに a の値を足し、これをかりに X と名づける。 • それとは別個に d − e の値を計算し、これをかりに Y と名づける。 • X ÷ Y を計算する。 • そこに 2 を足す。 しかしこの順序は式を一見しただけではなかなかわからない。そこで構文解析器(パーサ)は与えられた数式に以下のような「註釈」をつけ、それぞれの項の関係をより明確な形で表現する:
数値:2 + 式:( 式:( 変数:a + 式:( 変数:b × 変数:c ) ) ÷ 式:( 変数:d - 変数:e ) )
構文解析の結果は構文木としても表すことができる。構文解析はコンパイラにおけるもっとも中心的な過程のひとつであり、その手法は従来からさまざまな研究がなされている。現在ほとんどのプログラミング言語で使われている手法はLR法 を改良した LALR法 であり、これは構文解析器を手軽に設計するための yacc や bison などといったツールが普及したことによる。

一般に、形式言語の構文解析は曖昧でない言語を対象としている。ある言語が曖昧であるとは、ひとつの文にたいして2通り以上の構文解析が可能であることをいう。初期のプログラミング言語にはよく知られた「elseぶら下がり問題(dangling-else problem)」が存在した。たとえば以下のような文脈自由文法 であらわされる言語を考える:

文 ::= if 文 then 文
文 ::= if 文 then 文 else 文
すると、以下の文には 2通りの解釈が考えられる:
if A then if B then C else D
ひとつは「if A then - 」と「if B then C else D」という2つの連なった文からなるとする解釈。もうひとつは「if A then - else D」という文の中に「if B then C」という文が埋めこまれているとする解釈である。

ふつうコンピュータの動作には厳密さが要求され、このように複数の解釈があることは許されないため、このような曖昧な文法をもつプログラミング言語は現在では存在していない。

自然言語の構文解析

構文解析の観点からみた形式言語自然言語のちがいは、それが曖昧であるかないかということである。

プログラミング言語とは違って、自然言語は通常何十通りもの解釈が存在する。たとえば形態素解析の項で挙げた「うらにわにはにわとりがいる」のような例の他にも、次のような文:

美しい 水車小屋の 乙女
にはすくなくとも 2つの解釈が存在する。水車小屋が美しい場合と、乙女が美しい場合である。自然言語は本質的に曖昧であり、その解釈を決定するにはその文が書かれているまわりの文脈や、それを書いた人の心理までも考慮に入れなければならないこともある。
ここでいう「曖昧」とは、文の意味を知るために、その文が置かれた状況、言い換えるとコンテキスト、フレーム情報などを考慮しなければ、同定できないということを指す。決して自然言語では曖昧な表現しかできないという意味ではないことに注意せよ。

日本語の構文解析は、おもに文節間の係り受け構造を発見することである。たとえば、上の文が以下のような係り受け構造をもっている場合、「美しい」のは水車小屋ではなく乙女のほうである。

いっぽう、もし文が以下のような係り受け構造をもっていたとすれば、この場合「美しい」のは水車小屋のほうである。

TODO: チョムスキー言語学、生成文法構文木




This article is from Wikipedia, the Free Encyclopedia. All text is available under the terms of the GNU Free Documentation License.


社会 • 社会政治経済産業交通教育歴史福祉医療環境環境問題市民活動平和軍事 • 芸術と文化 • 芸術文化言語宗教遊び趣味伝統芸能文学音楽美術演劇映画アニメ漫画建築スポーツゲームギャンブル食文化ファッションマスメディア出版新聞放送テレビラジオ • 世界 • 世界アジアアフリカオセアニア北アメリカ南アメリカヨーロッパ • 日本 • 日本北海道東北関東中部近畿中国四国九州沖縄 • 学問 • 学問文学哲学倫理学心理学社会学法学経済学数学物理学化学生物学地球科学医学工学 • 自然 • 自然宇宙元素気象災害海洋生物植物動物鉱物 • 技術 • 技術コンピュータネットワークエレクトロニクスバイオテクノロジー • 資料 • 索引年表365日地図世界各国関係記事人名一覧一覧の一覧