(Translated by https://www.hiragana.jp/)
文脈自由文法 - Wikipedia コンテンツにスキップ

文脈ぶんみゃく自由じゆう文法ぶんぽう

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

文脈ぶんみゃく自由じゆう文法ぶんぽう(ぶんみゃくじゆうぶんぽう、えい: Context-free GrammarCFG)は、形式けいしき言語げんご理論りろんとくに、なま成文法せいぶんほう)においてぜん生成せいせい規則きそく以下いかのようである形式けいしき文法ぶんぽうである。

ここで 非終端ひしゅうたん記号きごうであり、終端しゅうたん記号きごう非終端ひしゅうたん記号きごうの(0ふくむ)任意にんいならびである。「文脈ぶんみゃく自由じゆう」という用語ようご前後ぜんご関係かんけい依存いぞんせずに非終端ひしゅうたん記号きごう 置換ちかんできる、というところからている(「文脈ぶんみゃく無用むよう」というわけ提案ていあんもある[1])。文脈ぶんみゃく自由じゆう文法ぶんぽうによって生成せいせいされる形式けいしき言語げんご文脈ぶんみゃく自由じゆう言語げんごという。

背景はいけい

[編集へんしゅう]

文脈ぶんみゃく自由じゆう文法ぶんぽうノーム・チョムスキーによる構造こうぞう文法ぶんぽう研究けんきゅうなかから、形式けいしき言語げんご類別るいべつ形式けいしき言語げんご階層かいそうチョムスキー階層かいそう記事きじ参照さんしょう)のひとつとして見出みいだされたものである[2]

文脈ぶんみゃく自由じゆう文法ぶんぽう形式けいしきせいは、言語げんごがく伝統でんとうてき自然しぜん言語げんご文法ぶんぽう形式けいしきてき記述きじゅつしてきた既存きそん方法ほうほうたとえばパーニニ)にならっている。たとえば、(nesting)を自然しぜんとらえていることや、形式けいしきてきであることから形式けいしきてき手法しゅほう使つかえるという利点りてんがある。一方いっぽう問題もんだいもあり、たとえば自然しぜん言語げんご文法ぶんぽう重要じゅうよう機能きのうである一致いっち参照さんしょうといった属性ぞくせい綺麗きれいあらわすことができない(自然しぜん言語げんごかぎらず、プログラミング言語げんごでもしばしば文脈ぶんみゃく自由じゆう文法ぶんぽうから「はみしている」仕様しようがある)。

文脈ぶんみゃく自由じゆう文法ぶんぽうは、(チョムスキーらによって言語げんごがくで)提唱ていしょうされてすぐに、(形式けいしき言語げんご密接みっせつ関係かんけいにあるオートマトン理論りろんのような理論りろん計算けいさん科学かがく分野ぶんやにとどまらず)プログラミング言語げんご ALGOL仕様しよう策定さくていにおいて、構文こうぶん仕様しようしめバッカス・ナウア記法きほうというかたちでとりれられ、そのコンピュータ科学かがく一般いっぱんに、あるいはもっとひろ実務じつむにも応用おうようされている。

文脈ぶんみゃく自由じゆう文法ぶんぽうはほとんどのプログラミング言語げんご文法ぶんぽう記述きじゅつできるほど強力きょうりょくであり、実際じっさいおおくのプログラミング言語げんご文脈ぶんみゃく自由じゆう文法ぶんぽう構文こうぶん仕様しよう定義ていぎしている。」といった言説げんせつがしばしばられるが[注釈ちゅうしゃく 1]あやまりである。本当ほんとう実際じっさいところは、yaccで定義ていぎされていても、純粋じゅんすい構文こうぶんでは定義ていぎしきれない部分ぶぶんをあれこれと意味いみ規則きそくおぎなっているのが普通ふつうである。

文脈ぶんみゃく自由じゆう文法ぶんぽう効率こうりつてき構文こうぶん解析かいせきアルゴリズム適用てきようできる程度ていど単純たんじゅんである。つまり、ある文字もじれつ特定とくてい文法ぶんぽうによる言語げんごぞくしているかどうかを判断はんだんすることができる(たとえばアーリーほう)。初期しょき構文こうぶん解析かいせき手法しゅほうであるLRほうLLほう文脈ぶんみゃく自由じゆう文法ぶんぽうのサブセットをあつかうものであった。

