プロローグに文パーサを作成しました。プロローグ文パーサからの情報の扱い
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, _).
Iが出力になることを言及する必要があります: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)))))).
?- sentence([input,sentence,here],Parse).
...と入力されている文章を解析し、
事前定義された語彙:det(a), adj(very), adj(young), noun(boy), verb(loves), det(a), adj(manual), noun(problem)
を使用します。
私がしたいことは、単語を "subject、verb、and object"の3つの異なるカテゴリに分ける述語に解析出力を渡すことです。
(1)被験者は、最初の2つの形容詞とその後の名詞を保持します。
(2)動詞は「動詞句」から動詞を保持します。
(3)オブジェクトは、 "動詞句"の形容詞と名詞を保持します。
すべての決定子は無視する必要があります。
たとえば、出力に形容詞を探す述語が必要です。
私はこれを試してみるために多くのことを試しましたが、どれも動作しません。どんな助けでも大歓迎です。
[OK]をクリックします。私は文を解析するために使用しているコードを追加しました。 – Joseph