Les gramàtiques de concatenació de rang (RCG per les seves sigles en anglès) és un formalisme de gramàtica desenvolupat per Pierre Boullier el 1998 per intentar caracteritzar uns fenòmens de llenguatges naturals com els números xinesos o l'ordre de les paraules en alemany, que cauen fora dels límits de les gramàtiques lleugerament sensibles al context .[ 1] [ 2]
Des d'un punt de vista teòric, qualsevol llenguatge que es pot analitzar en un temps polinòmic pertany al subconjunt de les RCG anomenat gramàtiques positives de concatenació de rang i viceversa.[ 3]
Una gramàtica positiva de concatenació de rang (PRCG) és una tupla
G
=
(
N
,
T
,
V
,
S
,
P
)
{\displaystyle G=(N,~T,~V,~S,~P)}
, on:
N
,
T
i
V
{\displaystyle N,T{\text{ i }}V}
son conjunts finits disjunts de predicats nominals , símbols terminals i noms de variables respectivament. Cada predicat nominal té una aritat associada donada per la funció
dim
:
N
→
N
∖
{
0
}
{\displaystyle \dim :N\rightarrow \mathbb {N} \setminus \{0\}}
S
∈
N
{\displaystyle S\in N}
és el predicat nominal inicial i verifica que
dim
(
S
)
=
1
{\displaystyle \dim(S)=1}
P
{\displaystyle P}
és un conjunt infinit de clàusules de la forma
ψ
0
→
ψ
1
…
ψ
m
{\displaystyle \psi _{0}\rightarrow \psi _{1}\ldots \psi _{m}}
on
ψ
i
{\displaystyle \psi _{i}}
son predicats de la forma
A
i
(
α
1
,
…
,
α
dim
(
A
i
)
)
{\displaystyle \displaystyle A_{i}(\alpha _{1},\ldots ,\alpha _{\dim(A_{i})})}
on
A
i
∈
N
{\displaystyle A_{i}\in N}
i
α
i
∈
(
T
∪
V
)
⋆
{\displaystyle \alpha _{i}\in (T\cup V)^{\star }}
Una gramàtica negativa de concatenació de rang (NRCG) es defineix com una positiva amb l'afegit que alguns predicats que apareixen a la part dreta de les clàusules poden ser de la forma
A
i
(
α
1
,
…
,
α
dim
(
A
i
)
)
¯
{\displaystyle {\overline {A_{i}(\alpha _{1},\ldots ,\alpha _{\dim(A_{i})})}}}
. Aquests predicats s'anomenen predicats negatius.
Una gramàtica de concatenació de rang o bé és positiva o negativa. Es denota l'absència de predicats negatius com PRCG i les que en tenen com NRCG.
Un rang d'una paraula
w
∈
T
⋆
{\displaystyle w\in T^{\star }}
és una parella
⟨
l
,
r
⟩
w
{\displaystyle \langle l,r\rangle _{w}}
amb
0
≤
l
≤
r
≤
n
{\displaystyle 0\leq l\leq r\leq n}
, on
n
{\displaystyle n}
és la longitud de
w
{\displaystyle w}
. Dos rangs
⟨
l
1
,
r
1
⟩
w
{\displaystyle \langle l_{1},r_{1}\rangle _{w}}
i
⟨
l
2
,
r
2
⟩
w
{\displaystyle \langle l_{2},r_{2}\rangle _{w}}
es poden concatenar si i només si
r
1
=
l
2
{\displaystyle r_{1}=l_{2}}
i llavors es te
⟨
l
1
,
r
1
⟩
w
⋅
⟨
l
2
,
r
2
⟩
w
=
⟨
l
1
,
r
2
⟩
w
{\displaystyle \langle l_{1},r_{1}\rangle _{w}\cdot \langle l_{2},r_{2}\rangle _{w}=\langle l_{1},r_{2}\rangle _{w}}
.
Per una paraula
w
=
w
1
w
2
…
w
n
{\displaystyle w=w_{1}w_{2}\ldots w_{n}}
amb
w
i
∈
T
{\displaystyle w_{i}\in T}
, la notació de punt per rang és
⟨
l
,
r
⟩
w
=
w
1
…
w
l
−
1
∙
w
l
…
w
r
−
1
∙
w
r
…
w
n
{\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}}
.
Les RCG poden reconèixer el llenguatge indexat no lineal
{
w
w
w
:
w
∈
{
a
,
b
}
∗
}
{\displaystyle \{www:w\in \{a,b\}^{*}\}}
com segueix:
Siguin,
x
,
y
,
i
z
{\displaystyle x,y,{\text{ i }}z}
símbols variables:
S
(
x
y
z
)
→
A
(
x
,
y
,
z
)
{\displaystyle S(xyz)\to A(x,y,z)}
A
(
a
x
,
a
y
,
a
z
)
→
A
(
x
,
y
,
z
)
{\displaystyle A(ax,ay,az)\to A(x,y,z)}
A
(
b
x
,
b
y
,
b
z
)
→
A
(
x
,
y
,
z
)
{\displaystyle A(bx,by,bz)\to A(x,y,z)}
A
(
ϵ
,
ϵ
,
ϵ
)
→
ϵ
{\displaystyle A(\epsilon ,\epsilon ,\epsilon )\to \epsilon }
La prova per abbabbabb és:
S
(
a
b
b
a
b
b
a
b
b
)
⇒
A
(
a
b
b
,
a
b
b
,
a
b
b
)
⇒
A
(
b
b
,
b
b
,
b
b
)
⇒
A
(
b
,
b
,
b
)
⇒
A
(
ϵ
,
ϵ
,
ϵ
)
⇒
ϵ
{\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 }
o en notació de punt per rangs:
S
(
∙
a
b
b
a
b
b
a
b
b
∙
)
⇒
A
(
∙
a
b
b
∙
a
b
b
a
b
b
,
a
b
b
∙
a
b
b
∙
a
b
b
,
a
b
b
a
b
b
∙
a
b
b
∙
)
⇒
A
(
a
∙
b
b
∙
a
b
b
a
b
b
,
a
b
b
a
∙
b
b
∙
a
b
b
,
a
b
b
a
b
b
a
∙
b
b
∙
)
⇒
A
(
a
b
∙
b
∙
a
b
b
a
b
b
,
a
b
b
a
b
∙
b
∙
a
b
b
,
a
b
b
a
b
b
a
b
∙
b
∙
)
⇒
A
(
ϵ
,
ϵ
,
ϵ
)
⇒
ϵ
{\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 {})}{\displaystyle \Rightarrow A(ab\bullet {}b\bullet {}abbabb,abbab\bullet {}b\bullet {}abb,abbabbab\bullet {}b\bullet {})\Rightarrow A(\epsilon ,\epsilon ,\epsilon )\Rightarrow \epsilon }
↑ Boullier , Pierre «Proposal for a Natural Language Processing Syntactic Backbone ». Technical report - INRIA Rocquencourt , 1-1998.
↑ Boullier , Pierre «Chinese Numbers, MIX, Scrambling, and Range Concatenation Grammars ». EACL '99 Proceedings of the ninth conference on European chapter of the Association for Computational Linguistics . Association for Computational Linguistics [Stroudsburg, PA, USA], 1999, pàg. 53–60. DOI : 10.3115/977035.977044 .
↑ Laura. , Kallmeyer,. Parsing beyond context-free grammars . Heidelberg: Springer, 2010. ISBN 9783642148460 .