すべての形式けいしき言語げんご文脈ぶんみゃく自由じゆうであるわけではない。文脈ぶんみゃく自由じゆうでないれいとして がある。この言語げんごParsing Expression Grammar (PEG) では生成せいせいできる。PEG は文脈ぶんみゃく自由じゆう文法ぶんぽうあつかえる範囲はんい文法ぶんぽうことなり文脈ぶんみゃく自由じゆう文法ぶんぽうすべあつかえるわけではないがプログラミング言語げんごてきしたあらたな定式ていしきのひとつである。

形式けいしきてき定義ていぎ

[編集へんしゅう]

文脈ぶんみゃく自由じゆう文法ぶんぽう Gつぎの 4-タプルあらわされる。

ここで

  1. 変数へんすう非終端ひしゅうたん記号きごう)の有限ゆうげん集合しゅうごう
  2. 終端しゅうたん記号きごう有限ゆうげん集合しゅうごうで、
  3. 開始かいし記号きごう変数へんすう
  4. から への関係かんけいであり、

のメンバーを文法ぶんぽう規則きそくぶ。

追加ついか定義ていぎ1

[編集へんしゅう]

任意にんい について となるような生成せいせい写像しゃぞう 存在そんざいする。

順序じゅんじょたい のプロダクション(生成せいせい規則きそく)とび、一般いっぱん のように表記ひょうきする。

追加ついか定義ていぎ2

[編集へんしゅう]

任意にんい について、生成せいせいすることを あらわす。ただし、 かつ りたねばならない。

追加ついか定義ていぎ3

[編集へんしゅう]

任意にんい について、(あるいは )であるとは、 となるような 場合ばあいである。

追加ついか定義ていぎ4

[編集へんしゅう]

文法ぶんぽう 言語げんごつぎ集合しゅうごうあらわされる。

追加ついか定義ていぎ5

[編集へんしゅう]

言語げんご は、 となるような文脈ぶんみゃく自由じゆう文法ぶんぽう 存在そんざいするとき、文脈ぶんみゃく自由じゆう言語げんご(CFL)であるという。

最初さいしょれいしめす。

S → aSb | εいぷしろん

ここで、 | は「選択せんたく」を意味いみし、εいぷしろんそら文字もじれつ意味いみする。この文法ぶんぽうによって生成せいせいされる言語げんご以下いかのようになる。

これは正規せいき言語げんごではないれいでもある。

また、「選択せんたく」は文脈ぶんみゃく自由じゆう文法ぶんぽう表現ひょうげんかならずしも必須ひっすではない。つぎの2つの規則きそくでも、うえれい同様どうよう言語げんご定義ていぎしている。

S → aSb

S → εいぷしろん

つぎさん種類しゅるい変数へんすう x, y, z を使つかった文法ぶんぽうてきただしい四則しそく演算えんざん数式すうしき生成せいせいする文脈ぶんみゃく自由じゆう文法ぶんぽうである。ここで演算えんざん中置ちゅうちとしている。

S → x | y | z | S + S | S - S | S * S | S/S | (S)

この文法ぶんぽうしたがうと、たとえば "( x + y ) * x - z * y / ( x + x )" といったしき生成せいせい可能かのうである。

この文法ぶんぽうは、構造こうぞうことなる構文こうぶんからおな文字もじれつ生成せいせいされうるという意味いみ曖昧あいまいである。

文字もじセット {a,b} について、ことなる個数こすうの a と b から構成こうせいされるすべての文字もじれつ生成せいせいする文脈ぶんみゃく自由じゆう文法ぶんぽう以下いかのようになる。

S → U | V
U → TaU | TaT
V → TbV | TbT
T → aTbT | bTaT | εいぷしろん

ここで、T にかんする生成せいせい規則きそくは a と b が同数どうすう文字もじれつ生成せいせいするが、U は a のほうかならおおくなる文字もじれつ生成せいせいし、V は b のほうかならおおくなる文字もじれつ生成せいせいする。

