2011-04-04 14 views
0

私は大学の教訓をしています。私はいくつかのプロローグに固執しています。プロローグの解析出力

コースワークは、本当に初歩的なワトソン(Jeapoardyに関する質問に答えるマシン)を作ることです。

とにかく、私は作ることができたこと出力以下:

noun_phrase(det(the),np2(adj(traitorous),np2(noun(tostig_godwinson)))), 
verb_phrase(verb(was),np(noun(slain)))). 

しかし授業は、私は今、より簡潔な文を作るために、第一及び第二の名詞、動詞を抽出する必要があることを指定します;すなわち、[Tostig_godwinsonは、殺された、]。

私はCなどの言語でのプログラミングを好んでいます。だから私はちょっと立ち往生しています。これが手続き型言語の場合は、解析ツールを使用しますが、Prologにはこれらの部分を抽出するために何が必要ですか?

はプロローグで事前

答えて

0

にありがとう、言語は、構文解析ツールです。長期的な検査を行うためにuniv (=..) operatorを使用します。

% find terminal nodes (words) in Tree 
terminal(Tree, Type, Item) :- 
    Tree =.. [Type, Item], 
    atomic(Item). 
terminal(Tree, Type, Item) :- 
    Tree =.. [_, Sub], 
    member(Node, Sub), 
    terminal(Node, Type, Item). 

findall(N, terminal(Tree, noun, N), Nouns)ですべての名詞のリストを取得し、nth1要素を取得します。

+0

こんにちは、私は本当に理解していません... findallのNは何ですか?私はGoogleなどにしようとしましたが、オブジェクトだと言います... Prologにオブジェクトはありません... = S – Xenoprimate

+0

@Motig: 'N'はちょっと変わった変数です。 'findall'は'名詞 'の' terminal(Tree、名詞、N) 'のような全ての' N 'を集めます。 –

関連する問題