nomoto
nomot****@la*****
2006年 8月 2日 (水) 01:55:02 JST
野本です。 mecab のメモリ不足の件についての報告です。 mecab の使用環境は mecab-0.91 mecab-jumandic-5.1 また、今回は mecab-ipadic-2.7.0-20060408 も使って検証してみました。 mecab-jumandic-5.1 に8万行のコーパスを学習させると、 Done! writing model file ... terminate called after throwing an instance of 'std::bad_alloc' what(): St9bad_alloc Abort trap (core dumped) というエラーが出てしまうということでした。 この原因はメモリ不足だということで、 >> メモリを増設すればこのエラーは解決するのでしょうか? >はい。解決します。 なので、早速メモリを増設し 512M から 1G にメモリを増設し再度8万行のコーパスを学習させてみました。 ところが、また同じエラーが発生してしまいました。 これはおかしいな。と思ったので、コーパスから学習している間、パソコンのメモリ使用状況を監視してやってみたのですが、8万行の場合に1Gのメモリをフルに使っていないにもかかわらず上記のようなエラーが発生してしまいます。 ということはこのエラーはメモリ不足ではなく、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) パイプ破壊 というエラーになります。