Sono riuscito a costruire l'albero di analisi per la frase data ed eccolo qui, per la frase: "L'uomo è andato a casa".Come convertire l'albero di analisi prologo in una frase logica
T = s(np(det(the), n(man)), vp(v(went), np(n(home))))
1) Come utilizzare frase/2 su questo?
How to translate a sentence in a logical language using prolog? - è simile a quello di cui ho bisogno, ma la soluzione non funziona su di me.
2) Voglio mappare questo con il modello di grammatica e ottenere il tag di parole. Det=the
, N(Subject)=man
, V=went
, N(Object)=home
c'è un modo per mappare questo albero con determinate strutture ad albero set e identificare la grammatica. Come posso usare l'albero di analisi per identificare Soggetto, verbo, oggetto, il modello di grammatica e generare la frase della lingua di arrivo.
modificato in seguito .. Ho provato questo codice e si dà risposta notevole. Qualche suggerimento su questo codice.
sent("(s(np(n(man))) (vp(v(went)) (np(n(home)))))").
whitespace --> [X], { char_type(X, white) ; char_type(X, space) }, whitespace.
whitespace --> [].
char(C) --> [C], { char_type(C, graph), \+ memberchk(C, "()") }.
chars([C|Rest]) --> char(C), chars(Rest).
chars([C]) --> char(C).
term(T) --> chars(C), { atom_chars(T, C) }.
term(L) --> list(L).
list(T) --> "(", terms(T), ")".
terms([]) --> [].
terms([T|Terms]) --> term(T), whitespace, !, terms(Terms).
simplify([s,[np, [n,[Subject]]], [vp,[v,[Verb]],[np,[n,[Object]]]]],Result) :- Result = [Subject,Verb,Object].
Grazie Mathée
'phrase/2' fa riferimento a una regola DCG e una lista di input di qualche tipo. Puoi usarlo in entrambe le direzioni, ma se non stai analizzando né generando un elenco probabilmente non è lo strumento giusto per il lavoro. Ha funzionato per me nell'altra risposta perché le espressioni S di Lisp sono inerentemente liste. –
si prega di controllare il codice che ho aggiunto più tardi. Ho seguito il tuo metodo. e ha funzionato nel prologo SWI. Potete per favore suggerire miglioramenti affinché il codice corrisponda a diversi schemi grammaticali e identificare il modello grammaticale per una determinata frase. – Mathee
'white' è tab e spazio; 'spazio' include quelli, quindi hai solo bisogno' spazio' in 'spazio bianco // 0'. Rimuoverei 'Result' da' semplifica/2' e metto l'elenco come secondo argomento e non ho alcun corpo su questa regola. Altrimenti mi sembra buono. Sorprendente, questo non era quello che pensavo stavi chiedendo, ma non mi sembra male. :) –