[mecab-users 314] Re: UTF-8 辞書を使った場合の読み仮名

Back to archive index

Taku Kudo taku****@chase*****
2007年 12月 9日 (日) 13:26:00 JST


工藤です

コストが全く同一の場合、どの読みが使われるかは不定です。

たとえば、高野山の場合、すべてコストが 8538 なので、どれも
正しい解です。

高野山,1288,1288,8538,名詞,固有名詞,一般,*,*,*,高野山,コウヤサン,コーヤサン
高野山,1288,1288,8538,名詞,固有名詞,一般,*,*,*,高野山,タカノヤマ,タカノヤマ
高野山,1288,1288,8538,名詞,固有名詞,一般,*,*,*,高野山,コウノヤマ,コーノヤマ

実際にソースをみると、dic に表層形と、辞書のエントリの pair
をつっこんでいって、最後にダブル配列を作るために表層形で
ソートしています。

     while (...) {
        dic.push_back(std::make_pair<std::string, Token*>(w, token));
      }

    std::sort(dic.begin(), dic.end());

表層が同一の場合、std::sort は、クイックソートつまり、安定でない
ソートなので、エントリの順番は不定になってしまいます。

くどう


On 12/8/07, TSUCHIYA Masatoshi <tsuch****@imc*****> wrote:
> 土屋です.
>
> # 同内容のメールを送ったのですが,配送されないので再送します.
>
> 最近,mecab-ipadic を UTF-8 で利用しようとして気付いたのですが,EUC-JP な
> 辞書を使っている場合と,UTF-8 な辞書を使っている場合で,読み仮名付与の結
> 果が変化するようなのですが,これはそういうものでしょうか?
>
> 確認のためのサンプルコマンド列を以下に示します.
>
> % tar xzf mecab-ipadic-2.7.0-20070801.tar.gz
> % cd mecab-ipadic-2.7.0-20070801/
> % ./configure --with-charset=utf8
> % make
> % echo 高野山|iconv -f euc-jp -t utf-8|mecab -d `pwd`|iconv -f utf-8 -t euc-jp
> 高野山     名詞,固有名詞,一般,*,*,*,高野山,タカノヤマ,タカノヤマ
> EOS
> % make clean
> % ./configure --with-charset=euc-jp
> % make
> % echo 高野山|mecab -d `pwd`
> 高野山     名詞,固有名詞,一般,*,*,*,高野山,コウヤサン,コーヤサン
> EOS
>
> 他に気付いたのは,以下のような例です.なお,- で始まっている行が,UTF-8
> な辞書での結果,+ で始まっている行が EUC-JP な辞書での結果です.
>
> -追従   名詞,サ変接続,*,*,*,*,追従,ついじゅう,ついじゅー
> +追従   名詞,サ変接続,*,*,*,*,追従,ついしょう,ついしょー
>
> -久島   名詞,固有名詞,人名,姓,*,*,久島,くしま,くしま
> +久島   名詞,固有名詞,人名,姓,*,*,久島,ひさしま,ひさしま
>
> -堀田   名詞,固有名詞,人名,姓,*,*,堀田,ほった,ほった
> +堀田   名詞,固有名詞,人名,姓,*,*,堀田,ほりた,ほりた
>
> -上谷   名詞,固有名詞,地域,一般,*,*,上谷,かみだに,かみだに
> +上谷   名詞,固有名詞,地域,一般,*,*,上谷,こうだに,こーだに
>
> 読み仮名を振るのは難しいので,当たらないのは仕方ないと思います.しかし,
> 同一内容の辞書を使っているのに,文字コードを変化させただけで,結果が変わっ
> てくるのはちょっとまずいような気がするのですが,どうでしょうか.
>
> --
> 土屋 雅稔 ( TSUCHIYA Masatoshi )
>
> _______________________________________________
> mecab-users mailing list
> mecab****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/mecab-users
>




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