読者です 読者をやめる 読者になる 読者になる

生き抜くぜ21世紀

統計?機械学習?っぽいことを書く

姓名分割プログラムをつくる-アイマスで試してみた編-

前回前々回と姓名分割プログラムのアルゴリズムを紹介してきました。

ここでいう姓名分割とは、苗字と名前の間にスペースが入っていないフルネーム(例:篠田麻里子
にスペースを適切な位置に挿入することをいいます。(例:篠田 麻里子)

今回は具体的にどんな感じで姓名を分けることができているのかについての記事です。
いわゆるテストデータを使って精度を検証してみよう!というやつです。
大体思いつく人名は全部学習に使用してしまったので二次元の人名で確かめてみようとおもいます。
最初に断っておくのですが、私はアイマスについて全然詳しくないので知らず知らずのうちになんか地雷を踏んでいたらすみません。。

使用データ

下記サイトより取得したアイマスのアイドル名174人分
(※全てカタカナで構成された名前は除いてある)
アイドル一覧 -アイマス デレステ攻略まとめwiki【アイドルマスター シンデレラガールズ スターライトステージ】 - Gamerch

検証方法

自作コンソールアプリを用いて検証をする

1)アプリを立ち上げる
f:id:rskmoi:20170129155210p:plain

2)accuracyコマンドを打って、ファイルパスを入力する
f:id:rskmoi:20170129155225p:plain

3)終わり
f:id:rskmoi:20170129155245p:plain

っというわけでこんなにも簡単に0.989の正解率で姓名を分けることができました。
それでは中身を見ていきます。

検証結果

間違えちゃったやつ

下記の二名を間違えています。

false,伊集 院惠
false,鷹富 士茄子
伊集院惠さん

「集」と「院」の漢字データが存在していませんでした。
(約35000人の人名データの中で9回以下の出現だったということ)
まあ4文字の名前の真ん中2つがNoDataだったらこうなる、ということでもっと頑張ってデータ増やさなきゃいけないですね。

鷹富士茄子さん

これは非常にむずかしいですね。
データにない漢字は「茄」だけだったのですが、

  • 「富」が苗字の最後に来る確率
  • 「士」が名前の最初に来る確率

の2つがかなり高く間違えてしまいました。
このアルゴリズムではどんなにデータを増やしても間違えてしまいます。
漢字同士の相性の良さをスコアに入れればいけるかもしれませんが(「富」と「士」は同じ側に分けられることが多い、「士」と「子」は反対側に分けられることが多いなど)、
現状1次元とか2次元で評価してるのでもうそういう情報を入れちゃうと別のシステムという感じになってしまいます。。

というわけで、この2人のファンの皆さま、大変申し訳ございませんでした。

上手くいったやつ

172人分を載せるのもあれなのでアピールしたいものを8人分載せますね

true,木村 夏樹
true,喜多 日菜子
true,喜多見 柚
true,南条 光
true,柳 清良
true,三村 かな子
true,一ノ瀬 志希
true,楊 菲菲
木村夏樹さん

一番ありふれた2文字&2文字の名前です。

喜多日菜子さん、喜多見柚さん

喜多までは同一ですが、そのあとの漢字によりうまく分割できています。
特に喜多見柚さんは3文字&1文字という難易度の高い分割方法ですがうまく分かれてくれました。

南条光さん、柳清良さん

パッと見では人間でも判断がつきづらい3文字フルネームも、うまく分けてくれています。

三村かな子さん、一ノ瀬志希さん

じつはカナ(かな)混じりの名前はちょっと処理が難しくて、漢字→カナ(かな)に変わった場所が姓名の区切れ目でいいじゃないかとおもったら一ノ瀬さんの「ノ」はカタカナなんですね。
ということでそういうところをうまく避けつつカナ(かな)混じりでもうまく分割できましたというアピールです。

楊菲菲さん

これは懺悔で紹介します。じつは「楊」も「菲」も漢字データには存在しておらず、このプログラムでは回答が出せません。
回答が出せなくなったら1文字目で区切ってとりあえず出力するという仕様がたまたまハマっただけなので、この結果は機械学習でも統計でもなんでもないことをあらかじめお詫び申し上げます。

まとめ

とまあこんな感じで遊べるプログラムができたわけです。
精度もまあまあいいし使いたくなってきた人が百万人くらいいることでしょう。このブログの総アクセス数は今現在100行ってないですが。
来週をめどに完成させて公開したいと思っています。
それでは。