つぎれい である。これは正規せいき言語げんごではなく文脈ぶんみゃく自由じゆう言語げんごである。以下いか生成せいせい規則きそく生成せいせいされる(この生成せいせい規則きそく文脈ぶんみゃく自由じゆう文法ぶんぽうにしたがっている)。

S → aSc | B
B → bBc | εいぷしろん

そのれい

[編集へんしゅう]

文脈ぶんみゃく自由じゆう文法ぶんぽう数学すうがくてきな「形式けいしきてき言語げんごだけで利用りようされるわけではない。たとえば、タミルである Venpa は文脈ぶんみゃく自由じゆう文法ぶんぽう定式ていしきできることが指摘してきされている[3]

導出どうしゅつ構文こうぶん

[編集へんしゅう]

ある文法ぶんぽうにおいて、開始かいし記号きごうからある文字もじれつ導出みちびきだされる過程かてい記述きじゅつする方法ほうほう種類しゅるい存在そんざいする。単純たんじゅん方法ほうほう導出どうしゅつ過程かてい途中とちゅう文字もじれつすべしていく方法ほうほうである。つまり開始かいし記号きごうからはじめて、生成せいせい規則きそくいちかい適用てきようするたび文字もじれつして、最後さいご目的もくてき文字もじれつになるまで列挙れっきょするのである。たとえば「左端ひだりはしもっとちか非終端ひしゅうたん記号きごう最初さいしょえる」という規則きそく適用てきようしたとすれば、文脈ぶんみゃく自由じゆう文法ぶんぽうでは適用てきようする生成せいせい規則きそく列挙れっきょするだけで十分じゅうぶんである。これを文字もじれつの「左端ひだりはし導出どうしゅつ」(Leftmost Derivation)とぶ。たとえば、以下いか文法ぶんぽうがあるとする。

(1) S → S + S
(2) S → 1
(3) S → a

文字もじれつ「1 + 1 + a」を導出どうしゅつする過程かていは [ (1), (1), (2), (2), (3) ] というリストになる。同様どうように「みぎはし導出どうしゅつ」も定義ていぎできる。このれい場合ばあいみぎはし導出どうしゅつでの導出どうしゅつ過程かていは [ (1), (3), (1), (2), (2)] というリストになる。

左端ひだりはし導出どうしゅつみぎはし導出どうしゅつのリストがことなるのは重要じゅうようなポイントである。構文こうぶん解析かいせきでは、文法ぶんぽう規則きそくごとにそれを入力にゅうりょく文字もじれつ適用てきようするちいさなプログラムが存在そんざいする。したがって、構文こうぶん解析かいせき左端ひだりはし導出どうしゅつおこなうのかみぎはし導出どうしゅつおこなうのかによってそれらのプログラムを適用てきようする順番じゅんばんわってくるのである。

導出どうしゅつ過程かてい導出みちびきだされる文字もじれつじょうにあるしゅ階層かいそう構造こうぞうえがくことでもあらわされる。れいとして左端ひだりはし導出どうしゅつによる「1 + 1 + 1」にたいする階層かいそう構造こうぞうてみよう。導出どうしゅつ過程かてい以下いかのようになる。

S→S+S (1)
S→S+S+S (1)
S→1+S+S (2)
S→1+1+S (2)
S→1+1+1 (2)

{ { { 1 }S + { 1 }S }S + { 1 }S }S

ここで { ... }S は S から導出みちびきだされた部分ぶぶん文字もじれつ意味いみしている。これに対応たいおうする階層かいそう構造こうぞう以下いかのような構造こうぞうになる。

          S
         /|\
       /  | \
      /   |  \
      S  '+'  S
    /|\       |
  /  | \     |
 S  '+' S   '1'
 |        |
'1'      '1'

この構造こうぞうをその文字もじれつの「具象ぐしょう構文こうぶん」とぶ(抽象ちゅうしょう構文こうぶん参照さんしょうされたい)。この場合ばあい上述じょうじゅつ左端ひだりはし導出どうしゅつみぎはし導出どうしゅつおな構文こうぶんになるが、左端ひだりはし導出どうしゅつには以下いかのようなべつ導出どうしゅつ過程かてい存在そんざいする。

