ヅカの芸名を自動生成するAIを作る(3)：データ解析編(2)

# これまでのあらすじ

前回は[こちら](https://qiita.com/muto-jo/items/bbff7471fe235f962bad)

ヅカの芸名の一覧を作って、まずその解析をしていたところ。
大体見たのでまあいいかなと思ったが、やっぱりもうちょっとやりたいことがあったので、今回はその続き。

いい加減keras使った機械学習に入れと自分でも思わなくはないが、気になる点はまだ多いので、pandasやmatplotlibの勉強がてらもう少し解析を続けようと思う。
（次の記事は10年代ごとの姓名、使われる字を調べて年代の比較をしたい）

## ひらがなヒートマップ

詳細は前回記事に譲るが、宝塚の芸名のうち名前の方は、ひらがなの使用率が高い（[参照](https://qiita.com/muto-jo/items/bbff7471fe235f962bad)）。

ひらがなをヒートマップにしたくなってしまったのだ。
漢字と違って個数が少ないのと、規則性のある並べ方をしやすいので（漢字もできなくはない部首順で並べるとか。が、漢字は数が多すぎる）、ヒートマップにすると法則性が可視化しやすい。

出現回数とかなをExcelでヒートマップにするのも思わなくはなかったが、ここはmatplotlibの勉強がてらやってみたい

### ひらがな一覧

```Python
kana = [
    ['あ', 'い', 'う', 'え', 'お'],
    ['か', 'き', 'く', 'け', 'こ'],
    ['さ', 'し', 'す', 'せ', 'そ'],
    ['た', 'ち', 'つ', 'て', 'と'],
    ['な', 'に', 'ぬ', 'ね', 'の'],
    ['は', 'ひ', 'ふ', 'へ', 'ほ'],
    ['ま', 'み', 'む', 'め', 'も'],
    ['や', 'ゐ', 'ゆ', 'ゑ', 'よ'],
    ['ら', 'り', 'る', 'れ', 'ろ'],
    ['わ',   '',    '',   '', 'を'],
    ['ん',   '',    '',   '',   ''],
    ['が', 'ぎ', 'ぐ', 'げ', 'ご'],
    ['ざ', 'じ', 'ず', 'ぜ', 'ぞ'],
    ['だ', 'ぢ', 'づ', 'で', 'ど'],
    ['ば', 'び', 'ぶ', 'べ', 'ぼ'],
    ['ぱ', 'ぴ', 'ぷ', 'ぺ', 'ぽ'],
    ['ぁ',   'ぃ', 'ぅ', 'ぇ', 'ぉ'],
    ['',   '', 'っ', '', ''],
    ['ゃ',   '', 'ゅ', '', 'ょ'],
]
```

使う人がいるかはわからないが、Pythonでひらがな一覧を使う予定があれば、上のソースのコピーをどうぞ。
これは人が見やすく（書きやすく）するため「あいうえお」を横に、「あかさたな」を縦に並べている。よく見る「あ行」が一番右にあるひらがな表にするには、時計回りに回転させる。

### ひらがなごとの出現回数

```Python
kana_counts = []
for k_1 in kana:
    kc_1 = [name_dic[c] if c != '' and c in name_dic else 0 for c in k_1]
    kana_counts.append(kc_1)
print(kana_counts)
kana_counts = np.rot90(np.array(kana_counts), -1)
kana_counts
```

name_dicは宝塚の芸名のうち、名前を解析し、字一文字をkeyとし出現回数をvalueにした辞書。
使われないひらがなもありうるため、ひらがなの一覧を別途作り、一覧に対して出現回数を参照する。

二次元配列を一次元配列にするとヒートマップにしたときにひらがな表にできないので、２次元配列のまま出現回数をカウントしている。

ヒートマップにした際、よく見るあ行が一番右の表形式にするため、時計回りに90度回転させる(np.rot90()の箇所)。

### ヒートマップの作成

```Python
import matplotlib.pyplot as plt

R = 5
C = 19

plt.rcParams['font.family'] = 'Hiragino Sans'

# ヒートマップを作成
fig, ax = plt.subplots(ncols = 1, nrows = 1, figsize = (13, 5)) # 図の設定
ax.pcolor(kana_counts, cmap=plt.cm.Reds) # ヒートマップ
ax.set_xticks(np.arange(C) + 0.5) # x軸目盛の位置
ax.set_xticklabels(['ゅ', 'っ', 'ぁ', 'ぱ', 'ば', 'だ', 'ざ', 'が', 'ん', 'わ', 'ら', 'や', 'ま', 'は', 'な', 'た', 'さ', 'か', 'あ'])  # x軸目盛のラベル
ax.set_yticks(np.arange(R) + 0.5) # y軸目盛の位置
ax.set_yticklabels(['あ', 'い', 'う', 'え', 'お'])  # y軸目盛のラベル
ax.invert_yaxis()
plt.show() # 図を表示
```

筆者の環境はmacなので、日本語表示ができるようHiragino Sansを設定する。

ヒートマップの作成は下記の記事を参考にし、大いに助けられた。

[pcolorによるヒートマップの作成](https://www.anarchive-beta.com/entry/2021/10/01/100107)

できた図がこれである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/343307/eb8ea0af-f40b-b672-3ab4-f83631bc6e9f.png)

全体的に右上の比率が高い。特に、「あ」音と「い」音。ついで「う」音。
行で言うと、「ま」行「る」行が高い。おそらく読みと相関があるかと思う。一般女性名との比較もしたくなってきたが、そこまですると横道にそれすぎるか…

やはりと言うべきか濁音、半濁音は少ない。半濁音は4700人もいるのだから居てもいい気もするが…。
濁音になると「う」音「お」音の比率が相対的に高いのは不思議だ。

名前読みのひらがなヒートマップも作ってみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/343307/c1c8fcba-1eb1-c039-eb78-ae44812cd0db.png)

「こ」の利用率が格段に上がるのは、「子」が最も多く使われる字だからだろう。
それ以外の傾向は名前とおおむね同様である。

当たり前な結論のような気もするが、そうでもない気もする。
ひらがな名だから使われる字はなく、漢字の時だけ使われるような字（ひらがな名に開かれにくい）は「子」以外にないと言うことなのだろう。

参考にひらがなに対しての出現回数の表を記載しておく。

|かな|ひらがな名での出現回数|読みでの出現回数|
|:-:|:-:|:-:|
|あ|177|394|
|い|175|465|
|う|75|383|
|え|46|235|
|お|63|265|
|か|366|727|
|き|172|601|
|く|57|135|
|け|19|92|
|こ|54|1270|
|さ|205|478|
|し|93|238|
|す|57|130|
|せ|42|106|
|そ|12|27|
|た|60|181|
|ち|84|381|
|つ|107|270|
|て|9|37|
|と|103|266|
|な|133|349|
|に|9|29|
|ぬ|1|10|
|ね|22|64|
|の|107|169|
|は|62|167|
|ひ|157|251|
|ふ|18|64|
|へ|2|0|
|ほ|71|110|
|ま|181|449|
|み|434|1079|
|む|7|17|
|め|37|69|
|も|38|89|
|や|82|212|
|ゐ|1|0|
|ゆ|224|464|
|ゑ|4|0|
|よ|41|292|
|ら|168|240|
|り|350|639|
|る|287|480|
|れ|87|189|
|ろ|46|85|
|わ|24|49|
|を|23|9|
|ん|61|198|
|が|5|10|
|ぎ|10|23|
|ぐ|23|44|
|げ|10|27|
|ご|3|6|
|ざ|2|3|
|じ|18|106|
|ず|43|139|
|ぜ|0|0|
|ぞ|1|6|
|だ|7|12|
|ぢ|4|4|
|づ|33|64|
|で|6|22|
|ど|33|62|
|ば|21|31|
|び|6|10|
|ぶ|35|51|
|べ|2|4|
|ぼ|23|28|
|ぱ|0|1|
|ぴ|0|0|
|ぷ|0|0|
|ぺ|0|0|
|ぽ|0|0|
|ぁ|0|0|
|ぃ|0|1|
|ぅ|0|0|
|ぇ|0|0|
|ぉ|0|0|
|っ|0|4|
|ゃ|0|0|
|ゅ|17|91|
|ょ|8|101|

解析編の続きは[こちら](https://qiita.com/muto-jo/items/8dffef28b0b78f744b32)。10期ごとに分けて各年代の傾向を解析する。