和文モールスの受信技能向上には欠かせない、
カナ文字だけの文章ですが。
ルビを打ってくれるウェブサービスを経由させることで、まあ作れることは作れるのですが、
ひと手間かかるし、少し面倒ですよね。
やっぱり、
ニュースサイトから文章をコピーしてペタッと貼り付けるだけで、
カナ文字だけの文章に自動で変換してくれたら・・・
もっと気楽に和文の練習ができると思うんだけど。
ということで、前々からのわたしの中の懸案事項のひとつ。
「漢字にふりがなを自動で振っちゃうプロジェクト」を始動することにしました。
いちばん肝心な日本語文章の分析(形態素解析)ですが、
これは Yahoo! が提供する WebAPI を使って簡単に実装することに。
Yahoo!の「日本語形態素解析API」って?
日本語文を形態素に分割し、品詞、読みがなの付与、統計情報を取得できる機能を提供するもの。
WebAPI を使うために必要なこと
アプリケーション ID が必要です。
Yahoo! ID連携:アプリケーションIDを登録する - Yahoo!デベロッパーネットワーク
(Yahoo!のアカウントがあればすぐに取得できます。)
WebAPIを使ってみる
将来的には CW MANIA に実装する予定ですが、
今回は動作確認のため Python を使って試してみました。
プログラム的には、
- 日本語形態素解析に必要な URL を作成する
- 戻り値の XML をパース(日本語分析)する
- 必要なデータ(今回は読みがな)を取り出す
と、WebAPI を使えばほんの数行のコードを書くだけで試すことができます。
Windows 7 or 10、 Python 2.7
#coding: utf-8 import xml.dom.minidom import urllib import codecs import sys sys.stdin = codecs.getreader("shift_jis")(sys.stdin) appid = "XXXXXXXXXXXXXXXXXXXXXXXXX” yahoourl = "http://jlp.yahooapis.jp/MAService/V1/parse" def main(): moji = raw_input() sentence = moji.encode('utf-8') url = yahoourl + "?appid=" + appid + "&sentence=" + sentence src = urllib.urlopen(url).read() dom = xml.dom.minidom.parseString(src) print "----------------------------" nstr ="" for url in dom.getElementsByTagName("reading"): nstr = nstr + url.firstChild.data print nstr if __name__ == '__main__': main()
- 必須なリクエストパラメータは appid と sentence の二つです。
- appid の XXX に取得したアプリケーション ID を設定します
- sys.stdin = codecs・・・の行は文字入力処理時に UnicodeDecodeError が出ないようにするための ”おまじない” です。(OS、開発環境に依存)
- 形態素の読みがなだけが必要なので、reading フィールドだけを取り出します。
(利用制限)
- 24 時間以内で1つのアプリケーション ID につき 50000件 のリクエストが上限です。
- また、1リクエストの最大サイズは 100KB に制限されています。
実行してみる
Python コードを実行後の文字列入力待ちの状態に、
Google のニュースサイトからニュース記事をコピーして貼り付け、Enter します。
ご覧のとおり、漢字交じりの文章がふりがなだけの文章に正確に変換してくれました。
Yahoo! の「日本語形態素解析」は、独自で作った特別な辞書を使っているとかで、他の同種のサービスの辞書に比べて固有名詞の抽出精度がかなり高いと評判です。
今後の CW MANIA への実装ですが、
単純なふりがな変換だけではなく、
ニュースサイトが提供する WebAPI で最新ニュース取ってきて、
「和文モールスで流す・・・」
なんて、面白そうなこともできそうです。Hi