HAKADORI Script開発

漢字テキストによみがなを振る

2018.01.30 火

漢字テキストによみがなを振る

こんにちは、デジタル事業本部の藤田です。
突然ですが漢字よみがなクイズです。
下記それぞれの漢字によみがなを振ってください。

漢字よみがなクイズ

正解は記事中に出てきます。

●索引テキストを抽出しても「よみがな」がない

カタログを作成する際、DTP 作業において目次や索引を作成することが多々あります。以前 AppleScript で InDesign から目次・索引を作成する記事を紹介しましたが、索引となるテキストを抽出してもよみがながなければあいうえお順に並べ替えることはできません。というわけで、漢字テキストからよみがなを取得するツールやサービスを探して検証してみました。

●Jedit の機能を使う方法

アートマン21さんが開発・提供されている Jedit X/Jedit Ω には「漢字をひらがなに変換する」というコマンドがあります。

メニュー「ツール>漢字をひらがなに変換する」を実行すると、漢字をひらがなに変換します。カタカナはそのままにして変換しません。
参考:Jedit X ヘルプより

「漢字をひらがなに変換する」

「ツール」>「漢字をひらがなに変換する」を実行すると…

漢字をひらがなに変換

漢字をひらがなに変換します

Jedit のひらがな変換は、ver3.0のころは言語解析マネージャを利用していたようですが、Jedit X は Cocoa を呼び出していると思われます。

●Excel VBA を使う方法

Excel VBA では SetPhonetic メソッドで漢字にふりがなを作成することができます。ふりがなの取得は MS-IME からなので Windows 版 Excel のみの機能です。ふりがなを設定したいテキストのセルを選択してから VBE(Visual Basic Editor)を起動し、イミディエイトウィンドウを表示して、次のように入力します。

 Selection.SetPhonetic 

Selection.SetPhonetic

イミディエイトウィンドウに入力

[enter]キーを押すとふりがなが設定されます。ですが、そのままではふりがなは表示されないので [ホーム] タブの [フォント] [ルビ] ボタン をクリックし、ふりがなの表示/非表示を選択します。

ふりがなの表示/非表示

ふりがなの表示/非表示を選択

すると、セルの文字列にふりがなが表示されます。

ふりがなが表示

ふりがなが表示されます

さらに、文字列からふりがなをセルへ抽出するには PHONETIC 関数を使います。

PHONETIC 関数

PHONETIC 関数

PHONETIC 関数でふりがなをセルへ抽出することができました。

ふりがなをセルへ抽出

ふりがなをセルへ抽出(画面ではふりがなの種類をひらがなにしています)

●形態素解析 API を使う方法

形態素解析はテキストを解析するものですが、よみがなの取得にも使えます。今回は Yahoo! が提供する日本語形態素解析のサービスを使ってみます。

Yahoo! 形態素解析は…

日本語文を形態素に分割し、品詞、読みがなの付与、統計情報を取得できる機能を提供します。
※参考:テキスト解析:日本語形態素解析 - Yahoo!デベロッパーネットワークより

Yahoo! JAPAN の Web サービスを利用するには、アプリケーション ID が必要です。アプリケーション ID は Yahoo! JAPAN ID をお持ちの方なら誰でも登録できるので、形態素解析 API を使用するために取得します。
参考:Yahoo!デベロッパーネットワーク>ヘルプ>アプリケーションIDを登録する

アプリケーション ID を登録したら、さっそく形態素解析 API を使ってみます。ブラウザのアドレスバーに直接リクエスト URL をペーストし、パラメータ「sentence」には解析したいテキスト、「appid」にはアプリケーション ID を指定します。その他のパラメータはとりあえず省略してかまいません。

ブラウザのアドレスバーに直接リクエスト URL をペースト

ブラウザのアドレスバーに直接リクエスト URL をペーストする

[enter] を押すと、結果が XML で戻ってきます!

結果が XML で戻る

解析テキスト:「裏面」

解析対象のテキストが文章である場合は、品詞ごとに分割されます。

解析対象のテキストが文章である場合は、品詞ごとに分割される

解析テキスト:「庭には二羽鶏がいる」

さて、プログラムから API を使う方法はいろいろありますが、Yahoo! 形態素解析 API を AppleScript で利用するとこんな感じになります。

Yahoo! 形態素解析 API を AppleScript で利用する

※curl コマンドでリクエストを送信
※XML は System Events で処理を行い、<reading>タグの内容を返す

この方法を発展させて、Excel で選択したセルのテキストのよみがなを隣のセルに展開するようにしてみました。

Excel で形態素解析を展開

選択したセルのテキストのよみがなを展開する

なお、形態素解析 API は Yahoo! 以外にもさまざまな会社よりサービスが提供されています。

●漢字→よみがなの精度は?

さて、漢字からよみがなを取得できる方法をいくつか試してみましたが、精度はどうなんでしょうか? 漢字検定の問題集をお借りして検証してみました。上記3つの方法で漢字のよみがなを Excel に展開しています。

漢字検定の問題集

「正解ではないセル」は赤く塗りつぶすように条件付き書式を設定しました。概ね合っているものですが、やはりよみがなを取得できない場合はあるものです。

「正解ではないセル」は赤く塗りつぶす

「正解ではないセル」についていくつかピックアップしてみます。たとえば…

9級:つの

角(つの)

確かにそう読めなくもありません。

5級:

盛(も)る

三者三様です。

5級:こうこう

孝行(こうこう)

人の名前と勘違いしてしまったようです。

4級:五月雨さみだれ

五月雨(さみだれ)

裏の裏を読んでしまったのでしょうか?

3級:かり

掛(が)かり

濁点がつくかどうかは文脈で判断です。

5級:いっさつ、3級:れい、3級:いっきん

一冊 零度 一斤

数字はあえてそのままにしているのでしょうか?

1級:ちんせい、準1級:じゅう

砧声 戎馬

準1級〜1級ともなると難易度高過ぎです。

●補足

上記のよみがな精度検証における「正解ではないセル」は一部の範囲であり、全体的には概ね正解でした。ただ、やはり形態素解析 API はクラウドだけあって今後自動学習が進んでいくものだと思われます。なお、今回の記事は漢字よみがなの精度検証について調査したものであり、個々のツールの優越をつけるものではないことをおことわりしておきます。

  • この記事を書いた人

Noriaki Fujita

藤田 徳朗(フジタノリアキ) デジタル事業本部 DXソリューショングループ所属 Scriptを書いたり、アクセス解析をしています。どうぞよろしくお願いします。

-HAKADORI, Script開発
-, ,