とある三流プログラマーの覚書

機械学習、自然言語処理を中心にIT系の話題を書いていく予定です

ライトノベルの内容紹介をトピックモデルで解析

ライトノベルの内容紹介をトピックモデルで解析

はじめに

最近、機械学習とか自然言語処理に興味があります。

まずは、理論は置いといてライブラリで遊んでみようということで、 小説家になろうのランキングをトピックモデルで解析(gensim) を参考にgensimのトピックモデルでラノベの内容紹介を解析してみました。

トピックモデルというのは、対象の文書が何について書かれたものなのかを推定してくれるモデルらしいです。 内容紹介から、ラノベのジャンルや代表的な要素を抽出できたらいいなと思ってます。

方法

[ラノベの杜](http://ranobe-mori.net/) さんにラノベのisbnコード一覧があったので、このisbnコードをキーにAmazonの内容紹介を取得します。

1975年からあったけど、古いのはAmazonに内容紹介がなかったので、とりあえず1991年〜2015年分を解析します。

ソースコードは上記ブログのものを、ほとんどそのまま利用しました。

結果

内容紹介25年分全件からgensimのLDAでトピックを抽出しました。

トピック数はとりあえず50個にしました。

10個、20個、30個と試してみたけど、少ないと人間の直感とは合わない気がします。

結果の全件がこちら

0.057*生徒 + 0.024*会長 + 0.018*イベント + 0.013*水着 + 0.012*為
0.037*ポニーキャニオン + 0.028*花嫁 + 0.018*ライト + 0.015*勝負 + 0.014*ジーク
0.028*豪華 + 0.026*イラスト + 0.022*出版 + 0.021*太郎 + 0.018*社
0.029*GET + 0.028*太 + 0.023*隊 + 0.015*戦 + 0.014*隊長
0.034*蒼 + 0.027*歌 + 0.025*馬 + 0.015*引き + 0.015*条件
0.027*応募 + 0.026*キャンペーン + 0.024*付属 + 0.021*開催 + 0.018*あやかし
0.024*婚約 + 0.022*召喚 + 0.017*国王 + 0.016*結婚 + 0.015*騎士
0.037*コード + 0.036*獣 + 0.031*伯爵 + 0.026*ファンタジア + 0.022*シリアル
0.032*電撃 + 0.023*収録 + 0.020*編 + 0.018*キス + 0.017*シナリオ
0.123*勇者 + 0.031*魔王 + 0.026*妹 + 0.018*里 + 0.017*属性
0.024*樹 + 0.022*銀 + 0.015*紅 + 0.013*革命 + 0.013*リオン
0.047*君 + 0.032*道中 + 0.028*vs + 0.019*!》 + 0.016*右手
0.019*皇国 + 0.019*土地 + 0.018*武器 + 0.017*加速 + 0.016*――!?
0.028*エルフ + 0.025*吸血鬼 + 0.023*女神 + 0.019*転生 + 0.017*令嬢
0.036*探偵 + 0.030*殺人 + 0.022*連続 + 0.018*神社 + 0.017*寮
0.023*契約 + 0.013*対峙 + 0.013*人形 + 0.012*狩り + 0.011*ミッション
0.023*女の子 + 0.019*コメ + 0.016*生 + 0.014*子 + 0.012*ハーレム
0.028*版 + 0.027*周年 + 0.023*アニメ + 0.018*今年 + 0.014*本
0.065*魔王 + 0.035*帝国 + 0.018*同盟 + 0.018*理 + 0.017*軍
0.017*緋 + 0.013*お嬢様 + 0.013*執事 + 0.011*将 + 0.011*天然
0.031*祭 + 0.020*文化 + 0.019*リア + 0.013*郎 + 0.010*規模
0.058*王子 + 0.026*魔法 + 0.023*王女 + 0.019*様 + 0.017*イラスト
0.027*桜 + 0.016*残念 + 0.013*高校生 + 0.012*事故 + 0.012*修学旅行
0.036*学院 + 0.019*モテ + 0.018*黒幕 + 0.016*ゲーマー + 0.016*なみ
0.116*竜 + 0.023*霊 + 0.020*幻想 + 0.019*曲 + 0.019*華
0.030*悪魔 + 0.028*香 + 0.020*緒 + 0.020*満喫 + 0.019*薔薇
0.021*ミステリ + 0.021*千葉 + 0.020*京極 + 0.019*注目 + 0.019*埼玉
0.032*男子 + 0.021*結 + 0.020*零 + 0.017*ライフ + 0.016*銀賞
0.045*アリス + 0.031*カード + 0.021*百 + 0.019*魔界 + 0.016*枚
0.027*ダンジョン + 0.021*ぼく + 0.019*政治 + 0.015*紗 + 0.013*毬
0.025*組 + 0.025*先生 + 0.019*公式 + 0.019*by + 0.016*サイト
0.023*攻略 + 0.020*皇 + 0.016*宇宙 + 0.016*機 + 0.013*殺し
0.058*騎士 + 0.020*未来 + 0.019*聖 + 0.016*最強 + 0.016*人類
0.020*プレイヤー + 0.018*幽霊 + 0.015*ミステリー + 0.012*監視 + 0.011*日本
0.050*魔術 + 0.039*魔女 + 0.022*魔法 + 0.019*武 + 0.013*ドラゴン
0.072*魔法 + 0.038*村 + 0.027*感謝 + 0.017*珠 + 0.015*士
0.034*漫画 + 0.026*原作 + 0.024*愛 + 0.022*イケメン + 0.021*料理
0.036*葉 + 0.032*海賊 + 0.029*咲 + 0.020*祭り + 0.018*海
0.039*ライト + 0.030*悠 + 0.023*新人 + 0.017*導 + 0.014*花
0.020*夏 + 0.016*あなた + 0.016*春 + 0.015*菜 + 0.014*夫婦
0.031*雪 + 0.019*白 + 0.017*綾 + 0.015*魔神 + 0.013*空
0.038*達 + 0.032*島 + 0.027*精霊 + 0.022*天 + 0.016*使い
0.040*GA + 0.035*プレゼント + 0.020*奨励 + 0.014*司 + 0.014*気持ち
0.045*種類 + 0.028*迷宮 + 0.019*妖怪 + 0.016*怪異 + 0.014*憑
0.034*鬼 + 0.027*アプリ + 0.018*ログ + 0.017*紫 + 0.017*衣
0.034*神様 + 0.024*妹 + 0.021*族 + 0.019*法 + 0.014*日常
0.060*猫 + 0.030*堂 + 0.025*コン + 0.018*累計 + 0.017*宝石
0.032*貴族 + 0.028*城 + 0.026*豪華 + 0.022*章 + 0.017*執筆
0.055*応募 + 0.032*斗 + 0.031*説明 + 0.027*商品 + 0.026*表示
0.048*夫 + 0.031*アイドル + 0.027*天使 + 0.021*犬 + 0.017*マンガ

わかりやすいトピックとしては、このあたりでしょうか。

殺人事件と探偵のミステリ

0.036*探偵 + 0.030*殺人 + 0.022*連続 + 0.018*神社 + 0.017*寮

魔法とドラゴンが出てくるファンタジー

0.050*魔術 + 0.039*魔女 + 0.022*魔法 + 0.019*武 + 0.013*ドラゴン

中世風異世界の恋愛物

0.024*婚約 + 0.022*召喚 + 0.017*国王 + 0.016*結婚 + 0.015*騎士

プレゼントとかキャンペーンに応募みたいなのが、トピックとして抽出されてます。 このあたりは、前処理で取り除いておくべきものですね。

0.037*コード + 0.036*獣 + 0.031*伯爵 + 0.026*ファンタジア + 0.022*シリアル
0.028*豪華 + 0.026*イラスト + 0.022*出版 + 0.021*太郎 + 0.018*社
0.027*応募 + 0.026*キャンペーン + 0.024*付属 + 0.021*開催 + 0.018*あやかし
0.040*GA + 0.035*プレゼント + 0.020*奨励 + 0.014*司 + 0.014*気持ち

まとめ

gensimのLDAでそれっぽいトピックが抽出できた。

でも、人間にはよくわからないトピックも多数ある。

自然言語処理をやるならやはり前処理は大事。