Perl

Perlを使って新元号を予想する


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パターンまで減らせました。