Perlを使って新元号を予想する
新元号発表まで残りわずか、新元号は何になるのか漠然と考えたりしていました。
明治(16)、大正(8)、昭和(17)、平成(11)と最近の元号は画数が少ない傾向がありそうと着目。
また、平成の「成」以外の漢字は過去に使われた元号の漢字に含まれている。
ということで、画数20未満で、過去に使われた漢字を洗い出すプログラムを書くことにしました。
過去に使われた元号のデータ
PerlはCPANという、モジュールリポジトリがあります。metacpanから、「Japanese Era」で検索しDateTime::Calendar::Japanese::Eraというモジュールを見つけました。このモジュールには日本の過去の元号が含まれ、registeredをいう関数で取得することができます。
漢字の画数を求める方法
MJ文字情報APIがIPAから公開されていました。漢字コードを指定してRESTAPIを投げると、JSON形式で漢字情報を取得することができます。その中に画数の情報が含まれます。
順列を求める
過去に使われた元号の漢字を重複を除いたのち、2文字の漢字の順列組み合わせを求める必要があります。Algorithm::Permuteというモジュールを使用しました。
Perlの醍醐味
CPANモジュールを組み合わせるだけで、簡単に予想することができました。元号のデータも自分で用意することなくコーディング出来るとは、思いませんでした。
予想結果
拙いコードと抽出結果もコミットしてあります。dokechin/gengo
先頭文字の読みも考慮
明治、大正、昭和、平成の頭文字であるマミムメモ、タチツテト、サシスセソ、ハヒフヘホを候補から外してみました。1445パターンまで減らせました。
一般名詞等を除去
形態素解析のText::MeCabを用いて、一般名詞などとして使われている物を除くように変更しました。1406パターンまで減らせました。