[POPFile]解決したと思いたいけどどうなんだろう。。
前回,以下のエラー内容
>Use of uninitialized value in hash element at Classifier/Bayes.pm line 2169, line 7.が出るので,sqliteとDBD::SQLiteのバージョンの違いが原因で動かないのでは?ということで,
DBD::SQLite2 と sqlite2 の組み合わせを試してみた。
SQLite3をアンインストールしてSQLite2を入れ直し,試してみるも解決せず。
次に,11/12にリリース候補版 POPFile ver1.1.0(RC6) がリリースされたということで試す。
候補版ではありますが,RC0からのRC6で正式版リリース前の最後の候補版らしいのでまぁ大丈夫かな,と。
こっちはデフォルトデータベースがSQLite3とのことで,SQLite3を入れ直す。
(sqlite2のままで自動変換してくれるらしいから大丈夫みたいだけど)
それでも解決せず。
色々なPerlモジュールやPOPFileを入れ直してみると,エラー内容に変化が。
>DBD::SQLite2::db selectrow_arrayref failed: no such table: history(1) at dbdimp.c line 412 at POPFile/History.pm line 1026. >Can't use an undefined value as an ARRAY reference at POPFile/History.pm line 1026.データベースのことで文句が出ているので,データベースのあたりをチェックすることに。
popfile.dbが壊れているのかと思い,コーパスの破損を見ながら試してみた。
$sqlite3 popfile.db 'SQLite version 3.3.6' Enter ".help" for instructions sqlite>pragma integrity_check; error: file is encrypted or is not a databace sqlite>エラーが出たので popfile.db を消去し,popfileを再起動すると,きちんと動いた。
今のところ,分類も問題なく学習されてる。送受信時も分類時もエラー無し。
結局原因は分からないけど,モジュールとpopfile.dbの破損が原因?
長時間起動してると未だに
>Use of uninitialized value 〜が表示されるが,とりあえず放置。。。
Macbook
ソースをいじってheaderを書き換える実験を。
以前:x-text-classification : unclassified
現在:x-text-classification[1] : unclassified
上書きされるならこれで[1][2]として区別できるし,
全部ダブルで表示されるなら二つめのPOPFileで余分なheader部分を書かないようにしてあげれば良さげ?