データを全部、SQLサーバ(MSDE)にお引越ししました。んで実験してみると、快適!猛烈に快適!デバッグモードでこれだけの速度がでるなら、リリースモードはどうなっちゃうんでしょう。SQLサーバの威力絶大です。まぁアクセスでもこれくらいの速度は出して欲しいけどね。DBコネクトのところとかはアクセスのコードがそのままなので、SQLサーバにチューニングしたわけじゃないけど、これだけ安定して動けば十分です。一番の心配事がなくなったのでとってもうれしいです。
会話とかもみてみましたが、以前にくらべて圧倒的にちゃんとした日本語を話します。まぁ強いて問題点を言うなら、以前誰かが話した言葉を変更しないでほとんどそのまま話すことがちょっと目立つかな。このへんは、ちゃんとした日本語=誰かが話した言葉 という定義なので、ちゃんとすればするほど、誰かの言葉をそのまま話しちゃうので、しょうがないんですが、研究の余地があります。
いにをはじめ何人かのメンバーが、バグ報告をしてくれました。現在わかっている問題点は以下のとおり。
登録機能でメモリには登録されるけどDBに登録されない
履歴機能でちゃんと検索されない(SQLサーバとACCESSのSQL構文の違いか?)
コミュって言葉に反応しづらい(宣伝するのに不便)
ちょっと(かなり)話しすぎ。
話題提供機能忘れてる。
今週末には新バージョンが本格稼動できそうな気配です。

知能エンジンの最終試験。過去の知識を全部食わせてみてどんな挙動をするのかを確認しました。まず、過去の知識のうち、今回は使いたくないもの、たとえば「独り言やロボットに向かって話し掛けている言葉」を削除するなどの前処理。独り言を学習しても会話の知識にはならないんじゃないかなと考えたから。この前処理が面倒。手作業でちまちま削除しました。んで、データを一気に食わせる。すでに、7月と8 月の半分を過ぎているので結構な量の知識がある。7月分は結構さくっと変換終了。8月分が、、、知識量が増えてくると前の知識との重複を防ぐ機能がどーにもこうにも遅い。こりゃ、プログラムの問題じゃないな。根本的に遅いんじゃないかと思われる。7月分を処理するのに2時間くらいで終わったのに、8月分は、、、12時間越えてます。
結局留守番君が遅くなった原因は単純に知識が増えすぎたからということになりそうです。
アクセスのDBじゃ持ちこたえないみたい。SQLサーバ(MSDE)の登場ですね。SQLサーバはあんまり得意じゃないのでお勉強から。。
実のところ、まだデータの変換をしてるので、終わるまで待つことにする。とりあえず、8月15日までのデータを全部アクセスに食わせて、それをSQLサーバに投げ込んでどんな速度になるのか調べてみようと思う。
現在稼動している留守番君が本当に、本当に苦しそうで、反応が猛烈に遅いので、速いうちに手を打たなければとちょっとあせってます。実は、留守番君がパソコンのCPUを占拠するおかげで、他の作業に支障が出てきています。ちょっと本気で、危機。あんまりにも被害が大きいようだったら、留守番君の一時停止も考えなくてはいけないかも。
たかだか10万件くらいのデータでそんなに考え込んでくれるなよアクセス。1行の処理に5秒も10秒もかかったんじゃ、会話についていけないじゃん。
あ、そうそう。一部の人だけが知っている、時限爆弾機能、定時連絡機能は次期留守番君からは削除されました。だーれもつかわんもん。いらん。

試験結果。速度はそこそこ。猛烈に速いってこともないけど、遅くない。安定した速度を出しています。満足。が、致命的な問題を、文章の区切りの学習部分に発見。うーん。面倒だな。
しーのを実験台にして、とんかち配布機能の調査をしました。が、あかん。難しい。とんかちどーやって渡したらええのかわからへん。マウスの使えない留守番君はキーボードで操作しなければならないのであった。

