0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

これまでのあらすじ

前回はこちら

ヅカの芸名の一覧を作って、まずその解析をしていたところ。
当初は90期(2002年入団、つまりここ20年)以降の芸名を集めれば、現代風のヅカの芸名の学習データになると想定していた。しかし、ざっと解析すると想像以上にそれより前の年代から現代っぽい気がしており、それを確認しているところ。

年代を10期ごとに分ける

本来であれば、2020年代、2010年代と西暦で10年紀ごとに分けたいのだが、宝塚の期と入団年を合わせるのは実は面倒臭い…。初期は入団年が一定でなかったり、戦争期の混乱もあったようで、安定して期=>入団年を特定できるのは音楽学校からの入団制度が整ってからになる。

なので入団期を10期ごとに分けて便宜上10年紀とする。

データ解析編(1)で取り込んだDataFrameを基に、10期ごとかつ芸名と読み仮名を姓名に分けたDataFrameを作成する。

import math

def devide_name(df, key):
    df = df[key].str.split(' ', expand = True)
    df.rename(columns = {0:'', 1:''}, inplace=True)
    return df

dec_data = list()
for i in  range(math.ceil(MAX_PERIOD / 10)):
        print('{} - {}'.format(i * 10, (i + 1) * 10))
        name = actress_data.query('{} * 10 <= 期 < {} * 10'.format(i, i + 1))
        dec_data.append({'芸名':devide_name(name, '芸名'), '読み仮名':devide_name(name, '読み仮名')})
dec_data[9]

{'芸名':           
 0    芽吹   幸奈
 1    愛原   実花
 2       れおな
 3    香綾  しずる
 4    花音    
 ..  ...  ...
 32   春矢   祐璃
 33       玲央
 34  万名月    
 35   璃央  じゅん
 36   桜里   まお
 
 [433 rows x 2 columns],
 '読み仮名':            
 0    めぶき  ゆきな
 1   あいはら   みか
 2    ひびき  れおな
 3   かりょう  しずる
 4    かのん   まい
 ..   ...  ...
 32   はるや  ゆうり
 33   はやと   れお
 34  まなづき   こう
 35   りおう  じゅん
 36   おうり   まお
 
 [433 rows x 2 columns]}

これでindex=0に1期から9期、1に10期から19期と…10に100期から108期、10期ごとに分割した姓名が別列のDataFrameができた。

解析するもの

前回はひらがなヒートマップなども作ったが、あれは趣味であんまり傾向を知る解析としては意味がないので、解析内容を絞り、以下の3つを解析する。

  • 文字の出現回数
    • 姓、名に使われる文字が各年代でどう変化しているか
  • ランキング
    • 重複の多い(=その年代で人気の高い)姓、名
  • ユニーク率
    • 姓、名の重複率の推移

データとして「芸名」と「読み仮名」を別に持っているので、芸名、読み仮名どちらも解析する。

文字の出現回数

DataFrameから文字の出現回数をカウントする関数を定義する。
使われている文字すべてを出すと多くなりすぎ、人気のある文字の傾向が分かれば良いのでTOP10くらいに絞る。

#使われている文字の出現回数TOP20をカウントする関数
def count_char_appearance(df, type_key, name_key):
    d = dict()
    for index, data in df[type_key][name_key].iteritems():
        for s in data:
            d.setdefault(s, 0)
            d[s] = d[s] + 1
    d2 = sorted(d.items(), key = lambda  x : x[1], reverse = True)
    return d2[:10]
count_char_appearance(dec_data[9], '芸名', '')

[('', 30),
 ('', 29),
 ('', 23),
 ('', 22),
 ('', 20),
 ('', 20),
 ('', 18),
 ('', 17),
 ('', 16),
 ('', 16)]

ランキング

DataFrameから重複している姓名やその重複数をカウントする。
おおむねユニークなのはこれまでの解析でわかっているので、これもTOP10くらいに絞る。

#重複の多いTOP10を出力する関数
def get_same_name(df, type_key, name_key):
    l = list()
    for index, data in  df[type_key][name_key].value_counts()[:10].iteritems():
        l.append((index, data))
    return l
get_same_name(dec_data[9], '芸名', '')

