範囲連結文法 (RCG)は、1998年にピエール・ブーリエ [1] によって開発された文法形式であり、 軽度の文脈依存言語 の範囲外にある中国語の数字やドイツ語 の語順の混乱 などの自然言語の多くの現象を特徴付ける試みである。 [2]
理論的な観点からは、 多項式時間 で解析できる言語はすべて、正範囲連結文法と呼ばれるRCGのサブセットに属し、逆もまた同様である。 [4]
RCG は Groenink のリテラル移動文法 (LMG)の変形として意図されていますが 、文法プロセスを生成としてではなく証明として扱います。LMG が開始述語から終端文字列を生成するのに対し、RCG は開始述語 (終端文字列を述語とする) を空文字列に縮約することを目指しており、これが言語における終端文字列のメンバーシップの証明を構成します。
説明
正の範囲連結文法 ( PRCG) はタプルです 。ここで、
グ
=
(
いいえ
、
T
、
五
、
S
、
ポ
)
{\displaystyle G=(N,~T,~V,~S,~P)}
いいえ
{\displaystyle N}
、および は、それぞれ 述語名 、 終端記号 、および 変数名 の互いに素な有限集合です 。各述語名には、関数 によって指定された関連するアリティがあります 。
T
{\displaystyle T}
五
{\displaystyle V}
薄暗い
:
いいえ
→
いいえ
∖
{
0
}
{\displaystyle \dim :N\rightarrow \mathbb {N} \setminus \{0\}}
S
∈
いいえ
{\displaystyle S\in N}
開始述語名と検証です 。
薄暗い
(
S
)
=
1
{\displaystyle \dim(S)=1}
ポ
{\displaystyle P}
は形式 の 節 の有限集合であり 、 は 形式 の 述語 であり 、 と が 含まれる 。
ψ
0
→
ψ
1
…
ψ
メートル
{\displaystyle \psi _{0}\rightarrow \psi _{1}\ldots \psi _{m}}
ψ
私
{\displaystyle \psi_{i}}
あ
私
(
α
1
、
…
、
α
薄暗い
(
あ
私
)
)
{\displaystyle A_{i}(\alpha _{1},\ldots ,\alpha _{\dim(A_{i})})}
あ
私
∈
いいえ
{\displaystyle A_{i}\in N}
α
私
∈
(
T
∪
五
)
⋆
{\displaystyle \alpha _{i}\in (T\cup V)^{\star }}
負の範囲連結文法 ( NRCG) は PRCG と同様に定義されますが、節の右側に出現する一部の述語が の形式を持つことができる点が加わります。このような述語は 、否定述語 と呼ばれます 。
あ
私
(
α
1
、
…
、
α
薄暗い
(
あ
私
)
)
¯
{\displaystyle {\overline {A_{i}(\alpha _{1},\ldots ,\alpha _{\dim(A_{i})})}}}
範囲 連結文法は 、肯定的なものか否定的なものかのどちらかです。PRCG は技術的には NRCG ですが、これらの用語は否定述語の不在 (PRCG) または存在 (NRCG) を強調するために使用されます。
単語内の 範囲 は 、 のカップル で 、 は の長さです 。変数は範囲にバインドされますが、非終端記号の任意の文字列にはバインドされません。2 つの範囲 と は 、 の場合にのみ連結 でき 、 次 のようになります 。 節をインスタンス化する場合、引数は の複数の要素で構成され 、それらの範囲は連結される必要があります。
わ
∈
T
⋆
{\displaystyle w\in T^{\star }}
⟨
l
、
r
⟩
わ
{\displaystyle \langle l,r\rangle _{w}}
0
≤
l
≤
r
≤
ん
{\displaystyle 0\leq l\leq r\leq n}
ん
{\displaystyle n}
わ
{\displaystyle w}
⟨
l
1
、
r
1
⟩
わ
{\displaystyle \langle l_{1},r_{1}\rangle _{w}}
⟨
l
2
、
r
2
⟩
わ
{\displaystyle \langle l_{2},r_{2}\rangle _{w}}
r
1
=
l
2
{\displaystyle r_{1}=l_{2}}
⟨
l
1
、
r
1
⟩
わ
⋅
⟨
l
2
、
r
2
⟩
わ
=
⟨
l
1
、
r
2
⟩
わ
{\displaystyle \langle l_{1},r_{1}\rangle _{w}\cdot \langle l_{2},r_{2}\rangle _{w}=\langle l_{1},r_{2 }\rangle _{w}}
T
∪
五
{\displaystyle T\cup V}
単語 の場合 、 範囲の ドット 表記は 次のようになります。
わ
=
わ
1
わ
2
…
わ
ん
{\displaystyle w=w_{1}w_{2}\ldots w_{n}}
わ
私
∈
T
{\displaystyle w_{i}\in T}
⟨
l
、
r
⟩
わ
=
わ
1
…
わ
l
−
1
∙
わ
l
…
わ
r
−
1
∙
わ
r
…
わ
ん
{\displaystyle \langle l,r\rangle _{w}=w_{1}\ldots w_{l-1}\bullet w_{l}\ldots w_{r-1}\bullet w_{r}\ldots w_{n}}
文字列の認識
書き換えられる述語の文字列は、テストされる文字列が満たさなければならない制約 (正の場合)、または否定述語の場合は満たさなければならない制約を表します。述語の順序は関係ありません。書き換え手順は、1 つの制約を 0 個以上のより単純な制約に置き換えることと同じです。
LMG と同様に、RCG 節には一般的なスキーマ があり 、RCG では は 空の文字列または述語の文字列のいずれかです。引数は 終端記号や変数記号の文字列で構成され、LMG と同様に実際の引数値に対してパターン マッチングが行われます。隣接する変数はパーティションに対するマッチング ファミリを構成するため、 2 つの変数を持つ引数 は、リテラル文字列 と 3 つの異なる方法でマッチングします。 これにより、その引数を含む節の 3 つの異なるインスタンス化が生成されます 。
あ
(
x
1
、
。
。
。
、
x
ん
)
→
α
{\displaystyle A(x_{1},...,x_{n})\to \alpha }
α
{\displaystyle \alpha}
x
私
{\displaystyle x_{i}}
x
ええ
{\displaystyle xy}
1つの
b
{\displaystyle ab}
x
=
ϵ
、
ええ
=
1つの
b
;
x
=
1つの
、
ええ
=
b
;
x
=
1つの
b
、
ええ
=
ϵ
{\displaystyle x=\epsilon ,\ y=ab;\ x=a,\ y=b;\ x=ab,\ y=\epsilon }
x
ええ
{\displaystyle xy}
述語項には、正 (成功した場合は空の文字列を生成) と負 (失敗した場合/正の項が空の文字列を生成しない場合は 空 の文字列を生成) の 2 つの形式があります。負の項は、 のように、上線を使用して正の項と同じように示されます 。
あ
(
x
1
、
。
。
。
、
x
ん
)
¯
{\displaystyle {\overline {A(x_{1},...,x_{n})}}}
RCG の書き換えセマンティクスはかなり単純で、LMG の対応するセマンティクスと同一です。述語文字列 ( 記号 は終端文字列)が与えられた場合、述語文字列が一致する文法規則があれば 、述語文字列は に置き換えられ 、各 内の一致した変数が に置き換えられます 。
あ
(
α
1
、
。
。
。
、
α
ん
)
{\displaystyle A(\alpha _{1},...,\alpha _{n})}
α
私
{\displaystyle \alpha_{i}}
あ
(
x
1
、
。
。
。
、
x
ん
)
→
β
{\displaystyle A(x_{1},...,x_{n})\to \beta }
β
{\displaystyle \beta}
x
私
{\displaystyle x_{i}}
たとえば、 という規則があり 、 と が 変数記号で、 と が終端記号である場合、 のときに が一致する ため、 述語文字列は と 書き直すことができます 。同様に、 という規則がある場合 、 は と書き直すことができます 。
あ
(
x
、
1つの
ええ
b
)
→
B
(
1つの
x
b
、
ええ
)
{\displaystyle A(x,ayb)\to B(axb,y)}
x
{\displaystyle x}
ええ
{\displaystyle y}
1つの
{\displaystyle a}
b
{\displaystyle b}
あ
(
1つの
、
1つの
b
b
)
{\displaystyle A(a,abb)}
B
(
1つの
1つの
b
、
b
)
{\displaystyle B(aab,b)}
あ
(
1つの
、
1つの
b
b
)
{\displaystyle A(a,abb)}
あ
(
x
、
1つの
ええ
b
)
{\displaystyle A(x,ayb)}
x
=
1つの
、
ええ
=
b
{\displaystyle x=a,\ y=b}
あ
(
x
、
1つの
ええ
b
)
→
あ
(
x
、
x
)
あ
(
ええ
、
ええ
)
{\displaystyle A(x,ayb)\to A(x,x)\ A(y,y)}
あ
(
1つの
、
1つの
b
b
)
{\displaystyle A(a,abb)}
あ
(
1つの
、
1つの
)
あ
(
b
、
b
)
{\displaystyle A(a,a)\ A(b,b)}
文字列の証明/認識は、 が空の文字列を生成する ことを示すことによって行われます 。個々の書き換えステップでは、複数の代替変数の一致が可能な場合、証明全体を成功に導く可能性のある書き換えが考慮されます。したがって、最初の文字列から空の文字列を生成する方法が少なくとも 1 つある場合 、失敗する他の方法がいくつ存在するかに関係なく、証明は成功と見なされます。
α
{\displaystyle \alpha}
S
(
α
)
{\displaystyle S(\alpha )}
S
(
α
)
{\displaystyle S(\alpha )}
例
RCG は、次のように非線形インデックス言語を認識できます 。
{
わ
わ
わ
:
わ
∈
{
1つの
、
b
}
∗
}
{\displaystyle \{www:w\in \{a,b\}^{*}\}}
x、y、zを変数記号とすると、
abbabbbabb
の証明は 次のようになる
。
S
(
x
ええ
ず
)
→
あ
(
x
、
ええ
、
ず
)
あ
(
1つの
x
、
1つの
ええ
、
1つの
ず
)
→
あ
(
x
、
ええ
、
ず
)
あ
(
b
x
、
b
ええ
、
b
ず
)
→
あ
(
x
、
ええ
、
ず
)
あ
(
ϵ
、
ϵ
、
ϵ
)
→
ϵ
{\displaystyle {\begin{aligned}S(xyz)&\to A(x,y,z)\\A(ax,ay,az)&\to A(x,y,z)\\A(bx,by,bz)&\to A(x,y,z)\\A(\epsilon ,\epsilon ,\epsilon )&\to \epsilon \end{aligned}}}
S
(
1つの
b
b
1つの
b
b
1つの
b
b
)
⇒
あ
(
1つの
b
b
、
1つの
b
b
、
1つの
b
b
)
⇒
あ
(
b
b
、
b
b
、
b
b
)
⇒
あ
(
b
、
b
、
b
)
⇒
あ
(
ϵ
、
ϵ
、
ϵ
)
⇒
ϵ
{\displaystyle S(abbabbabb)\Rightarrow A(abb,abb,abb)\Rightarrow A(bb,bb,bb)\Rightarrow A(b,b,b)\Rightarrow A(\epsilon ,\epsilon ,\epsilon )\Rightarrow \epsilon }
または、範囲にもっと正確なドット表記法を使用します。
S
(
∙
1つの
b
b
1つの
b
b
1つの
b
b
∙
)
⇒
あ
(
∙
1つの
b
b
∙
1つの
b
b
1つの
b
b
、
1つの
b
b
∙
1つの
b
b
∙
1つの
b
b
、
1つの
b
b
1つの
b
b
∙
1つの
b
b
∙
)
⇒
あ
(
1つの
∙
b
b
∙
1つの
b
b
1つの
b
b
、
1つの
b
b
1つの
∙
b
b
∙
1つの
b
b
、
1つの
b
b
1つの
b
b
1つの
∙
b
b
∙
)
{\displaystyle S(\bullet {}abbabbabb\bullet {})\Rightarrow A(\bullet {}abb\bullet {}abbabb,abb\bullet {}abb\bullet {}abb,abbabb\bullet {}abb\bullet {})\Rightarrow A(a\bullet {}bb\bullet {}abbabb,abba\bullet {}bb\bullet {}abb,abbabba\bullet {}bb\bullet {})}
⇒
あ
(
1つの
b
∙
b
∙
1つの
b
b
1つの
b
b
、
1つの
b
b
1つの
b
∙
b
∙
1つの
b
b
、
1つの
b
b
1つの
b
b
1つの
b
∙
b
∙
)
⇒
あ
(
ϵ
、
ϵ
、
ϵ
)
⇒
ϵ
{\displaystyle \Rightarrow A(ab\bullet {}b\bullet {}abbabb,abbab\bullet {}b\bullet {}abb,abbabbab\bullet {}b\bullet {})\Rightarrow A(\epsilon ,\epsilon ,\epsilon )\Rightarrow \epsilon }
文字列の場合 、最初の節のさまざまなインスタンス化がありますが、 すべての文字をそれぞれに するインスタンス化のみが、 導出が に到達することを可能にします 。
3
n
{\displaystyle 3n}
(
3
n
+
2
2
)
=
(
3
n
+
2
)
(
3
n
+
1
)
2
{\displaystyle {\binom {3n+2}{2}}={\frac {(3n+2)(3n+1)}{2}}}
x
,
y
,
z
{\displaystyle x,y,z}
n
{\displaystyle n}
ϵ
{\displaystyle \epsilon }
プロパティ
すべての 文脈自由文法 (CFG) は範囲連結文法に変換できます。
CFG の すべての非終端記号に対して、RCG にはアリティ 述語があります 。
A
{\displaystyle A}
1
{\displaystyle 1}
A
(
x
)
{\displaystyle A(x)}
すべての CFG ルールに対して 、RCG には があります 。
A
→
B
C
{\displaystyle A\to BC}
A
(
x
y
)
→
B
(
x
)
C
(
y
)
{\displaystyle A(xy)\to B(x)C(y)}
すべての CFG ルール ( 終端) に対して、RCG には があります 。
A
→
a
{\displaystyle A\to a}
a
{\displaystyle a}
A
(
a
)
→
ϵ
{\displaystyle A(a)\to \epsilon }
2 つの範囲連結言語の積集合と和集合は、明らかに範囲連結言語です。
と の共通部分 については 、 となります 。
S
{\displaystyle S}
A
{\displaystyle A}
B
{\displaystyle B}
S
(
x
)
→
A
(
x
)
B
(
x
)
{\displaystyle S(x)\to A(x)B(x)}
と の和 集合 については、 および と なります 。
S
{\displaystyle S}
A
{\displaystyle A}
B
{\displaystyle B}
S
(
x
)
→
A
(
x
)
{\displaystyle S(x)\to A(x)}
S
(
x
)
→
B
(
x
)
{\displaystyle S(x)\to B(x)}
負の範囲連結言語も集合補集合の下で閉じている可能性があります。
上記の結果、 (正の)範囲連結言語が空でないかどうかは 決定不可能 である。これは、2 つの文脈自由言語の積集合が空でないかどうかは決定不可能であるためである。したがって、範囲連結文法は生成的ではない。
参考文献
^ Boullier, Pierre (1998 年 1 月). 自然言語処理構文バックボーンの提案 (PDF) (技術レポート). Vol. 3342. INRIA Rocquencourt (フランス).
^ Pierre Boullier (1999). 「Chinese Numbers, MIX, Scrambling, and Range Concatenation Grammars」 (PDF) . Proc. EACL . pp. 53– 60. 2003-05-15 の オリジナル (PDF)からアーカイブ。
^ Eberhard Bertsch および Mark-Jan Nederhof (2001 年 10 月)。「RCG 構文解析のいくつかの拡張の複雑さについて」 (PDF) 。 第 7 回国際構文解析技術ワークショップ (北京) の議事録 。pp. 66– 77。
^ Laura Kallmeyer (2010). 文脈自由文法を超えた解析 . Springer Science & Business Media. p. 37. ISBN 978-3-642-14846-0 。 Bertsch, Nederhof (2001) [3]を引用