Проблемы с использованием кода программы - PullRequest
3 голосов
/ 15 мая 2011

Это работает на ваших машинах?Я не знаю, как его использовать - я получаю ошибки каждый раз.Подскажите пожалуйста как его использовать ....

Ссылка на источник: http://ai -programming.com / prolog_bot_tutorial.htm

Код:

% Program Name: chatterbot1
% Description: this is a very basic example of a chatterbot program
%
% Author: Gonzales Cenelia
% Date: 7 august 2009
%
response_database([
    ['I HEARD YOU!'],
    ['SO, YOU ARE TALKING TO ME.'],
    ['CONTINUE, IM LISTENING.'],
    ['VERY INTERESTING CONVERSATION.'],
    ['TELL ME MORE...']]).

select(0, [H|T], H).
select(N, [H|T], L) :- N > 0, N1 is N - 1, select(N1, T, L).

quit_session(X):- X = 'bye', 
    nl, write('IT WAS NICE TALKING TO YOU USER, SEE YOU NEXT TIME!').

write_string([H|T]):- write(H).

chatterbot1:- 
    repeat,
    nl, write('>'),
    read_string(Input),
    response_database(ListOfResponse),
    IndexOfResponse is integer(random * 5),
    select(IndexOfResponse, ListOfResponse, Response),
    write_string(Response),
    quit_session(Input).

Я попробовал несколько способов написания, может быть, я не знаю, как правильно сделать это, вот ошибки:

1? - Привет.

ОШИБКА: toplevel: неопределенная процедура: hi / 0 (DWIM не может исправить цель)

2? - [hi].

ОШИБКА: source_sink `hi 'не существует true.

3? -' hi '.

ОШИБКА: верхний уровень: неопределенная процедура: hi / 0 (DWIM не может исправить цель)

4? - ['hi'].

ОШИБКА: source_sink `hi 'не существует правда.

Ответы [ 3 ]

3 голосов
/ 15 мая 2011

Основная проблема заключается в том, что ваш код написан на диалекте Prolog, немного отличающемся от используемого SWI Prolog. Вы можете попробовать что-то вроде этого:

response_database([
    ['I HEARD YOU!'],
    ['SO, YOU ARE TALKING TO ME.'],
    ['CONTINUE, IM LISTENING.'],
    ['VERY INTERESTING CONVERSATION.'],
    ['TELL ME MORE...']]).

select(0, [H|_], H).
select(N, [_|T], L) :- N > 0, N1 is N - 1, select(N1, T, L).

quit_session(X):- X = 'bye',
    nl, write('IT WAS NICE TALKING TO YOU USER, SEE YOU NEXT TIME!').

write_string([H|_]):- write(H).

chatterbot1:-
    repeat,
    nl, write('>'),
    read(Input),
    response_database(ListOfResponse),
    IndexOfResponse is integer(random(5)),
    select(IndexOfResponse, ListOfResponse, Response),
    write(Response),
    quit_session(Input).

Как сказали другие, убедитесь, что вы скомпилировали код и затем запустили его так:

chatterbot1.

Тогда он попросит вас ввести данные. Введите что-то вроде

hi.

И посмотрите ответ. Дайте мне знать, если это работает.

0 голосов
/ 15 мая 2011

Вы должны сначала скомпилировать программу, а затем запустить chatterbot1.что-то вроде:

>[the program's name].
>chatterbot1.

Кстати, read_string / 1 не является предикатом по умолчанию на моем прологическом диалекте (swi-prolog), поэтому я не могу его протестировать.
Не знаю о вашем

0 голосов
/ 15 мая 2011

Перед беседой необходимо запустить программу. Для этого вы набираете:

chatterbot1.

Тогда вы должны увидеть подсказку программы:

>

Теперь вы можете общаться с программой.

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