Taku Kudo
taku****@chase*****
2006年 8月 2日 (水) 15:37:00 JST
工藤です > >> メモリを増設すればこのエラーは解決するのでしょうか? > > >はい。解決します。 > > なので、早速メモリを増設し 512M から 1G にメモリを増設し再度8万行のコーパスを学習させてみました。 > ところが、また同じエラーが発生してしまいました。 > これはおかしいな。と思ったので、コーパスから学習している間、パソコンのメモリ使用状況を監視してやってみたのですが、8万行の場合に1Gのメモリをフルに使っていないにもかかわらず上記のようなエラーが発生してしまいます。 ユーザごとに使えるメモリの上限が決まってるかもしれません。 とりあえず、メモリが4GB 程度のった 32bit 環境のマシンで ipadic のモデル作成はできます。 > ということはこのエラーはメモリ不足ではなく、mecab 自体のプログラムがメモリ違反をしているのではないか?と考えました。 > > また、juman5.0 の辞書を使うとメモリをかなり食うということなので、mecab-ipadic-2.7 を使ってコーパスを学習させてみたのですが、結果は mecab-jumandic-5.1 と同じ結果になりました。 > > さらに、コーパスの量を増やし 14万行 で学習を行なったところ 8万行では > Done! writing model file ... > の直後にエラーが出ていたのが、コーパスをスクロールしている場面でエラーが発生し、 > > terminate called after throwing an instance of 'std::bad_alloc' > what(): St9bad_alloc > Abort trap (core dumped) > パイプ破壊 std::bad_alloc 例外はメモリが確保できなかったときの例外なので メモリ不足以外考えにくいです。メモリのアクセス違反があると、別の エラーで落ちます。