ニューラルネットを使ったキャラ名自動生成

今回は久々? に技術ネタっぽいものを書きます。

7月30日に第三回ゲーム制作勉強会(通称ゲ制会)というものがありまして、
そこでっKさんが「キャラクター名の自動生成について」興味深い発表をされていました。

これを聞いて、「ニューラルネット使ってもできそうだな」と思ったので、
自分でも実装してみました。

使用したモデルは二層のLSTMです。
LSTMが何かというとこの記事がわかりやすいです。

http://qiita.com/KojiOhki/items/89cd7b69a8a6239d67ca

まあ何をやっているかを一言でいうと、
単語を数値ベクトルに対応させて非線形演算をし、次の単語が上手く予測できるように、
演算時のパラメータを修正していく、ということです。

要するに「これまでの単語を見て、次の単語の予測を数値計算でやる」ということですね。
今、「単語」と言いましたが、今回は文字ベースで学習しているので
「これまでの文字から次の文字を予測する」モデルを作っていることになります。

学習データには批評空間のキャラ名データ約71000人分を使いました。

自動生成された名前を以下に列挙してみます。

如月 舞
芙蓉院洋子
亀沢由菜
健樹忠月
英 宗栗
蘇 葉子
音無 楓
藤川 理月
加納 茉莉奈
仲越 鏡子
柏木 朋未
白川 愛
石崎 沙希
小倉 ひなみ
柊 夏野
内野 菜美恵
胡桃院 紅葉
御門 夕陽
高住 誠一
三沢 真澄
織田 良子
高柳 希桜
浅倉 こより

何か結構良くない????

胡桃院 紅葉(くるみいん もみじ)

とかラノベヒロインにいそうじゃないですか。
因みに読み方は出力してくれないので、人間が頑張って読むしかありません。
ちなみに上記の名前は実際には存在しないキャラ名の(はず)です。
試しに検索してみてください。
女の名前ばかりなのは学習に使ったデータがそういうのばかりだからです。

ただ、どういう系統の名前なのか、漠然としているので、もうちょっと区分けできると良さそうですよね。
中華名とか外国名とか男名とか女名とか。
しかし、人間が教師データを作って学習させるのも面倒くさい。

「というか、言語モデル作った時点でLSTMの最後の隠れ層が名前の分散表現になっているんだから、それをKMeansかなんかでクラスタリングして、上手く別れてくれればそれで御の字では?」

と思ったので、やってみましたクラスタリング。
因みに以下でクラスタリングしたのは、自動生成された名前じゃなくて、批評空間にあったデータベースから取得したものです。

できたのがカタカナ名が並んだクラスタと
スクリーンショット 2016-08-02 20.38.32

ひらがな混じりの名前のクラスタと
スクリーンショット 2016-08-02 20.38.57

漢字ばかりの名前のクラスタ
スクリーンショット 2016-08-02 20.40.53

まあ、ここまでは普通じゃないですか?
そうだよねー、っていうかそれくらいルールベースでもクラスタリングできるよねー。
っていう感じで。

でも驚いたのが次のクラスタで、

スクリーンショット 2016-08-02 20.43.28
男キャラの名前っぽいクラスタが!!!
何故こんなことが起きる!!??
機械にはどれが男の名前かなんて全く教えてないのに……。
男名だけのかたまりを勝手に作ってしまった。
しかも、それぞれ全然違う名前だ。

人間で言うと、
「貴方がインドに行ってインド人のみの名簿を見て、どれが男でどれが女か当ててください」
と言われているようなもの。
それが何故かできている。
すごい。

もし、「そんな結果は当たり前だよ。〜いう風に説明できるよ」
という方がいらっしゃれば教えて欲しい。

後はモブキャラっぽいクラスタ。
こっちはちょっとミス判定も多い。
スクリーンショット 2016-08-02 20.42.35

これも結構謎い。
何故こんなクラスタが作られてしまうのか。

次にやることとしては、
1.キャラの属性(性別、国籍)とかに応じてキャラ名を生成してくれる仕組みを作る。
2.キャラの画像をアップロードしたら、キャラ名を提案してくれるbotを作る。(こっちはちょっと大変そう)
  2.の方法としては、CNNーLSTMのEncoderDecoderモデルが考えられるけど、学習データを集めるのが大変そう。
  でもやってみたい。

最後に自動生成されたキャラ名を列挙しておきます。
興味があれば眺めてみてくだちい。
ちなみに「良いのだけ取ってきた」とかは一切していません。

