表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
2/6

WordCloud/word2vecを用いた「小説家になろう」人気作品のテキストマイニング

 目をさますと、ニーナは既に起きていた。ノートPCに向かって何かを書いているようだ。


「おはよう」

 声をかけると、ニーナは少し驚いたような顔をして、ノートPCを閉じた。何か見られたら困るようなものでも読んでいたのだろうか?

 気にせず僕は作業を続けることにした。


 1時間ほど作業すると、ニーナがPCを覗き込み、声をかけてきた。

「うまくいったの?」


 僕はニヤリと笑った

「うまくいったよ」


 そういい、僕はターミナルで「ls -l」とコマンドを叩くと、画面にファイルを示す情報が表示された

「255M 3 24 22:09 narou_text.txt」


「これがサイトの人気約50作品をスクレイピングしたテキストデータだ。225Mだから255メガバイトだね」

「225メガバイト?」

「昨日、2バイトが日本語1文字って話をしただろう。1メガバイトが大体100万バイトだから、50万文字。全部が日本語ってわけじゃないから、ざっと1億文字ってところかな」

「1億文字!?」

 ニーナは目を丸くした

「そんなに集めてどうするの?」


「重要なのはここからさ、データを集めたら次は分析だ。データがどのような傾向にあるかを調べるんだ。そうすれば、自ずとどのような小説を書けば人気が出るのかわかるはずだ」

「どうやって分析するの?」


「WordCloudというPythonのライブラリを使うんだ。どんな単語がよく使われているのかを一目で可視化してくれるんだ。こんな感じにね」

 そういい、僕はFig.5の画像を表示した


挿絵(By みてみん)

 Fig.5 WordCloud


「あ、なんか出てきた」


「ふふ、凄いだろ。ちょっとノイズが多いけど、勇者だったり、冒険だったり、人間だったり、貴族だったり、エミリアだったり、馬車だったり、料理だったり、魔物だったりという特徴的なワードが出てきている」

「…つまり?」

「つまり…なんだ、魔物とか料理とか貴族とか、人間とかエミリアとか出して冒険する話を書けば人気でるってことだ!」

「…」

 ニーナは険しい顔をした

「でも具体的にどんな話を書くの?ていうかエミリアって誰?」

「…」


「ま、まあこれは小手調べみたいなもんだ!ここからが本番だ!」

 僕は、メガネをクイっと上に上げて話を続けた


「次に、Word2Vecを使う」

「ワードツーベク?」

「Wordは単語 2はto Vecはベクトル、単語をベクトルにするってことだね」

「ベクトル??」

「ベクトルっていうのは、なんというか、方向と強さを表す矢印みたいなものだ。こんなやつね」

 そういい、僕は Fig.6みたいな矢印を書く


挿絵(By みてみん)

 Fig.6 ベクトルのイメージ


「言葉を一定の法則にしたがって、こういった方向と強さを持った矢印に変換しちゃうのさ。矢印に変換することで、言葉同士の相関関係を知ることができる」

「相関関係」


「そう。つまり例えば2つの単語の矢印が、こんな感じに似た方向を示していたとする」

 そういい、僕はFig.7のような2つの矢印を書いた


挿絵(By みてみん)

 Fig.7 近い関係のベクトル


「この場合、2つの単語は非常に近い関係にある」


「でもこんな感じに、全然違う方向を向いていたら」

 そういい、今度はFig.8のような矢印を書く


挿絵(By みてみん)

 Fig.8 遠い関係のベクトル


「全然関係ないってことになる」


「この、似ている似ていないを判断する指標をcosコサイン類似度という」

「コサインるいじど?」

「そう、三角関数のサイン、コサイン、タンジェントのコサインだ。高校でならっただろう?2つのベクトルから生成される三角形のコサインを考えるのさ、数式的には以下だね」

 そういい、僕はFig.9 を書いた


挿絵(By みてみん)

 Fig.9 コサイン


 つまり、コサインは0度のときに一番大きい値、すなわち1を示して、90度(直角)になると一番小さい値、すなわち0になるってわけ」

「…」

 ニーナは考え込んでいるようだった


「まあとにかく、こうやって言葉の関係を調べることができるってわけさ。ちなみに、本来単語は非常に高い次元、今回だと300次元のベクトルになるから、こんなに簡単には図示できないんだけど、主成分分析を使って次元を削減することで、2次元平面にこの言葉の関係を投影することができる」

「しゅせいぶんぶんせき?じげんさくげん?次元大介?」

「えっと、主成分分析の話は複雑になるから今度にしようか、つまりはこういうことさ」

 僕は、画像ファイルFig.10を表示した。


挿絵(By みてみん)

 Fig.10 Word2Vec 1


「そう、エミリアはエミリア・シルバリオンのことだったんだ!」

「エミリア・シルバリオン…」


「ほ、他にも色々わかったぞ例えばこれを見てくれ」


 そういい、僕は Fig.11 、 Fig. 12をニーナに見せた


挿絵(By みてみん)

 Fig.11 Word2Vec 2


挿絵(By みてみん)

 Fig.12 Word2Vec 3



「えっと、とりあえず言葉の関係は分かったんだけど…これでどうやって小説を書くの?」

「そ、それは…」


「今から考える!」


 そういい、僕はPCを前に考え込んだ。ニーナは呆れた顔をしていたが、しばらくすると隣の部屋へ移動して寝てしまったようだ。


Edited by 269

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