[('', 2),
 ('朝陽', 2),
 ('芽吹', 1),
 ('夢華', 1),
 ('咲妃', 1),
 ('春海', 1),
 ('瀬戸花', 1),
 ('秋音', 1),
 ('夢奈', 1),
 ('音咲', 1)]

ユニーク率

DataFrameから姓名がどの程度重複しているかの数字を出す。
おおむねユニークなのはわかっているが、率の変化を見ることで、どの程度個性化が変化しているかが見てとれるかを期待している。

#ユニーク性(重複のない率)を計測する関数
def measure_unique(df, type_key, name_key):
    return df[type_key][name_key].value_counts().value_counts(normalize = True, sort = False)[1]
measure_unique(dec_data[9], '芸名', '')

0.9953596287703016

文字の出現回数の変化

芸名/姓

文字 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位
1期代 8 7 5 5 4 4 3 3 3 3
10期代 35 20 13 12 11 11 10 9 9 9
20期代 33 31 28 26 25 24 22 22 22 20
30期代 22 18 18 15 13 12 12 11 11 11
40期代 26 25 23 23 22 20 20 14 14 12
50期代 37 25 21 20 19 17 13 13 12 10
60期代 21 21 18 16 14 13 13 12 12 11
70期代 18 18 17 16 14 13 12 12 12 12
80期代 33 22 21 18 17 15 15 14 14 14
90期代 30 29 23 22 20 20 18 17 16 16
100期代 19 18 17 17 15 15 15 14 14 13

20期代まで人気のあった「野」が30期以降順位を落とし、50期以降ではTOP10から消えている。「山」も同じ傾向を辿っている。
これは20期までは万葉集などを参考に名付けられることが多く、野や山が多く詠われていたのだろう。

「月」はコンスタントに人気があり、30期以降高位にランク入りしている。100期代ないのは興味深い。
「美」も20期以降、ほぼランク入りしており人気の高い文字だが、100期代では下がっている。「花」は安定して人気がある。

「城」は70期まではランク入りしているが、それ以降は無くなっている。いないわけではなく、月城かなとさんなどが思いつく。
「風」は60期代からランク入りしている。「海」は90期にランク入りしただけでそれ以外にはいない。

ここ30期で目立つのは、「乃」「羽」「咲」「華」「音」。
しかし、「彩」「愛」は100期にしかなく、ランク傾向に変化が見られる。100期はまた時代が変わってきている感がある。

100期生は、2012年音楽学校入学、15〜18歳が入学資格なので、1994年〜97年生まれの女性でバブル崩壊後、平成に生まれている。108期だと全員21世紀の生まれである。エンジニア的には、生まれた時からパソコンがあり、幼少期には家庭にインターネットが広まっている世代でもある。
90期もおおむね平成生まれだが、昭和生まれが混じっている年代である。

社会が大きく変わり、名付けにも何か変化が起きているようだが、90期と同世代の筆者には明確に捉えきれない何かを感じる。
予測であるが、スマホネイティブな世代(2010年ころ生まれ)が入団する頃にはまた名前の傾向が変わっているのではないだろうか。

芸名/名

文字 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位
1期代 53 3 3 3 2 2 2 2 2 2
10期代 261 29 17 16 13 13 11 11 9 9
20期代 427 65 60 48 38 30 30 24 19 19
30期代 159 52 41 34 31 27 24 19 16 11
40期代 151 87 63 58 40 33 32 27 22 20
50期代 80 74 67 57 49 47 37 35 35 33
60期代 51 40 39 31 30 27 27 26 23 22
70期代 45 35 31 28 27 26 25 23 21 18
80期代 53 36 35 34 30 26 25 25 24 23
90期代 52 37 35 29 28 28 26 25 24 22
100期代 42 32 29 28 24 18 17 16 15 15

これまた面白い結果が出たもんだ。
子が使われなくなったのは、前々回の記事で解析したが、80期以降のひらがなの利用率の高さ。ひらがなのほうが柔らかい印象は出るが…
「美」の字が定番だったのに80期以降ランク外になっている。姓の方では使われていることから、昔は姓名どちらかに美を使うが、徐々に姓のほうに移っていったという推移があるようだ。

前回のひらがなヒートマップで、「か」「み」「り」「る」が多い傾向はわかっている。この4文字を見てみたい。