S→ S + S (1)
S→ 1 + S (2)
S→ 1 + S + S (1)
S→ 1 + 1 + S (2)
S→ 1 + 1 + 1 (2)

これによって定義ていぎされる構文こうぶん以下いかのようになる。

      S 
     /|\
   /  |  \
  /   |    \
 S  '+'    S
 |        / |\
 |       /  |  \
'1'     S  '+'  S
        |       |
       '1'     '1'

この文法ぶんぽうのように、ある文字もじれつ導出どうしゅつする構文こうぶん複数ふくすうかんがえられる文法ぶんぽうを「曖昧あいまい文法ぶんぽう」(Ambiguous Grammar)とぶ。このような文法ぶんぽう構文こうぶん解析かいせきは、生成せいせい規則きそく適用てきよう順序じゅんじょ毎回まいかい決定けっていしなければならないためむずかしい。

標準ひょうじゅんがた

[編集へんしゅう]

そら文字もじれつ生成せいせいしない文脈ぶんみゃく自由じゆう文法ぶんぽう等価とうかチョムスキー標準ひょうじゅんがたグライバッハ標準ひょうじゅんがた変換へんかんできる。ここでいう「等価とうか」とはおな言語げんご生成せいせいするという意味いみである。

チョムスキー標準ひょうじゅんがた文法ぶんぽう生成せいせい規則きそく単純たんじゅんなので、この標準ひょうじゅんがた理論りろんてきにも実用じつようじょう密接みっせつ関係かんけいがある。たとえば、ある文脈ぶんみゃく自由じゆう文法ぶんぽうについてチョムスキー標準ひょうじゅんがた使つかうことで多項式たこうしき時間じかんのアルゴリズムで入力にゅうりょくされた文字もじれつがその文法ぶんぽう生成せいせいされるものかかを判定はんていできる(CYKアルゴリズム)。

決定けっていせい

[編集へんしゅう]

文脈ぶんみゃく自由じゆう文法ぶんぽう能力のうりょく制限せいげんされているため、その操作そうさ一部いちぶ決定けってい可能かのうであるが、同時どうじ決定けってい不能ふのう問題もんだいもある。もっと単純たんじゅんかりやす決定けってい不能ふのう問題もんだいの1つとして、CFG が言語げんごぜん文字もじれつ受容じゅようするかどうかという問題もんだいがある。還元かんげんによって、この問題もんだいチューリングマシンの停止ていし問題もんだいおなじであることがしめされる。その還元かんげんには、チューリングマシンのあらゆる計算けいさん過程かていしめす「計算けいさん履歴りれき」とばれる概念がいねんもちいる。あるチューリングマシンがある入力にゅうりょくあたえられたとき、それを受容じゅようしない計算けいさん履歴りれき文字もじれつ生成せいせいするCFGを構築こうちくでき、そうすると、そのCFGはマシンが入力にゅうりょく受容じゅようしないときだけ文字もじれつ受容じゅよう認識にんしき)する。

これを応用おうようすると、2つのCFGがおな言語げんご記述きじゅつしているかどうかも判定はんてい不能ふのうである。なぜなら、言語げんごぜん文字もじれつ受理じゅりする自明じめいなCFGとの等価とうかせい判定はんていできないためである。

また、文脈ぶんみゃく依存いぞん文法ぶんぽう文脈ぶんみゃく自由じゆう言語げんごあらわしているかどうかも決定けってい不能ふのう問題もんだいである。

拡張かくちょう

[編集へんしゅう]

文脈ぶんみゃく自由じゆう文法ぶんぽう形式けいしきせい拡張かくちょうとして、非終端ひしゅうたん記号きごう引数ひきすうたせ、規則きそくないわたすということがかんがえられる。これにより、自然しぜん言語げんご一致いっち参照さんしょうといった機能きのう表現ひょうげん可能かのうとなり、プログラミング言語げんごでの識別子しきべつし定義ていぎただしい用法ようほう自然しぜんかたち表現ひょうげん可能かのうとなる。たとえば、英語えいごぶんで、主語しゅご動詞どうしかずにおいて合致がっちしなければならないということを容易ようい表現ひょうげんできる。