大改造中。知能エンジン学習エンジンの実装終了。今日からテスト。今回はほとんどの単語を単語IDという数字に変換して管理するようにしました。さて、どれくらい速度の向上に役立つのか。試験がちょっと楽しみだな。
せっかくなので、周りも書き直すぞぉ。

ここんところ毎日触ってるな。大丈夫かしら。
さて、どこが遅いか調べました。学習の結果を書き出すところです。予想通りでした。しゃあないので、コネクション張りっぱなし、トランザクションかけっぱなし、の大技で、ちょびっと高速化しました。まぁ、これくらいの速度なら人様に見せても大丈夫でしょう。まだちょっとだけ、文章が長いので、もうちょっと短くなるように調整中。

ビンゴ!
ちょっと思いついたアイデアがあって、それを実装してみました。相変わらず、時間はかかっていますが、すんげぇいい感じの日本語を出力してくれます。以前に比べて知的!?ちょっとわれながら感動しました。文章生成エンジンはこの方針で行こう。あとは、まわりの無駄な処理を省かないとね。
まだ、速度の問題は手をつけていません。DBアクセスの高速化はおらにはあんまり経験が無いので、まぁ勉強がてらちまちまやってみます。まぁ、まだまだ人様にお見せするレベルじゃないんだな。今のエンジンにみんなが飽きたころに、こそっと入れ替えるとしよう。
本日頂いた要望(ハチロー様より) 誰かが入室するとロボットが即挨拶しますが、他に話している人がいる場合、この挨拶をちょっと遅らせる方がいいかも。
いいアイデアなので採用。

新エンジンですが、あきません。だめだめです。
生成される文章が長すぎます。長いもんだから、時間かかりすぎ。
長すぎる原因はわかりました。
発言が2行にまたがっている場合、勝手に認識して一度に発言されたものとする
って部分ですが、こいつが悪さをしています。いい方向に働くときと、悪い方向に働くときと2パターンあることをつかみました。今までいい方向のことしか考えてなかったんだよな。文末処理はまだまだ修行が足らないようです。
生成される文章は相変わらず日本語になっていません。もうちょっとちゃんとした日本語になると思ったんだけどなぁ。この部分は、まだいろいろアイデアがあるので、試してみます。
次の開発は週末かな。
あ、あと、留守番君の注意事項を掲示板に載せました。留守番君関連は、ひとつ独立したページにしておこうかな。誰か書いてくれぇ。

現在、新学習エンジンの開発中。
治したところは、句読点空白の処理です。句読点空白が発言に混ざると、どうもその場所から話が無茶苦茶になるようだったので、そのへんの処理を変更しています。
あと、発言が2行にまたがっている場合は勝手に認識して一度に発言されたものとする。って機能も追加しました。結構、みんなひとつの文章を何行にも分けて発言していることが多いってことを見つけたものですから。行末処理に威力を発揮すると思われます。また、次の発言内容の決定には完全ランダムを使っていたのですが、ある程度の流れを使うって方法に変更しています。
知識データの構造がかわっちゃったので、学習やりなおしです。過去のデータから変換しているのですが、変換するのに8時間とかかかっちゃいます。というか、機能を詰め込んだので、全体的に処理が遅くなっています。これだけ遅くなると、ロボットとしてはちょっとだめだめなので、高速化の改造が必要です。本バージョンはまだ、稼動していません。
んでもね、賢くなったおかげで、一度の発言の長さが長くなりました。長くなったのはいいけど、ちょっと無駄に長いかも。。。もうちょっと調整します。

本日は直前の他人の発言から、学習してある内容を使って発言を生成するところを作りました。
現在、稼動している留守番君はこのバージョンです。
ちょっと触ってみた感じですが、

暴走してます。

留守番君、一人で突っ走ってます。話しすぎ、話題飛びすぎ。独り言を言いながら一人で暴れている感じです。
バランス悪すぎ。まだまだ調整が必要ですね。
かなーりうっとうしいので、黙れ>留守番ぢ で黙らしておいてください。
ところで、なぜか昨日は留守番ぢで入室できませんでした。おかげで、留守番ぢ君というアカウントを取得。

日々の出来事を自分用にメモしています