Strumenti Utente

Strumenti Sito


grammatica_categoriale

Questa è una vecchia versione del documento!


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
  • a = n/n = una funzione che riceve un nome/sintagma nominale come argomento e restituisce un nome/sintagma nominale
  • adv = v/v = una funzione che riceve un verbo/sintagma verbale come argomento e restituisce un verbo/sintagma verbale
  • vt = v/n = una funzione che riceve un nome/sintagma nominale come argomento e restituisce un v, ossia un verbo a un solo argomento (intransitivo)
  • p = adv/n = una funzione che riceve un nome/sintagma nominale come argomento e restituisce un adv, ossia un avverbio
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
 
#prove per la shell:
#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))
grammatica_categoriale.1777990067.txt.gz · Ultima modifica: 2026/05/05 14:07 da admin