*ChaSenを使った場合ペイジの読みが正しく得られない [#v4ae2a5b] -ページ: BugTrack -投稿者: [[よっちい]] -優先順位: 低 -状態: 着手 -カテゴリー: 本体バグ -投稿日: 2003-11-29 (土) 12:09:30 -バージョン: **メッセージ [#n27ea0d6] 最近のChaSenはipadicに無い単語の読みを得ようとする(-F%y)と削除されてしまいます。そんなわけで読みが正しく得られず、索引ペイジの分類が正しく行われません。 --- func.php.orig Sun Nov 16 21:17:22 2003 +++ func.php Wed Nov 26 23:13:58 2003 @@ -314,7 +314,10 @@ $str .= "</li>"; if($pagereading_enable) { - if(mb_ereg('^([A-Za-zァ-ヶ])',$readings[$page],$matches)) { + if(mb_ereg('^([A-Za-z])',mb_convert_kana($page,"a"),$matches)) { + $head = $matches[1]; + } + elseif(mb_ereg('^([ァ-ヶ])',$readings[$page],$matches)) { $head = $matches[1]; } elseif (mb_ereg('^[ -~]|[^ぁ-ん亜-熙]',$page)) { こんな感じでどうでしょう? ---- -ありがとうございます。ChaSen-2.3.3で「辞書に読み,発音の情報がないとき,%y,%a などは空白を表示するよう変更.」されたあおりを食ったようですね。 -- [[ぱんだ]] &new{2003-11-30 (日) 02:05:07}; -cvsに投入しました。[[cvs:func.php]](v1.4:r1.56) -- [[ぱんだ]] &new{2003-11-30 (日) 02:08:09}; --mb_convert_kanaを使っているので、extension_loaded('mbstring') === FALSEな環境では動きません。仕方ないかな… -- [[ぱんだ]] &new{2003-11-30 (日) 02:08:09}; --mb_convert_kana()はわたしの好みなので、気にしていただかなくても結構です(が、この方がいいですよね?)。 -- [[よっちい]] &new{2003-11-30 (日) 22:26:35}; -上記の修正では直ってないようです。 大阪近鉄バファローズ オオサカキンテツ 大阪近鉄バファローズ/順位表 オオサカキンテツジュンイヒョウ バファローズが出力されない おすすめの1冊/ガールズセックス オススメノイチサツ ガールズセックスが出力されない ウェブ作成 サクセイ ウェブが出力されない CSS2のプロパティの値と継承関係 シーエスエスニノノネトケイショウカンケイ プロパティが出力されない ぱんだ ンダ パが出力されない ぷらぷら競馬/2004-01-31 ララケイバニゼロゼロヨンゼロイチサンイチ やはり「ぱ行」がダメ れいみぃ レイミ ィが出力されない ふぇんにっくす フンニックス ェが出力されない 備忘録/特殊フォルダでexplorerを開く ビボウロクトクシュデイーエックスピーエルオーアールイーアールヲヒラク フォルダが出力されない :RenameLog background: background-attachment: Information InterWikiName RecentChanges ぷぅ ペーター 読みが出力されない。しかし、background-image:やbackground-repeat:、Ikegamiはちゃんと読みが出力される。 んーん ンン 音引きが出力されない -あまりに多すぎて、手動で修正するのももう限界…。#norelatedが効かないのでよけいに厄介 -- [[reimy]] &new{2004-01-26 (月) 05:48:56}; --Chasen 2.2.9のときは「ぱ行」「ぁぃぅぇぉ」などが出力されない。英数文字は読みではなくそのまま英数文字が返った(menu1→menu1)。 -- [[reimy]] &new{2004-01-26 (月) 06:48:59}; --Chasen 2.3.3では「ぱ行」「ぁぃぅぇぉ」などだけでなく、上記のように出力されないものが増えた。英数文字は文字の読みが返るようになった(menu1→エムイーエヌユーイチ)。 --英数字の読みが出るのは使用する辞書が絡んでます。ipadic-2.7.0ではデフォルトで1byte文字も辞書に登録されているためこのようになってしまうのですが、Onebyte.dicを辞書から外すことで回避できます。 -- [[よっちい]] &new{2004-01-26 (月) 14:30:07}; ---ipadic-2.6.3を使用しています。β版の2.7.0を共用サーバーにインストールするよう要求するのはちょっと拙いと思ったので。&br;なお、2.6.3にはOnebyte.dicは存在しませんが、上記のように英数字の読みが出力されます。-- [[reimy]] &new{2004-01-27 (火) 18:13:08}; -すみません。Kakasi/Chasen対応の元々の開発者です。去年の秋から今年の年初めにかけて、忙しくって、開発サイトをあまり見ていませんでした。いつのまにやら、正式採用されていたのですね‥‥ (^^; 対策、考えます。なんか、Chasennの挙動がバージョンによって結構ちがうみたいで、厄介そう‥‥。 -- [[三浦克介]] &new{2004-01-26 (月) 10:16:44}; --個人的に現在(?)のChaSenは品質(管理)的に疑問が多いので、ipadicと共に推奨バージョンを設けるのがよろしいと思います。 -- [[よっちい]] &new{2004-01-26 (月) 14:39:10}; --開発版やβ版は避けたほうがいいです。リリース版以外はレンタルサーバーなどでインストールを要求しづらいので。現在のリリース版のchasen 2.3.3+ipadic 2.6.3という組み合わせが無難。 -- [[reimy]] &new{2004-01-27 (火) 18:17:01}; -漢字部分だけ抜き出してChaSenに渡すというのが、確実かなぁ? -- [[三浦克介]] &new{2004-01-27 (火) 18:48:01}; | 漢字 | ChaSen/Kakasiへ → 全角カタカナ | | ひらがな | 全角カタカナへ変換 | | 全角カタカナ | そのまま | | 全角英数字・記号 | ASCIIへ変換 | | 半角カタカナ | 全角カタカナへ変換 | | ASCII | そのまま | --それだと送りがなの部分がChasenに渡らないので、正しい読みが得られないと思いますが… -- [[reimy]] &new{2004-01-27 (火) 19:41:02}; ---うむむぅ。やっぱり、各バージョンの挙動を調べて、推奨バージョンを示すなり、バージョンごとに対処しないとダメなのか・・・。 -- [[三浦克介]] &new{2004-01-27 (火) 23:07:08}; -なお、kakasiでは正常に動作しています((ChaSenに比べると多少精度は落ちますが。))。やはりChaSen側の問題ですね。 -- [[reimy]] &new{2004-01-28 (水) 01:08:06}; -類似品(失礼な言い方かも)に[[MeCab:http://cl.aist-nara.ac.jp/~taku-ku/software/mecab/]]というものもあります(mecab -Oyomi)。ipadicを使うので精度は同等です。うまく使えば乗換え可能かと。 -- [[よっちい]] &new{2004-01-28 (水) 18:27:19}; --MeCabのmakeに失敗… -- [[reimy]] &new{2004-01-29 (木) 01:17:29}; ./.libs/libmecab.so: undefined reference to `pthread_mutex_unlock' ./.libs/libmecab.so: undefined reference to `pthread_mutex_lock' ./.libs/libmecab.so: undefined reference to `pthread_mutex_init' *** Error code 1 Stop in /hogehoge/bin/mecab-0.77/src. *** Error code 1 Stop in /hogehoge/bin/mecab-0.77. *** Error code 1 Stop in /hogehoge/bin/mecab-0.77. ---pthread (Linux Threads Library http://pauillac.inria.fr/~xleroy/linuxthreads/ ) がインストールされていないせいですね。 -- [[三浦克介]] &new{2004-01-29 (木) 08:51:52}; ---libtoolをゴニョゴニョすると通るようになると思います。処理系に何をお使いかわからないので的を外しているかもしれませんけれども。 -- [[よっちい]] &new{2004-02-02 (月) 20:41:31}; elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac 以前はpthreadを使えるようにするにはlibc_rをリンクするようにしてましたが、これはobsoleteになっている(で合ってる?)のにMeCabではlibc_rを使うようになっています。 --MeCabの場合もipadicのどのバージョンを使うかで結果が変わりそうですね。正式サポートは2.5.1までみたいで、ちょっと古い。2.6.xや2.7.xを使ったとき、どういう結果になるか… -- [[reimy]] &new{2004-01-29 (木) 00:52:15}; ---MeCabのメーリングリストに流れた情報によると、COLOR(crimson){ipadic-2.6.2以降でNG}とのことです(「連結表の仕様」が変わっているとか)。 -- [[よっちい]] &new{2004-01-29 (木) 17:17:35}; -ちょっとだけ面識があったのでChaSen開発元に聞いてみました。 -- [[よっちい]] &new{2004-06-07 (月) 20:46:54}; ぱんだ ンダ ~になるのは「ぱ」が未知語だからです。 % echo 'ぱんだ' | chasen ぱ 未知語 ん ン ん 名詞-非自立-一般 だ ダ だ 助動詞 特殊・ダ 基本形 EOS ~で、ChaSenはこれを「仕様」としています。なので、これを回避するための手っ取り早い手段は「ぱ」を辞書に登録してしまうことです(コストを最低にすれば他の辞書に影響は無いハズ)。こうすることで、 % echo 'ぱんだ' | chasen -F %y パンダ ~こうなることも確認済です。もし辞書のカスタマイズが許容できる環境であれば、これにより完璧に回避可能と思います。ユーザー辞書を作ってみます。 ~別手段としてMeCabについても調査中.... --ユーザー辞書を作ってみました、作成キットも同梱してます(&ref(chadic_puki.tar.gz);)。pukiwiki.dicをChaSenのユーザー辞書に入れることで、カタカナやひらがなが削除されてしまうことはなくなります。 -- [[よっちい]] &new{2004-06-10 (木) 21:12:34}; -MeCabの作者さんに相談してみたところ、[[MeCab]]-0.78で「未知語については入力そのままを出力する」という仕様にしてもらうことができました(多謝)。mb_convert_kana()を使って未知語の平仮名を片仮名に変換することで、[[KAKASI]]の出力に近くなったと思います。 ~パッチを当てて、pukiwiki.ini.phpに $pagereading_kanji2kana_converter = 'mecab'; : $pagereading_mecab_path = '/usr/local/bin/mecab'; としてみてください(パッチ&ref(mecab.patch.gz);)。 ~言い出しっぺのわたしとしては''ChaSenをやめてMeCabを推奨する''ということで決着したいのですがどうでしょうか? -- [[よっちい]] &new{2004-06-21 (月) 20:27:51}; -[[BugTrack2/58]] MeCabに対応して欲しい -- &new{2005-04-21 (木) 22:02:05}; #comment //#comment