Пролог Выход для анализа - PullRequest
0 голосов
/ 04 апреля 2011

Я делаю часть университетской курсовой работы и застрял с каким-то Прологом.

Курсовая работа заключается в создании действительно элементарного Уотсона (машины, которая отвечает на вопросы о Jeapoardy).

Во всяком случае, мне удалось заставить его вывести следующее:

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

Но в курсовой работе указано, что теперь мне нужно извлечь первое и второе существительное и глагол, чтобы составить более краткое предложение; то есть [Тостиг_годвинсон, был убит].

Я очень предпочитаю программирование на таких языках, как C и т. Д., Поэтому я немного застрял. Если бы это был процедурный язык, я бы использовал инструменты синтаксического анализа, но у Пролога нет никаких ... Что мне нужно сделать, чтобы извлечь эти части?

Заранее спасибо

1 Ответ

0 голосов
/ 04 апреля 2011

В Прологе язык является инструментом синтаксического анализа. Используйте оператор univ (=..) для проверки сроков:

% 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...