sixamo - 人工無脳エンジンししゃも

DBが要らなくて単体で(Rubyは要るけど)動作するのでお手軽で楽しい! でも、たまにエラーで落ちてしまう。いろんな文章をまとめて入れちゃいたいので、エラーは痛いなぁ。

./sixamo.rb:491:in `learn': undefined method `empty?' for nil:NilClass (NoMethodError)

これって、たぶん Java でいうところの NullPointerException かしらん。

対話モードでファイルを流すこともできるみたい(標準出力ですから ruby sixamo.rb -im data_directory < input_text_file な感じで)だけど、なぜか途中で止まってしまうことがあるので、スクリプトを作成。

以下のスクリプトで、テキストファイルから文章をまとめて Sixamo に学習させることができる。NoMethodError が起きたら、そのインスタンスでは何度も例外が発生するみたいなので、インスタンスを生成しなおすことにした。ちゃんと学習できてるかはイマイチ不安だけど……

 #!/usr/bin/env ruby
 #
 # usage: ruby sf.rb data_directory < input_text_file
 #
 
 require 'sixamo'
 
 $KCODE = 'e'
 
 sixamo = Sixamo.new(ARGV[0])
 
 while line = STDIN.gets
 
   print 'STDIN>  ', line.chomp
   puts
 
   begin
     sixamo.memorize(line.chomp)
   rescue Exception
     print 'ERROR>  ', $!
     puts
     # recreate instance if a exception raised
     sixamo = Sixamo.new(ARGV[0])
   end
 
   # for display sixamo responses
   #res = sixamo.talk
   #print 'SIXAMO> ', res
   #puts
 
 end

うまくいくといいなぁ。

参考: zt diary - 人工無脳エンジンししゃも

tags: Zura zurazure

Posted by NI-Lab. (@nilab)