IMUZA.com

<<WordPress(ConoHa)<<はてなブログ

ホーム / WebTips / Yahoo! API を使って「漢字仮名交じり文」を「ひらがな」に変換する

Yahoo! API を使って「漢字仮名交じり文」を「ひらがな」に変換する

2016/02/19 WebTips, はてなブログ

別ブログ「そんなには褒めないよ。映画評」でミニシアター系の映画レビューを書いているのですが、続けているうちに500本くらいになっていますので、タイトルの五十音順で検索したり、一覧で見ることは出来ないかと考えてみました。

まず、今後のことを考えれば、カテゴリー「あ」「か」~「わ」で登録していくくらいしか方法はなさそうですが、問題は過去記事です。

  • いまさら500本の記事に新しくカテゴリーをふるのは現実的ではない
  • 全記事をテキストファイルで書き出せるが、全削除や上書きができないのでカテゴリーを一括でふることが出来ない
  • そもそもタイトル自体が漢字仮名交じり文の上に英数字を含んでいて五十音で管理できない

ということですので、今後書く記事についてはカテゴリー分けし、過去記事については五十音順の一覧ページを作ることにしました。

  • はてなブログの記事の五十音順タイトル一覧を作る
  • Yahoo! デベロッパーネットワーク
    • アプリケーション ID の取得
  • 「ルビ振り」を試してみる

はてなブログの記事の五十音順タイトル一覧を作る

流れはこんな感じです。

  1. 全記事をテキストファイルに書き出す
  2. TITLE と BASENAME を抜き出す
  3. TITLE の漢字仮名交じり文をひらがなに変換する
  4. 五十音順でソートし、リンク付き一覧ファイルを作成する

1, 2, 4 は php で簡単にできますが、問題は 3 のひらがな変換です。ググりますと、次の方法があるようです。

  1. MeCab(めかぶ)という形態素解析エンジンを使う
    形態素解析とは、文章を対象言語の文法や辞書から最小単位に分解し、対象が何であるか品詞などを解析していくことのようです。つまり、漢字仮名交じり文をひらがなに変換するためには、品詞や記号に分解し、前後の関係を見ながら漢字であればその読みを解析していくということになります(多分)。
    php_mecab というモジュールがあるようです。
  2. igo-php という「Igo – Java形態素解析器」の PHP 実装版を使う
  3. Yahoo! API の「ルビ振り」という Webサービスを使う

どう考えてもこの場合、3 ですね。

Yahoo! デベロッパーネットワーク

developer.yahoo.co.jp

アプリケーション ID の取得

  1. メニュー「アプリケーションの管理」 > ログインしていなければログイン
  2. 右上「新しいアプリケーションを開発」
  3. アプリケーションの種類 → サーバーサイド
    アプリケーション名、サイトURLは、公開しなければそのままでよさそう。
  4. 同意して確認ボタン
  5. アプリケーションID が表示される
    以後、「アプリケーションの管理」で確認できる

「ルビ振り」を試してみる

メニュー「サービス一覧」 > テキスト解析 > ルビ振り に仕様があり、GETリクエストのサンプルがあります。

php には、file_get_contents という HTTPリクエストにも使える関数がありますが、cURL 関数の方がずいぶん早いそうですので、Yahoo! のサンプルも cURL を使っています。

サンプルそのままですが、パースして文章に戻しています。

<?php
/**
 * ルビ振りAPIへのリクエストサンプル(GET)
 *
 */
$api = 'http://jlp.yahooapis.jp/FuriganaService/V1/furigana';
$appid = '取得したアプリケーション ID';
$params = array(
'sentence' => 'ルビ振りAPIへのリクエストサンプル'
);
$ch = curl_init($api.'?'.http_build_query($params));
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT      => "Yahoo AppID: $appid"
));
$result = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($result);
$furigana = '';
foreach ($xml->Result->WordList as $WordList) {
foreach ($WordList->Word as $Word) {
if (isset($Word->Furigana)) {
$furigana .= (string)$Word->Furigana;
} else {
$furigana .= (string)$Word->Surface;
}
}
}
print $params['sentence'] . '<br>' . $furigana;

出力

ルビ振りAPIへのリクエストサンプル
るびぶりAPIへのりくえすとさんぷる

使えそうです。

はてなブログのタイトルにふりがなを振り、php 配列に格納するに続く。

【Windows10】Dolbyオーディオドライバーを開始できません。Lenovo E430(解決)
はてなブログのタイトルにふりがなを振り、php 配列に格納する
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2022/06/26

WordPress:Aレコード変更でウェブだけ他サーバへ移転

2022/06/13

WordPress Popular Posts 他のプラグインに変えたほうがいいかも

2022/06/06

WordPress Popular Posts 表示されないを解決する

2022/06/03

WordPress Popular Posts 表示されない(解決だが…)

2022/05/29

WordPress:テーマをゼロから作ってみる(2)

最新記事を一覧で見る

よく読まれている記事

カテゴリー

  • はてなブログ211
  • WebTips108
  • javascript95
  • Joomla!88
  • Windows68
  • CSS62
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Wordpress34
  • Plamo33
  • Google32
  • はてなプラグイン25
  • php18
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • cms-style10
  • Chrome10
  • iPhone9
  • Git入門6
  • genesis6
  • Android4
  • Python4
  • ConoHa WING4
  • 静的サイトジェネレーター3
  • Firefox3
  • Blankslate3
  • Docker3
  • SSD3
  • Facebook3
  • スマートフォン3
  • GitHub2
  • Mactype2
  • 映画1
  • rails入門1
  • Twitter1
  • はてなブクマ1
  • youtube1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Another Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2022 · IMUZA.com