日向 小星
益薙 未央
御川 初音
霧野 真太
村野 朱香
美咲 光美
巳乃 ピヤ
月丘 崎葵
三雲 雅
ジャスティ・M・ファイキング
尾上ドリス
アリス・オクソリー
クレア
優子
デク・クレート
フィアナ
プリンハイナ
ラクロ
ウィルヴィズト
坂上 理花
鷹見 凛
マレーケ・ファー・オスキーラ
森葉 月花
ジゼイン
シャック=・ネリエンス
シャンリリ・アルランネ
御門 菜緒絵
入琉 咲雪
小笠原 命
上杉 霧江
里堂 恭子
井上 瞬
セルシア・ヒクラーナ
オルヴァイゼネス
有瀬 なつみ
香月 ことり
伏間 望子
野々村 梓
吾妻 こなみ
小河内 ひかり
ムサランル
リーゼロッテ・オーランゲ
春日 拓也
桐宮 弥生
幸代 四安理
久雅
ブラン
オレン
近衛 京夏
リネッタ
ミルク=ウィンリット
瑠璃
紅葉
涼風 希亜花
小鳥遊 ちやた

月島 伊織
御剣 恭子
日高 美藤
沢野 みひる
秋月 有紀
吉香 涼香
大山 鈴
こなた
坂上 直々
塚原 奏
天人寺 高耶
メアリ・サリス
杉本 知江
風間 春夏
藤原 秋晶
西條 八芽子
春日 優美
古式 奈緒
高矢 なつみ
天王寺 桜
渡瀬 悠斗
豊原 加奈子
高峰 加奈子
柊 亮美
仲島 真琴
中条 真緒
フィロウ
みつ
μ
迫鳥 由里子
紗絵
熊谷 さつき
モン=アトラメット・エルベット
レミラ=ウェルゲン
大久保 水浦
梅沢 奈々
桜庭 小百合
NA-いの美
瀬川 音羽
ノクラ
津崎 りんこ
草訪 南久
瀬々木 えみる
倫子 フォン
小鳥遊 夏実
百瀬 瑞姫
シェナ・スフレイド
希世 小夜子
都築 高雄
渡来兵士
末磨 二海
ノノエル・スタシア
ダイディナ・サーシュ
フォーコック・ガヴァック
ランクリー・マリーナ
シャン・エロン=アーシャ
シーシャ・ウンディ
ストラエル・メリア
セシルベ
ルイエル・カレット
天野 夏音
瀬戸川 王子
深海 優
ちさよ
羽N院 すずな
リル子クリス
ショート
勇者
原澤 士郎
井上田 ヘリ
凰瀬 高嶺
池永 葵
東雲 龍菜
香藤 直也
八雲 妙花
岡崎 づるみ
松山 梨乃
沢渡 薫子
加藤 千鶴
渡良瀬 恭子
麻生 真菜
高坂 優希
二之宮 まち
内庄 みるな
相坂 真まな
霧島 瑠璃
雪亜
奈々子
日向 壬恵
日向 愛
シスター響
稲葉
藍山 太郎
巴 円
沢見 ころみ
霧島 絵里子
一条 恵美羽
猫岡 凛
水無月 葉月
爵如女
沙瀬梨亜
湯越 由香里
麻生 かのり
双葉 未来
日向 杏奈
刈居 美優

園崎 有紀
不沙 沙耶香
田宮 菜々子
ん津真希
杉良瀬 雛乃
佐山 ありさ
水無月 希
桃島 進
山県 ゐ之介
日向 麗
心田 真江
宝生院 東征
池切 直也
椎名 天音
高藤 志保
伊集院 湖里
陶隠美瀬
シィーシャ・ヒスミー
錦木 男子
うらいの少女
ルスカット・マージャン
イディザーヌ・ルーシア
ノース・H・マーク
ディア・ラキオミ
ナレーサー・グリヒヒライド
ケクヴァイア
・モスティカ
アンイ
高神 まどか
母音
岡崎沙智
北條沙耶
美佐原咲
高山舞
狩野奈々子
早川奈緒
南郷水穂
綾瀬若葉
佐原亜樹
丘野みどり
御影冴乃

十十夜鈴音
水瀬まなみ
清瀬星
イシュトリード
羽柴ゆい
森本 千夏
邪斎
宙務員
翠河千草
ジャッナ・フカーリス・フォン・ベーライン
メリエッタ・フェリーナ
和泉希
アウェル・ブルンスタルズ

きお
クヤ
響利花
紅未南奈
市原美都
八神一莉
桂木みゆき
一ノ瀬さつき
菜月 誠一郎
まなみ
栢田
リエッタ
レイラ=メルベリール・フランスミル
セシエロ・コーネート
オネラ・ニュール=シリュウス
カッサ・ユリファ
ショマル
ロリア
るら
上原 未散
乾 玲
千衛星智子
望月唯
山県百瀬恵
ナブリ
シルヴィア
レミエント
リリラス
ユミ
メイリー
エルター
神崎 結美
スゲレッタ
甲斐翔子
児玉朔空

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>