前回 igo-php を用いた形態素解析について述べたので、
今回はそちらを使って漢字を含む文章をひらがなに変換するプログラムを作ってみます。
<?php require_once 'lib/Igo.php'; $igo = new Igo(dirname(__FILE__) . "/ipadic"); $text = "漢字は、古代中国に発祥を持つ文字。特に中国語を表記するための文字である。"; $result = $igo->parse($text); $str = ""; foreach($result as $value){ $feature = explode(",", $value->feature); $str .= isset($feature[7]) ? $feature[7] : $value->surface; } echo mb_convert_kana($str, "c", "utf-8");
結果:
かんじは、こだいちゅうごくにはっしょうをもつもじ。とくにちゅうごくごをひょうきするためのもじである。
parse() されたテキストの読みがなは、feature 内のカンマ区切りされた8番目にあるので、
それを繋げば読みがなをつけることができます。
feature の読みはカタカナで書かれているので最後に全てひらがなに統一してあります。
Similar Posts:
- [PHP]複合名詞に対応させて分かち書きをする
- [PHP]ひらがな・カタカナをローマ字に変換する
- [PHP]文章を解析して単語ごとに分解する(形態素解析)
- [PHP][JS, Ajax]郵便番号を住所に変換する
- [PHP]FTPでアップロードやダウンロード等のファイル操作を行う
- [PHP]携帯サイト向けに文字コードを一括変換する
- [PHP]ひらがな・カタカナ、大文字・小文字を区別しないソート(並べ替え)
- [PHP]最低限覚えておきたい必須関数一覧
はじめまして。
ご質問させていただきたいことがあるのですが、
このソースを実行した際にひらがなではなくカタカナに変換されてしまうみたいです。
最後にひらがなに統一する「echo mb_convert_kana($str, “c”, “utf-8”);」が問題なのでしょうか?
お読み頂きありがとうございます。
通常の出力結果は全角カタカナとして出力されるため、
最後の「mb_convert_kana」でひらがなに変更する仕組みです。
何らかの理由でこれがうまく働かないとそのままカタカナで出力されることになります。
こちらの環境では特に問題なくひらがなで表示されているので、
お使いのサーバーで「mb_convert_kana」が正常に機能しているか確認する必要があるかもしれません。
また、環境によっては次の二行を先頭に加えると解決する場合があります。
mb_language("ja");
mb_internal_encoding("utf-8");
他にもファイルの文字コードの問題や、オプションの「c」を大文字で書いている等考えられますので、
一度カタカナをひらがなに変換するだけのシンプルなプログラムを書いて
サーバーでテストしてみると何かわかるかと思います。
返信ありがとうございます。
教えていただいた通りカタカナをひらがなに変換する簡単なプログラムを書いてみたところ無事変換されましたので、
漢字→カタカナ、カタカナ→ひらがなと分けてやったらできました!
ありがとうございました。
ありがとうございました。活用できました。