コーパスの破損

もちろん、破損の可能性がないのが望ましいので、それを避けるためにできるあらゆることを行っています。

コーパスが破損する原因はなんですか?

コーパスの破損は、POPFile のプログラムを強制終了させ、コーパスの構造をディスクに中途半端な状態で残してしまったときに起こることがあります。これは、あなたのコンピュータをきちんとシャットダウンせず電源を切ったり再起動したりすると起こることがあります。

コーパスが破損したときの症状

コーパスが破損したときの症状は下記のようなものがあります;

  • UIのバケツタブで、バケツの単語数が空白になる。
  • POPFileが起動しない。起動中に破損したコーパスにぶつかったところで落ちてしまう。
  • バケツの固有単語数が突然減ってしまう。
  • コーパスのいくつかのバケツに含まれた情報が消失することで、急激に分類エラーが増加してしまう。
  • メールクライアントがメールを取り込もうとしても、つねに タイムアウトしてしまう。これは上記のエラーによって分類が妨げられ、POP3のセッションがすぐに異常終了してしまうために起こります。

本当にコーパスが破損しているかどうかを確認する

POPFile を停止し、 SQLite コマンドラインユーティリティーを使用してデータベース (popfile.db) をチェックします。

SQLite コマンドラインユーティリティーを使う場合には気をつけてください - これはデータベースの内容を変更することができる強力なユーティリティなので、これを使ってミスをするとデータベースが破損して POPFile が動作しなくなってしまいます!

Windows 版のユーザ には いくつかのオプションがあります:

A. POPFile SQLite Database Status Check ( 小さな Windows プログラム ) を使って、データベースをチェックし、 結果 を確認します。0.22.3 (またはそれ以降)のインストーラーは、このプログラムをインストールし、スタートメニューに下記を追加します:

スタート –> プログラム –> POPFile –> Support –> Check database status

0.22.3より前のバージョンを使用している場合、 POPFile SQLite Database Status Check を個別にダウンロードできます。(175 KB zipファイル) このプログラムはどのフォルダからでも実行することができます。POPFile のデータベースを自動的に見つけることができるでしょう(あなたがしなければならないことはプログラムを実行するだけです。何も入力する必要はありません)。

B. 0.22.3(またはそれ以降)の Windows 版のインストーラーが 'User Data' フォルダに作成する “Check database status” ショートカットを使用します。このショートカットは、 'User Data' フォルダにあるデータベースをチェックするために使います。

C. Windows 版のインストーラが 'User Data' フォルダに作成する “Run SQLite utility” ショートカットを実行します。このショートカットは SQLite ユーティリティを実行し、POPFile のデータベースがどこにあるかを伝えます。DOS 窓が開いたら、下記のクロスプラットフォーム版の説明のステップ 4 以降に従ってください。

D. 手動で 'User Data' フォルダ(POPFile のデータが保存されているフォルダで、すなわち popfile.db ファイルのあるディレクトリ)に移動して SQLite コマンドラインユーティリティを実行し、下記のクロスプラットフォーム版のステップ 3 以降に従ってください。('User Data' フォルダが POPFile プログラムと同じフォルダにない場合には、sqlite.exe プログラムへのパスを指定する必要があるでしょう - Windows 9x を使用しているのでなければ、%POPFILE_ROOT%\sqlite が使えるでしょう)

Windows 版のインストーラは 'User Data' フォルダの位置を表示するショートカットをスタートメニューに作成します(スタート –> プログラム –> POPFile –> Support –> PFI Diagnostic utility (simple))。POPFile 0.22.1 またはそれ以降では、ユーザーデータフォルダへのショートカットをスタートメニューに作成することができます。 (スタート –> プログラム –> POPFile –> Support –> Create 'User Data' shortcut)

Cross-platform 版のユーザ は以下のようにして SQLite データベースをチェックすることができます:

1. コマンドプロンプト (DOS 窓) またはシェルを起動します

