2008年11月25日火曜日

【PAIP】5 ELIZA: Dialog with a Machine (その2)

5.3 Segment Pattern Matchingから。

  • 5.3 Segment Pattern Matching
  • リストを処理していく関数というのは、なんというか、リストの要素を語とする有限オートマトンを処理していくみたいな感じなんだな。
  • で、condなどによる分岐は非決定性みたいだったり。
  • これでパターンマッチャーができた。リストの正規表現機構を自前でつくったような感じだな。

  • 5.4 The ELIZA Program: A Rule-Based Translator
  • パターンマッチ、という手法と、ルールベーストランスレータ、という手法。この章はこれらの説明につきる感じ。
  • これ、かっこいいなぁ。

    (defun use-eliza-rules (input)
    "Find some rule with which to transform the input."
    (some #'(lambda (rule)
    (let ((result (pat-match (rule-pattern rule) input)))
    (if (not (eq result fail))
    (sublis (switch-viewpoint result)
    (random-elt (rule-responses rule))))))
    *eliza-rule*))


おお、これで5章まで終わった。現在174P。めざせ200P越え。
次回は、Chapter 6 Building Software tools。

0 件のコメント: