LoginSignup
0
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-07-25

これまでのあらすじ

前回はこちら

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

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

ひらがなヒートマップ

詳細は前回記事に譲るが、宝塚の芸名のうち名前の方は、ひらがなの使用率が高い(参照)。

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

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

ひらがな一覧

kana = [
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['',   '',    '',   '', ''],
    ['',   '',    '',   '',   ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['', '', '', '', ''],
    ['',   '', '', '', ''],
    ['',   '', '', '', ''],
    ['',   '', '', '', ''],
]

使う人がいるかはわからないが、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にした辞書。
使われないひらがなもありうるため、ひらがなの一覧を別途作り、一覧に対して出現回数を参照する。

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

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

ヒートマップの作成

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によるヒートマップの作成

できた図がこれである。

image.png

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

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

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

image.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

解析編の続きはこちら。10期ごとに分けて各年代の傾向を解析する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0