2. POPFile のデータが格納されているディレクトリ(すなわち、popfile.db を含むディレクトリ)に移動します

3. SQLite ユーティリティーで、データベースを開きます

sqlite popfile.db
'SQLite version 2.8.12'
Enter ".help" for instructions
sqlite>

4. そして、整合性チェックを実施します(コマンドの最後のセミコロンを忘れないでください)

pragma integrity_check;
ok
sqlite>
  • もし問題があれば、上記の例のような ok は現れないでしょう(データベースが非常に大きい場合、チェックに数秒以上かかり、すぐには 'ok' が表示されないでしょう)。

5. .q コマンドを入力して、ユーティリティを終了します。

  • 警告: ステップ 3 で POPFile のデータベースのあるディレクトリを正しく指定していることを確認してください - カレントディレクトリに popfile.db ファイルがない場合、このユーティリティは単に popfile.db というデータベースを新しく作成し、この新しい(空の)データベースをチェックして “ok” という報告を行うでしょう。SQLite ユーティリティは新しい popfile.db をカレントディレクトリに作成した場合でも何も警告してくれません!

破損したコーパスの取り扱い

いったん popfile.db が破損してしまったら、この状況を修正するために下記の選択肢があります:

  • POPFileを終了し、破損している popfile.dbファイルを削除します。POPFileを再起動したとき、新しく popfile.db ファイルが作成されます。 これは現在のコーパスを失い、POPFileを再トレーニングしなければならないことを意味します
  • コーパスのバックアップを使って元に戻す。バックアップしてます、よね?
  • もし、それより前のバージョンのPOPFileからアップグレードしたなら、Windows 版インストーラーが作成するバックアップを使ってもとに戻します。このバックアップは、backup\oldsql ディレクトリに保存されています。
    1. ユーザーデータフォルダ内にある popfile.db ファイルを削除します。
    2. バックアップの popfile.db をユーザーデータフォルダにコピーします。
    3. POPFile を再起動します。
  • もしあなたが技術的に解決したいと思うなら、SQLite を使ってデータベースの内容をテキストファイルに出力し、それを戻すことで、壊れたコーパスの内容の復旧を試すこともできます。
sqlite popfile.db .dump >popback.sql
rename popfile.db corrupt.db
sqlite popfile.db < popback.sql

これはコーパスのサイズに依存して時間がかかる処理ですから、SQLite を強制終了したり、killしたりしないで辛抱してください。さもないとまた破損したコーパスを作ってしまうことになります。

  • ここで、データベースがどの程度壊れているかがわかりましたから、壊れたバケツを完全に削除するか、ユーティリティーによって回復できたバケツの単語でどうにかやっていくかを、あなたは選ばなければなりません。どちらが正しい答えというものはありません。どちらを選ぶかに関わらず、単語の消失という損害を被ることになるため、どちらの選択肢も魅力的ではありません。あなたにとって何が最善かを考えて決断するとよいでしょう。 決断するときには、以下の事実を考慮しましょう。もし、バケツから多くのデータが失われた場合に、はじめからやり直して、POPFileを再トレーニングするのではなく、回復可能なものを保持するという判断をした場合、分類精度に悪い影響を与える結果となるバランスの悪いコーパスを作ってしまうかもしれないのです。多くの場合、バランスの悪いコーパスから回復するより、再トレーニングする方が簡単で迅速です。

古いバージョン

0.20.xからのバージョンアップに問題を抱えている場合は、バージョン 0.20.x のコーパスの破損を参照してください。

原文

トラブルシューティング

POPFile ドキュメンテーションプロジェクト

 
jp/troubleshooting/corruptcorpus.txt · Last modified: 2008/02/08 19:49 by 127.0.0.1

Should you find anything in the documentation that is incomplete, unclear, outdated or just plain wrong, please let us know and leave a note in the Documentation Forum.

Recent changes RSS feed Donate Driven by DokuWiki
The content of this wiki is protected by the GNU Fee Documentation License