計算けいさん科学かがくでは、このようなアプローチのれいとして接辞せつじ文法ぶんぽう属性ぞくせい文法ぶんぽう、Van Wijngaarden の two-level grammar などがある。

同様どうよう拡張かくちょう言語げんごがくにもある。

べつ拡張かくちょうとして、規則きそく左辺さへん追加ついか記号きごうけるようにする手法しゅほうがある。これは文脈ぶんみゃく依存いぞん文法ぶんぽうならない。

言語げんごがくてき応用おうよう

[編集へんしゅう]

ノーム・チョムスキー自身じしんは、なま成文法せいぶんほう追加ついかすることで文脈ぶんみゃく自由じゆう文法ぶんぽう制限せいげん克服こくふくしたいとかんがえていた[2]

そのような規則きそく言語げんごがくによくられる。たとえば、英語えいごにおける受動態じゅどうたいである。しかし、それらは強力きょうりょくすぎるため(チューリング完全かんぜん)、変換へんかん適用てきよう制限せいげんされる必要ひつようがある。なま成文法せいぶんほうだい部分ぶぶんは、構造こうぞう文法ぶんぽう変換へんかん規則きそく記述きじゅつ機構きこう改善かいぜんし、自然しぜん言語げんご表現ひょうげんできることを正確せいかくあらわせるようにすることを目的もくてきとしている。

かれ自然しぜん言語げんご文脈ぶんみゃく自由じゆうでないとかんがえていたが[4]かれがCFGでは不十分ふじゅうぶんであることをしめ証拠しょうことしてげた事例じれいは、のち間違まちがいであることが証明しょうめいされた[5]。Gerald Gazdar と Geoffrey Pullum は、一部いちぶ文脈ぶんみゃく自由じゆうてきでない構造こうぞうがあるものの、自然しぜん言語げんごだい部分ぶぶん文脈ぶんみゃく自由じゆうであると指摘してきしている[5]文脈ぶんみゃく自由じゆうでない部分ぶぶんとは、たとえば、スイスドイツの cross-serial dependencies [4] や、バンバラ畳語じょうごである[6]

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ たとえばウィキペディア日本語にほんごばんのこの部分ぶぶんにはずっとそうかれていた。

出典しゅってん

[編集へんしゅう]
  1. ^ 国語こくごがくいつつの発見はっけんさい発見はっけん』(水谷みずたに静夫しずお)§3.3.5.(p. 83)
  2. ^ a b Chomsky, Noam (1956ねん9がつ). “Three models for the description of language”. Information Theory, IEEE Transactions 2 (3): 113–124. http://ieeexplore.ieee.org/iel5/18/22738/01056813.pdf?isnumber=22738&prod=STD&arnumber=1056813&arnumber=1056813&arSt=+113&ared=+124&arAuthor=+Chomsky%2C+N. 2007ねん6がつ18にち閲覧えつらん. 
  3. ^ L, BalaSundaraRaman; S, Ishwar; Ravindranath, Sanjeeth Kumar (22 August 2003). "Context Free Grammar for Natural Language Constructs - An implementation for Venpa Class of Tamil Poetry". Proceedings of Tamil Internet, Chennai, 2003. International Forum for Information Technology in Tamil. pp. 128–136. 2006ねん8がつ24にち閲覧えつらん
  4. ^ a b Shieber, Stuart (1985ねん). “Evidence against the context-freeness of natural language”. Linguistics and Philosophy 8: 333–343. http://www.eecs.harvard.edu/~shieber/Biblio/Papers/shieber85.pdf. 
  5. ^ a b Pullum, Geoffrey K.; Gerald Gazdar (1982ねん). “Natural languages and context-free languages”. Linguistics and Philosophy 4: 471–504. 
  6. ^ Culy, Christopher (1985). “The Complexity of the Vocabulary of Bambara”. Linguistics and Philosophy 8: 345–351. 

参考さんこう文献ぶんけん

[編集へんしゅう]
  • Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X  Section 2.1: Context-Free Grammars, pp.91–101. Section 4.1.2: Decidable problems concerning context-free languages, pp.156–159. Section 5.1.1: Reductions via computation histories: pp.176–183.

関連かんれん項目こうもく

[編集へんしゅう]