|
4.3.1 Trattare la morfologia |
 |
|
|
Una soluzione di questo tipo e` gia` migliore delle precedenti, pero` non tiene ancora conto del fatto che molti nomi di un linguaggio naturale, pur cambiando il numero, mantengono inalterata una parte, la radice del nome, e modificano solo la desinenza. Possiamo allora modificare ancora la grammatica tenendo conto di queste considerazioni ed utilizzando il predicato di sistema name nel seguente modo:
sostantivo(singolare,nome(RadiceY)) ---> [Y],
{name(Y,Singnome)
append(Radice,'o',Singnome),
name(RadiceY,Radice),
isa_nome(RadiceY)}.
Questa regola puo` essere parafrasata in:
"se X e` la radice di un nome, allora la forma singolare del nome viene formata aggiungendo una o alla fine di X".
Questa impostazione consente di memorizzare i nomi semplicemente cosi`:
isa_nome(canarin).
isa_nome(gatt).
isa_nome(top).
Ovviamente occorre definire una regola analoga alla precedente per la pluralizzazione dei nomi.