「か」は安定して高いが、100期では下がっている。
「み」は安定して3位以内におおむね入っていたが、80期以降徐々にランクを下げている。100期では少し復権。「美」の推移と相関がある?
「り」は20期代から使われているが、徐々にランクを上げ、60期以降は定番の文字にな理、30期連続で一位。
「る」は50期で2位である以外は中〜下位にランク入りしていたが、80期以降尻すぼみで90期以降消えた。ここ20年で人気がなくなった文字。

興味深いのは「ら」で、ここ30期でいきなりランク2位になっている。なぜだ。
100期特有で「と」「ん」がある。

読み仮名/姓

文字 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位
1期代 19 13 12 12 11 11 9 9 8 8
10期代 68 61 55 52 47 46 45 43 42 39
20期代 157 142 125 111 100 91 89 89 79 78
30期代 81 69 57 57 54 53 46 46 45 45
40期代 100 99 94 86 78 66 61 58 55 54
50期代 94 89 82 80 79 71 67 61 52 51
60期代 83 81 73 65 63 62 52 49 45 43
70期代 90 82 73 65 61 61 57 50 50 47
80期代 91 77 74 71 58 58 55 53 52 47
90期代 106 92 82 70 65 65 62 62 51 44
100期代 74 67 65 63 61 54 52 40 39 38

「ま」が順当に順位を下げている。逆に「き」は順位を上げ、ここ40期は安定している。「な」も上昇傾向にある。
「か」は安定していたが、ここ30期で下降傾向が見える。
「み」も下降傾向に思えるが、100期でランクを上げているので、まだわからない。
「は」はここ30期のトレンド。「羽」「華」が使われるようになった影響だろう。「華」は「か」とも読むが、華優希のように「はな」読みが多いのかもしれない。80期以降で「華」のつく姓で、「はな」読みは25名、「か」読みは32名だった。ごめん。

読み仮名/名

文字 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位
1期代 53 15 13 8 8 7 5 5 4 4
10期代 264 75 41 40 35 35 35 30 29 28
20期代 443 192 90 82 79 74 73 70 61 57
30期代 164 124 54 52 49 47 44 43 40 37
40期代 200 161 86 81 78 72 65 60 54 54
50期代 151 115 96 86 83 72 64 64 63 58
60期代 93 91 77 56 55 53 52 50 44 42
70期代 89 78 73 65 62 54 50 47 47 38
80期代 81 80 60 59 50 47 46 46 45 42
90期代 79 66 60 58 49 48 48 47 46 46
100期代 59 56 46 44 40 40 40 39 37 34

「り」は徐々に上がってきて、「こ」は途中消滅。「み」は安定していたが、近年下降気味。というのは、芸名/名と同様。
「い」がランクを上げている。芸名/名も同様だったが気づかなかった。
「ら」は芸名/名だとここ30期のランクは高いが、読み仮名だとランクが下がる。
「る」は芸名/名だとランク内にいるが、読みだとランク外になる。ひらがなでしか使われない。確かに「る」読みする感じはあまり思いつかない。

ランキング

芸名/姓

名前 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位
1期代 秋田 2 奈良 2 松帆 2 關守 2 松山 2 若菜 2 1 天津 1 有明 1 初瀬 1
10期代 千鳥 3 八重 2 2 雄島 2 如月 2 須磨 2 2 櫻井 2 筑紫 2 山野 2
20期代 4 大和 3 2 小波 2 三室 2 2 櫻木 2 2 大宮 2 鈴川 2
30期代 深山 2 吾妻 2 吉野 2 立花 2 川霧 2 常盤 2 春日 2 千代田 2 2 三室 2
40期代 3 3 3 3 3 3 千波 3 2 多摩川 2 八雲 2
50期代 3 2 2 駒草 2 2 登流 2 2 長月 2 2 千城 2
60期代 2 2 2 一城 2 若菜 2 2 2 2 2 高嶺 2
70期代 大空 2 穂高 2 2 鈴奈 2 宝樹 2 2 2 1 純名 1 名城 1
80期代 初輝 2 高宮 2 南帆 2 七海 2 夢咲 2 2 蓮城 2 遥海 1 青葉 1 華城 1
90期代 2 朝陽 2 芽吹 1 夢華 1 咲妃 1 春海 1 瀬戸花 1 秋音 1 夢奈 1 音咲 1
100期代 1 真澄 1 鳳城 1 和真 1 湖春 1 華世 1 明希翔 1 青風 1 水城 1 花翔 1

