[mecab-users 381] Re: Windows 環境でユーザー辞書を認識しません

Back to archive index

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
>




mecab-users メーリングリストの案内
Back to archive index