学習用データ作成

【内部主要記事】


【本文】
ランダムなアルファベット小文字のリスト=学習用データ 作成。

学習用データ作成に当たって使用した関数interpretはこの本を参考にしました。

プログラミング言語SCHEME

プログラミング言語SCHEME

  • 作者: R.ケントディヴィグ,R.Kent Dybvig,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 2人 クリック: 71回
  • この商品を含むブログ (20件) を見る

以下、学習用データ作成プログラム

;; http://d.hatena.ne.jp/ufo23/20060802
(load "./random-tree.scm")

;; 書籍「プログラミング言語SCHEME」参照
;; ここでは、ランダムに作成されたプログラムを実行するのに使用
;; (applyやevalではうまくいかなかったため)
(load "./interpret.scm")

;; リストの平坦化
;; http://d.hatena.ne.jp/ufo23/20060812/1155376475
(define (flatten ls)
  (cond ((null? ls) '())
        ((pair? ls)
         (append (flatten (car ls)) (flatten (cdr ls))))
        (else (list ls))))

;; 学習用データ作成
(define make-study-data
  (lambda (data-num)
    (let loop ((n 0) (sd '()))
      (cond ((>= n data-num) sd)
            (else (set! sd
                    (cons
                      (flatten
                        (interpret
                          (create-individual-program
                            allowable-depth
                            top-node-p
                            full-p)))
                      sd))
                  (loop (+ n 1) sd))))))

実行(学習用データ作成)
gosh> (make-study-data 10)

結果(ランダムなので毎回異なる)
*1
<<<この部分を求める>>>


データは10回の対話モデルです。GPでこの10回の対話を再現できる個体を探し、11回目の<<<この部分を求める>>>のところを出力します。これを対話における返答とみなします。


次は、各個体がこのデータにどの程度適合するかをレーベンシュタイン距離を用いて求めます。

*1:#\d) (#\z #\f #\k #\s #\x #\i #\e #\n) (#\t) (#\l #\t #\v #\c #\v #\h #\w #\n #\t #\l #\x #\n #\v #\k #\p #\l #\k) (#\p #\r #\p #\y #\g #\g #\k #\m #\h) (#\j) (#\c #\f #\x #\v #\l #\k #\e #\p #\s) (#\s #\t #\l #\h #\d #\b #\y #\e #\w #\v #\n #\b #\v #\t #\v) (#\z) (#\h