Strumenti Utente

Strumenti Sito


grammatica_categoriale

Una minima modellizzazione in python della grammatica categoriale nella versione di Ajdukiewicz

Schema tratto da Kazimierz Ajdukiewicz, Syntactic Connection [orig. Die syntaktische Konnexität, «Studia Philosophica» 1 (1935), 1-27], in S. McCall (a c. di) Polish Logic 1920-1939, Oxford, 1967, pp. 207-231.

Nella formulazione di Ajdukiewicz la grammatica categoriale è totalmente indipendente dalla posizione lineare degli elementi. In questo la formulazione teorica originaria si differenzia da modelli successivi che hanno avuto séguito soprattutto in ambito angolassone (p. es. la grammatica di Joachim Lambek 1922-2014) e che distinguono tra casi in cui l’operando è inserito a destra e casi in cui l’operando è inserito a sinistra. L’impostazione “non linearizzata” di Ajdukiewicz è tuttora utilizzata negli studi di semantica formale.

Tipi primitivi

n = nome s = frase

Tipi funzione

  • v = s/n = una funzione che riceve un nome/sintagma nominale come argomento e restituisce una frase (verbo intransitivo non impersonale)
  • a = n/n = una funzione che riceve un nome/sintagma nominale come argomento e restituisce un nome/sintagma nominale (attributo/determinante)
  • adv = v/v = una funzione che riceve un verbo/sintagma verbale come argomento e restituisce un verbo/sintagma verbale (avverbio adverbale)
  • vt = v/n = una funzione che riceve un nome/sintagma nominale come argomento e restituisce un v (transitivo con oggetto non saturato > transitivo con oggetto saturato equivalente a un intransitivo)
  • p = adv/n = una funzione che riceve un nome/sintagma nominale come argomento e restituisce un adv, ossia un avverbio (preposizione)
  • cop = v/a = una funzione che riceve un aggettivo come argomento e restituisce un verbo/sintagma verbale (copula)
  • copl = v/adv = una funzione che riceve un avverbio o un sintagma preposizionale come argomento e restituisce un verbo/sintagma verbale (copula locativa)
ajdukiewicz.py
#pip install sympy #pip3 install sympy 
#python -m pip install simpy
from sympy import symbols
n = symbols('n') #noun
s = symbols('s') #sentence
def v(x): #verb
    if x==n:
        return s
def a(x): #adjective/article/determiner (adnominal)
    if x==n:
        return n
def adv(x): #adverb
    if x==v:
        return v
def vt(x): #transitive verb (schönfinkelization/currying Moses Schönfinkel/Haskell B. Curry): transitive predicate=f(a,b)=f1(f2(b))=v(vt(n))
    if x==n:
        return v
def p(x): #preposition
    if x==n:
        return adv
 
def cop(x): #copula
    if x==a:
        return v 
 
def copl(x): #locative copula
    if x==adv:
        return v 
 
Mario=n
cammina=v
cuoco=n
il=a
bravo=a
lentamente=adv
affettuosamente=adv
saluta=vt
Gino=n
cane=n
morde=vt
un=a
cenno=n
con=p
affetto=n
è=cop
sta=copl
in_=p
cucina=n
lì =adv
a_ =p
casa =n
 
test = [
    cammina(Mario), #Mario cammina
    cammina(il(cuoco)), #il cuoco cammina
    cammina(il(bravo(cuoco))), #il bravo cuoco cammina
    lentamente(cammina)(Mario), #Mario cammina lentamente
    saluta(Gino)(Mario), #Mario saluta Gino
    morde(Mario)(il(cane)), #il cane morde Mario
    affettuosamente(saluta(Mario))(Gino), #Gino saluta Mario affettuosamente
    con(affetto)(saluta(Mario))(Gino), #Gino saluta Mario con affetto
    con(un(cenno))(saluta(Mario))(Gino), #Gino saluta Mario con un cenno
    è(bravo)(il(cuoco)), #il cuoco è bravo
    sta()(il(cuoco)), #il cuoco sta lì
    sta(in_(cucina))(il(cuoco)) #il cuoco sta in cucina
    ]
for i in test:
    print(i)
grammatica_categoriale.txt · Ultima modifica: 2026/05/05 15:01 da admin