如何使用将某些单词替换为不同单词的方案来制作聊天机器人?

时间:2015-02-19 01:27:28

标签: scheme

我很难开始这个确切的问题。以下是这些问题的说明。

  • ****第4部分:substitutebot-creator除了能够匹配 一个句子的一部分,一个ChatterBot应该改变什么的含义 它说取决于你的输入。写一个叫做的程序 substitutebot-creator,它包含两个相同长度的句子,FROM 和TO,并输出ChatterBot。 FROM和TO的第一项是 相关的,如第二项,第三项等 输出的ChatterBot会输入一个句子,SENT,并输出一个新的 作为FROM成员的SENT中的每个单词都是 替换为TO中的相应单词。如果FROM和TO为空 句子,ChatterBot将简单地返回SENT ****

示例:

    STK> (define marions-vacay
      (substitutebot-creator '(indonesia winter noodles)
                             '(texas summer steak)))
    STK> (marions-vacay '(i visited indonesia this winter and ate noodles))
(i visited texas this summer and ate steak)

我尝试使用以下内容:

  (define (substitutebot-creator from to)
  (lambda (x) (substitutebot x from to)))

  (define (substitutebot sent from to)
  (define subby? (lambda (word) (equal? (recurse-first from) word)))
  (cond ((and (empty? from)(empty? to)) sent)
        ((subby? (first sent))
        (se (recurse-switch (first sent) from to
        (count from)) (substitutebot (bf sent))))
(else (substitutebot (bf sent)))))

        (define (recurse-first sent)
   (if (empty? sent)
   '()
   ((word(first sent))(recurse-first (bf sent)))))

但它不起作用。我想我是在错误的道路上开始这个问题,所以我想知道什么是启动这个问题的最佳方法。几乎我如何成功地使聊天机器人创建另一个聊天机器人。

2 个答案:

答案 0 :(得分:0)

让你的想法尽可能简单可能会更好。问题的关键在于你需要制作一本字典并按照给定的单词进行查找。为此,您可以使用alist(关联列表)。

更具体的提示:

  1. 使用以下结构创建一个alist:((before . after) ...)
  2. 浏览列表中的给定单词并在alist上方查找(assq已足够)。

答案 1 :(得分:0)

我可以帮助您开始使用fold-left

(define (make-alist from to)
   (fold-left (lambda (acc from to) (cons (cons from to) acc)) '() from to))

(make-alist '(indonesia winter noodles) '(texas summer steak)) => ((noodles . steak) (winter . summer) (indonesia . texas))

然后您可以对assq

的结果使用make-alist