エンジニアが平成の次の元号を予想する方法

More than 1 year has passed since last update.

次の元号は何になるかが一部で話題になっていますね。

もうすでに予想している人も居るかもしれませんが、ロジカルなアプローチをして次の元号を割り出す方法を考えてみました。

年号対応システムのテストデータや近未来SFの創作にも役立つかもしれません。

間違いや改善点がありましたら、ご遠慮なく指摘して下さい。 :relaxed:



年号の基準

「明治」の由来は何ですか?(「大正」、「昭和」、「平成」の由来は?)

上記の明治神宮の公式サイトによると年号の基準は以下の通りです。



  1. 国民の理想としてふさわしい意味を持つ

  2. 漢字二字

  3. 書きやすい

  4. 読みやすい

  5. 外国を含め過去に元号やおくり名として使われていない

  6. 俗用されていない


さらに、四書五経、史記などの中国の古典から引用されています。


考えられる条件

上記の基準から導き出せる年号の条件は以下の通りだと考えられます。


  1. 漢字二字

  2. 国字ではない(中国の古典には日本独自の字は存在しない)

  3. 過去の漢字文化圏の元号、おくり名を除外

  4. 悪い意味の文字が入っていない。

  5. 二字熟語ではない。

  6. 名字やよくある人名としても存在しない。

  7. 地名としても存在しない。

さらに、以上の条件と世間の常識をもとに推測すると以下の条件も追加できます。


  1. 小学生で習う漢字 (明治以降の年号は小学生で習う漢字で構成されている。)

  2. 画数が少ない (明治以降で最も画数が多いのは昭で9画のため。一文字10画以内が妥当か?)

  3. 年号とおくり名を反対にしたものも除外 (例:慶応→応慶 etc.)

  4. 二字熟語を反対にしたものも除外

  5. 音読みのローマ字表記一文字目がMTSHと一致するのも除外(銀行などのシステムはこういう風に管理しているらしい)

  6. 音読みが2音になるパターンと、同じ音が続くパターンも語呂が悪いので除外

  7. 明治以降の元号で使われた漢字を使わない

  8. 漢数字や「円」も通貨など実用上の数字と紛らわしいから除外

  9. 年、月、日、時、分、秒 も記載する際に紛らわしいので除外

おそらく、以上の16の条件を満たす二字の漢字の組み合わせが次の年号となるはずです。


アルゴリズム

では、その組み合わせを決定する方法を以下に記載します。


使用漢字の決定


  1. 小学生が習う漢字を抽出



  2. 画数が10文字以下を抽出



  3. 漢数字を除外 (一、二、三、参、四、五、六、七、八、九、十、拾(金銭に関する文書などで間違いを防ぐため、「十」の代わりに特に用いる。)、百、千、万)

    600字

  4. 明、治、大、正、昭、和、平、成、円、年、月、日、時、分、秒 を除外

    585字

  5. 国字を除外



  6. 一文字で悪い意味がある漢字を除外 (例:死、災、苦、変 etc. )

    参考サイトがあれば教えてください。

    自分でやりました。とりあえず、一文字で意味の悪い漢字やこれは年号にはちょっと使えないなというのを主観的に判断しました。2で作成したファイルを元に判定項目が「0」となるのは不採用の漢字で、「1」が採用の漢字です。→ 448字


妥当な組み合わせを抽出

上の手順で抽出した漢字は448文字なので、組み合わせは448×447で、200,256通りです。

その結果に対して、以下に該当する二字を除外します。

また、確実性は若干低くなりますが、次からの項目を飛ばして、最後の残ったデータをGoogleの検索結果とマッチさせるのをやった方が、お手軽だと思います。

ただし、約20万回検索結果にアクセスする訳なので、1回あたり、1秒かかるとすると約20万秒もかかります。時間にすると約55時間。つまり約2.5日かかります。待ってる時間がもったいないですし、力業であまりエレガントな解決方法ではないかなって思うので、以下の内容を実施した後に実行した方が良いかと思います。


年号の除外


  1. 江戸時代以前の日本の年号を抽出



  2. 過去の中国の年号を抽出



  3. 過去の朝鮮半島の年号を抽出



  4. 過去の台湾の年号を抽出



  5. 過去のベトナムの年号を抽出



  6. 抽出したデータと、そのデータの二文字を逆転した文字を除外する。


東アジアの君主のおくり名の除外


  1. 江戸時代以前の天皇のおくり名を抽出



  2. 過去の中国の皇帝のおくり名を抽出



  3. 過去の朝鮮の王のおくり名を抽出



  4. 抽出したデータと、そのデータの二文字を逆転した文字を除外する。

※台湾とベトナムはWikipediaの項目が不完全のため実施しない。


人名、地名と熟語の除外


  1. 名字に一致する組み合わせを除外



  2. よくある人名と一致する組み合わせを除外


    • 上のページに名前の項目があるのでそれを利用する



  3. 日本の都道府県、市区町村を除外



  4. 日本の駅名を除外 1



  5. 国語辞典に載っている熟語に該当する組み合わせを除外



    • 単語感情極性対応表 このサイトの日本語ファイルが岩波国語辞典を元にしているのでそれを利用する。



  6. 国語辞典に載っている熟語を逆転した組み合わせを除外

  7. 音読みをローマ字に変換した時、MTSHが頭文字になる組み合わせを除外

  8. 音読みが2音になるパターンを除外

  9. 同じ音が続くパターンを除外


残ったデータをGoogleの検索結果とマッチさせる


  • 仕上げとして、残ったデータをGoogle検索し、1ページ目の1番目のタイトルと部分一致するかチェックし、しなかったものを抽出。2

例えば、「青全」という文字列を検索すると、「フェイシャル・ボディ・ヘアエステ かっさ 東京・表参道 身美容室」が1番目に表示されますが、「青全」と部分一致しないため、候補となります。

以上の手順を繰り返して行くと良い感じの組み合わせが残るのではないでしょうか?

最後まで計算できてませんが、私の予想では候補となるのは10万程度だと思います。





  1. 実は大正駅、昭和駅、平成駅は存在するのですが、どれもそれぞれの年号元年より後に建てられています。因みに明治駅は存在しないそうです。 



  2. https://www.google.co.jp/search?q=平成 この様に漢字を入力して、エンコードすると検索結果のURLを得られます。スクレイピングすれば結構簡単にできそうな気がします。