-je utiliser passé swiprolog et ont un knowlegdebase avec quelques faits comme:règle affirmation de SWI-Prolog Liste
det(the).
det(a).
adjective(quick).
adjective(brown).
noun(cat).
noun(fox).
prep(on).
prep(with).
verb(sat).
verb(ran).
et j'ai une règle
generate_grammar(GrammarList):-
new_rule(GrammarList).
Cette règle est transmis une liste avec un nombre inconnu d'éléments [det,noun,verb,prep]
et devrait générer une nouvelle règle pour la "grammaire" passée. La nouvelle règle devrait générer une "phrase" avec les faits donnés et la nouvelle grammaire. J'ai testé certaines choses mais je n'ai pas réussi.
Je pense que la règle souhaitée ressemble à:
new_rule(List) :-
Head=sentence(X),
Body=[List]
dynamic(Head),
assertz(Head :- Body).
Je ne sais pas comment faire ce droit. Alors, comment cela pourrait-il être fait?
Merci d'avance!
Avez-vous vu encore l'opérateur univ? 'X = .. [det, D]' unifie 'X' avec' det (D) '. Cela pourrait vous être utile pour ce projet. –
Hey Daniel, oui j'ai effectivement utilisé cet opérateur dans ce projet mais je n'ai aucune idée de la façon de traiter la liste – J4ck
Vous ne savez pas vraiment comment construire les règles; cela semble faire ce que vous avez demandé: 'maplist (appel, [det, adjectif, nom, verbe], Sentence).' –