使用代码程序的问题

时间:2011-05-15 19:10:27

标签: prolog

它适用于您的机器吗? 我不知道如何使用它 - 每次都会出错。请告诉我如何使用它....

链接到来源: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? - 嗨。

     

错误:顶级:未定义   程序:hi / 0(DWIM不能   正确的目标)

     

2? - [hi]。

     

错误:   source_sink`hi'不存在true。

     

3? - '嗨'。

     

错误:顶级:未定义   程序:hi / 0(DWIM不能   正确的目标)

     

4? - ['hi']。

     

错误:   source_sink`hi'不存在true。

3 个答案:

答案 0 :(得分:3)

主要问题是您的代码是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.

看到回复。 如果有效,请告诉我。

答案 1 :(得分:0)

在聊天之前,您需要启动该程序。为此你输入:

chatterbot1.

然后你应该看到程序的提示:

>

现在您可以与该计划聊天。

答案 2 :(得分:0)

您应首先编译该程序,然后运行chatterbot1。 类似的东西:

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

btw read_string / 1不是我的prolog方言(swi-prolog)中的默认谓词,所以我无法测试它。
dunno关于你的