Hiroaki Kawai
hiroa****@gmail*****
2009年 8月 10日 (月) 12:05:46 JST
川井です。 もう少しステップを区切って、問題の原因を切り分けていったほうがいいと思います。 まず、エラーメッセージが出ている場合は、「必ず」それをメールに書くようにしましょう。 まずは perl 無しでいきましょう。 コマンドプロンプトで次のように実行したということですが、 c:\Program Files\Mecab\bin>mecab -u../dic\ipadic\mecab_userdic.dic カレントパスからの相対パスにしていますね。 カレントパスというのは mecab がある場所という意味ではなく、コマンドを呼び出した場所です。 mecabrc に ../dic\ipadic\mecab_userdic.dic と書いたということは、たとえば次のような ことを意味します。 自分が現在 C:\work にいるとします。これは次のようにして移動します。 c:\Program Files\Mecab\bin> cd C:\work C:\work> mecab を呼び出します。 C:\work> mecab -D このとき呼び出されるユーザ辞書は C:\dic\ipadic\mecab_userdic.dic です。 辞書の場所が C:\Program Files\Mecab\dic\ipadic\mecab_userdic.dic にあって、 自分がどの場所にいてもその辞書を使いたいというのであれば、 次のように mecabrc に記述します。 userdic = C:\Program Files\Mecab\dic\ipadic\ mecab_userdic.dic ちなみに辞書は Shift_JIS に合わせましょう。 私の環境では、相対パス、絶対パスともに動作しました。 あと、話が横道にそれてしまいますが、userdic のパス指定には $(rcpath) は使えないので、使えたら便利かもしれないと思いました。 2009/08/07 5:34 に nydela<nba00****@nifty*****> さんは書きました: > こんにちは、ash です。 > > 続報ですが、今のところまだ認識に成功していません。 > > 調査しているうちに疑問が出て来たので追加します。 > ・分かっていること > > コマンドライン引数でユーザー辞書を指定すると、正しく使用してくれるが、こ > の状態で Perl から呼びだして使用するとユーザー辞書は参照していない。 > > ・理由と「考えられる」こと > etc/mecabrc も、dic/ipadic/dicrc も参照していないのではないか。 > その理由... > userdic = の記述をどう変更しても、コマンドラインからユーザー辞書の指定な > しに MeCab を起動するとユーザー辞書を使用しない > その例 : > userdic = ../dic/ipadic/mecab_userdic.dic ... 相対指定 > userdic = c:/Program Files/MeCab/dic/ipadic/mecab_userdic.dic ... 絶対指定 > userdic = /Pearl/mecab_userdic.dic ... 同じドライブの違うディレクトリに > 辞書を複写して絶対指定 > > 全部だめでした。/を\に変えてもだめでした。 > > そして、今持っている疑問は... > インストールの方法がどこかまちがっているのではないかということです。 > > その理由... > > ユーザー辞書の情報表示をしてみました。 > c:\Program Files\Mecab\bin>mecab -u ../dic/ipadic/mecab_userdic.dic -D > > filename: c:/usr/local/lib/mecab/dic/ipadic\sys.dic > version: 102 > charset: Shift_JIS > type: 0 > size: 392126 > left size: 1316 > right size: 1316 > > filename: ../dic/ipadic/mecab_userdic.dic > version: 102 > charset: shift-jis > type: 1 > size: 255 > left size: 1316 > right size: 1316 > > システム辞書のパスが c:\Program Files\Mecab\dic\ipadic になっていませ > ん。これは正しいのでしょうか。 > > charset: は、ユーザー辞書を何度か作りなおして、Shift_JIS に合せてみたこ > ともありましたが、やはり状況に変化はありませんでした。 > > さらに、dic/ipadic/dicrc の > > config-charset = SHIFT-JIS > > を > > config-charset = UTF-8 > > に書き直してみたのですが、この状態でもコマンドラインから起動した MeCab > は挙動に変化がありませんでした。ただ、そういう変更の後、システムの再起動 > はしていません。 > > そんな理由で現在の構成は、etc/mecabrc も、dic/ipadic/dicrc も参照してい > ないのではないかと考えているのですが、それが正しいのか間違っているのか、 > 正しいとしたらどうすればいいのか分かりません。 > > インストールしているモジュールは、mecab-0.98pre3.exe です。これはあって > ますよね? > > アドバイスお願いします。 > ash > > nydela wrote: >> お世話になっております。 >> >> 今般、ユーザー辞書を作成してみました。 >> >> DOS コマンド画面から、c:\Program Files\Mecab\bin>mecab >> -u../dic\ipadic\mecab_userdic.dic とやって実行すると確かにユーザー辞書に >> ある単語を認識して処理します。 >> >> しかし、このユーザー辞書のありかを etc/mecabrc に、 >> >> ; Added (2009/7/30) >> userdic = ../dic/ipadic/mecab_userdic.dic >> >> と記述して、perl から呼びだしてみましたらあっさりと無視されてしまいました。 >> >> ディレクトリ構造は: >> c:-+-Program Files-MeCab-+-bin >> | >> +-dic-ipadic-mecab_userdic.dic >> | >> +-etc-mecabrc >> (以下省略) >> です。 >> >> システムの再起動とか必要なんでしょうか。 >> >> バージョンは 0.98pre2、OS は Windows XP Pro. SP3 です。 >> >> アドバイスよろしくお願いします。 >> ash >> >> _______________________________________________ >> mecab-users mailing list >> mecab****@lists***** >> http://lists.sourceforge.jp/mailman/listinfo/mecab-users >> > > _______________________________________________ > mecab-users mailing list > mecab****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/mecab-users >