Ich habe einen Satz Parser in Prolog erstellt. Es analysiert erfolgreich Sätze, die mit eingegeben werden ... ?- sentence([input,sentence,here],Parse).
Umgang mit Informationen aus einem Prolog Satz Parser
Dies ist der Code, den ich mit dem Satz zu analysieren:
np([X|T],np(det(X),NP2),Rem):- /* Det NP2 */
det(X),
np2(T,NP2,Rem).
np(Sentence,Parse,Rem):- np2(Sentence,Parse,Rem). /* NP2 */
np(Sentence,np(NP,PP),Rem):- /* NP PP */
np(Sentence,NP,Rem1),
pp(Rem1,PP,Rem).
np2([H|T],np2(noun(H)),T):- noun(H). /* Noun */
np2([H|T],np2(adj(H),Rest),Rem):- adj(H),np2(T,Rest,Rem).
pp([H|T],pp(prep(H),Parse),Rem):- /* PP NP */
prep(H),
np(T,Parse,Rem).
vp([H| []], vp(verb(H))):- /* Verb */
verb(H).
vp([H|T], vp(verb(H), Rem)):- /* VP PP */
vp(H, Rem),
pp(T, Rem, _).
vp([H|T], vp(verb(H), Rem)):- /* Verb NP */
verb(H),
np(T, Rem, _).
sollte ich erwähnen, dass die Ausgabe wäre: sentence(np(det(a), np2(adj(very), np2(adj(young), np2(noun(boy))))), vp(verb(loves), np(det(a), np2(adj(manual), np2(noun(problem)))))).
Verwenden des vordefinierten Vokabulars: det(a), adj(very), adj(young), noun(boy), verb(loves), det(a), adj(manual), noun(problem)
.
Was ich tun möchte, ist die übergebene Ausgabe an Prädikate übergeben, die die Wörter in drei verschiedene Kategorien trennen würde, die "Subjekt, Verb und Objekt" sind.
(1) Das Subjekt wird die ersten zwei Adjektive und dann ein Nomen halten.
(2) Das Verb wird das Verb von der "Verbalphrase" halten.
(3) Und das Objekt wird die Adjektive und Substantive in der "Verbalphrase" enthalten.
Alle Bestimmungsfaktoren sollten ignoriert werden.
Zum Beispiel möchte ich ein Prädikat, das nach Adjektiven in der Ausgabe suchen würde.
Ich habe versucht viele Dinge zu versuchen und dies funktioniert, aber keine Arbeit. Jede Hilfe wird sehr geschätzt.
Ok. Ich habe den Code hinzugefügt, den ich verwende, um den Satz zu analysieren. – Joseph