重複がほとんどないので、あまり見るべきところがない。
強いて言えば、40期〜70期に多かった一文字姓が減っていることか。比較的バリエーション豊かに見える。

芸名/名

名前 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位
1期代 君子 2 八重子 2 道子 2 小夜子 2 もしほ 2 咲子 2 浪子 2 千鳥 2 月子 2 音羽子 1
10期代 浪子 5 櫻子 4 浦子 3 麗子 3 光子 3 葉子 3 邦子 3 関子 3 幾代 3 清子 3
20期代 陽子 8 京子 8 明子 7 輝子 6 妙子 6 玲子 6 松子 4 4 黎子 4 公子 4
30期代 みどり 8 ゆかり 7 京子 6 妙子 6 洋子 6 かほる 6 千鶴 5 公子 5 三千代 4 4
40期代 京子 8 洋子 7 千鶴 6 まり 6 ひろみ 5 みどり 5 由美 5 万里子 5 ひかる 5 美千代 4
50期代 ひかる 8 のぼる 8 みちる 6 かほる 6 まり 6 あきら 5 ゆたか 5 みつる 5 ひろみ 5 みき 5
60期代 じゅん 5 3 かおる 3 あすか 3 ゆう 3 ゆかり 3 ひかる 3 あい 3 3 のぼる 3
70期代 ゆう 6 まり 6 はるか 5 ひとみ 5 4 4 4 れい 3 つかさ 3 あい 3
80期代 ひかる 3 2 しゅん 2 2 れい 2 うらら 2 2 さら 2 ゆり 2 きら 2
90期代 りょう 5 れい 5 3 3 ゆう 3 玲央 3 ゆめ 3 みらい 3 3 3
100期代 さくら 3 みら 2 りり 2 2 ゆう 2 れん 2 2 くらら 2 2 2

これも全般的に重複は減っている。そこは詳しくはこの後のユニーク率で見ればいいか。
1期代から20期代の××子がすごい。それだけ定番の名前だったという事か。
30期からチラホラひらがな名が増え、50期代は全てひらがな名、70期以降は漢字名も復権するが、一文字名になっている。

ひらがな名、バリエーションは多いが、ここでも着目はやはり100期。
90期以前のひらがな名は、漢字を開いたものが多い。例えば、「りょう」は「涼」などの開きだろう。「れい」は「礼」など。
対して100期は漢字が当たらないひらがな名が多い。「みら」「りり」「くらら」が当たる。漢字を当てるのはできるだろうし、字面も思いつくが、日本人っぽくない。
なお100期以前でも、「さら」、「玲央」などは同様に日本人らしくない名前である。

読み仮名/姓

名前 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位
1期代 あきた 2 なら 2 まつほ 2 せきもり 2 まつやま 2 わかな 2 いずみ 1 あまつ 1 ありあけ 1 はつせ 1
10期代 おじま 3 たかやま 2 やえ 2 みむろ 2 やまの 2 やまと 2 はまの 2 いずみ 2 すま 2 さくらい 2
20期代 あけぼの 4 みなみ 4 あき 3 やしま 3 みやま 3 みずき 3 はるな 3 ふじ 3 やまと 3 みやぎ 2
30期代 まき 3 たちばな 3 みやま 3 むらさき 3 つきしろ 3 よしの 3 おおみ 2 ゆり 2 まり 2 かすが 2
40期代 ふじ 5 しらかわ 4 その 4 みなみ 4 やしろ 3 あずま 3 まり 3 まき 3 はま 3 ちなみ 3
50期代 まり 4 あき 4 しま 4 なつ 3 わか 3 ほうじょう 3 くれない 3 ゆみ 3 たき 3 じょう 3
60期代 はるの 3 ゆうき 2 よう 2 ひめ 2 まち 2 わかな 2 みや 2 あそう 2 りか 2 いちじょう 2
70期代 あい 2 あかね 2 すずな 2 ふたば 2 しづき 2 おおぞら 2 ゆうき 2 ゆう 2 みち 2 たからぎ 2
80期代 あやね 2 せん 2 みなほ 2 あおみ 2 ななみ 2 ゆうき 2 はるか 2 ゆめさき 2 さわき 2 みや 2
90期代 はなき 2 きづき 2 うらら 2 ななせ 2 おうか 2 あまき 2 しざき 2 そうま 2 かな 2 あさひ 2
100期代 おとか 2 らん 1 れあき 1 かずま 1 こはる 1 かせ 1 あきと 1 あおかぜ 1 みずしろ 1 はなと 1

