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 >