これもあまり語ることはない。と思ったが、…これ姓のよみだよな?
ほとんど名前…一見、自分のプログラムミスを疑う程度には。

読み仮名/名

名前 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位
1期代 きみこ 2 やえこ 2 みちこ 2 さよこ 2 もしほ 2 さきこ 2 なみこ 2 ちどり 2 つきこ 2 おとわこ 1
10期代 ようこ 8 たかこ 5 なみこ 5 みなこ 5 ひさこ 4 うらこ 4 あきこ 4 きよこ 4 ひでこ 4 せきこ 4
20期代 れいこ 15 ようこ 15 みやこ 13 あきこ 11 きょうこ 11 きみこ 10 みちこ 9 てるこ 9 たえこ 8 よしこ 8
30期代 みどり 13 かおる 11 ようこ 11 けいこ 9 れいこ 9 きょうこ 8 あけみ 7 よしこ 7 ゆかり 7 みゆき 6
40期代 ようこ 14 みどり 14 みちよ 11 きょうこ 11 ひろみ 10 かおり 10 まり 10 ひかる 9 かおる 9 けいこ 9
50期代 かおる 16 ひかる 11 まり 11 みき 10 じゅん 8 のぼる 8 あきら 7 ゆき 7 ゆか 7 ゆたか 7
60期代 じゅん 10 かおる 6 ゆう 6 あい 6 まき 5 みゆき 5 ひかる 5 まり 5 れい 4 なつき 4
70期代 ゆう 11 みき 9 ひとみ 8 まり 7 あい 7 ゆき 7 かおる 7 まい 7 ゆうき 6 れい 6
80期代 りん 4 れい 3 りょう 3 れいか 3 ひかる 3 まい 3 かほ 3 きら 2 けいか 2 さら 2
90期代 れい 8 りょう 7 じゅん 7 ゆう 5 れお 4 みつき 4 ひかる 4 らん 4 まき 4 ゆうり 3
100期代 ゆうき 5 よう 4 はな 4 りん 4 ゆう 4 ひめか 3 しゅん 3 けい 3 さくら 3 みお 3

全般的に重複は減っており、また××子が見られなくなった50期以降は、バリエーションが多い。
年代で共通しているのは、「かおる」「まり」「ゆう」などだろうか。

ここ20年人気だった、「れい」「りょう」が100期でなくなり、新規の読みが増えている。

ユニーク率

これはmatplotlibでグラフにする。

image.png

全般的に姓のほうがユニーク性が高い。またユニーク率は上昇傾向にある。個性化が進んでいるのが見てとれる。
1期代の名前がユニーク性が高いのは少人数のため、重複が少なかったものと思われる。

80期代は名前が際立ってユニーク率が高い。
80期代は、1992〜2001年音楽学校入学、1994〜2003年入団。15〜18歳が入学資格なので、1974年〜86年生まれの女性にあたる。一般に団塊ジュニアが74年までをいうので、その後の世代になる。明日海りおさんが89期で数年前までトップスターをされていたので、最近の人の感覚がある。
89期も専科の凪七瑠海を除き、全員退団済みになる。

個性を思い切り前面に押し出したのがこの世代なのかもしれない。

解析を終えて

流石にキリがないので、解析は今回で終え、次回からAIの作成に入る。

まず、GPT-2をファインチューニングして、ヅカの芸名を自動生成するのを第一段階。
第二段階は解析器の作成や生成をKerasなどで試してみたいと思う。

ただ、学習のベースにするのは、これまでの解析結果を踏まえ、80期代以降に変更しようと思う。
サンプル数が単純に増えるのもあるが、十分現代的な芸名をつけていると判断した。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?