スクレイピングによる「なろう小説」のデータセット収集
朝、目が覚めると異世界であった。
なんで僕が異世界にいるのかはよくわからない。実は異世界に来たときのショックが原因なのか記憶が曖昧なのだ。記憶が曖昧なのに、何故ここが異世界と分かるのかと言われると困るのだが、そう感じるのだから仕方ない。名前だけは覚えている「つむぐ」それが僕の名前だ。
数日間、暮らしてみて分かったこの異世界の特徴は、具体的には以下の通りだ
1. 丸く白いドーム形状の家が、数km四方の空間に数百棟ひしめいている
2. 家の中には、複数台のPCが設置されていて、それぞれのPCはインターネットに繋がる
3. このエリアでは「小説家になろう」という小説投稿サイトの評価に応じて身分が決まる
4. 家の中では、基本男女2人がペアとなり共同生活を行う
白いドーム形状の家だが、ドラゴンボールの家、というと伝わるだろうか、Fig.1 のような家だ。No.135というのがこの家の番号だ。ざっとみたところ、一番大きいナンバーは500だったので、この一帯に500棟のドーム型のハウスと1000人の人が暮らしていることになる(Fig.2 参照)
Fig.1 ドーム型のハウス
Fig.2 ドーム型のハウス群
そして、異世界なのに、PCが使えてインターネットに繋がるのが今風だ。OSも好きなものが選べる。とりあえず、Mac Bookを選んで一通りセットアップしておいた。なんでもシャワーが使える異世界もあるらしいので、インターネットが使えても何の不思議もないだろう。
また「小説家になろう」のポイント制度の件だが、これには参った。なにせ生まれてこのかた、小説など書いたことが無い。でもこの世界では「小説家になろう」のポイントが全てで、この世界の貨幣とも呼べるものなのだ。
それぞれのドーム型のハウスにはタッチパネルが備え付けられていて、ポイントごとに色々な物品を購入することができる。缶ビールは1ポイント。衣服は20ポイントといった要領だ。
なので、まだ一つも「なろう小説」(「小説家になろう」に投稿された小説の総称)を投稿していない僕は、初期装備のパンツ一丁である。家には、PC以外には何もない。今は比較的穏やかな季節だが、もしこの世界に冬があったら今後は大変だ。
なお、ベーシックインカムとして最低限の食料や着替え(替えのパンツ)は、自動的に支給されるが、気になるのは右の数字だ。最初は、それぞれ10あった数字が選択するたびにだんだん減っていく。これが0になったときのことはあまり想像したくない。
そして男女ペアだが、今目の前にいるのが僕のペアだ。残念ながらパンツ一丁ではなく、女性は薄手のシャツも支給されている。深刻な男女差別だ。名前は「ニーナ」というらしい。言葉数は少なく、まだ会話は少ないが、どうも彼女も異世界に来る前の記憶は曖昧なことは分かった。年齢は、僕よりだいぶ下、21歳くらいだろうか。そして可愛い。
ポイントは、ハウスごとの合算になるので、僕らは運命共同体ってわけだ。
僕は、Mac Bookを起動して、キーを叩き昨日の続きのプログラムを組み始めた。
「どうするの?」
ニーナが話しかけて来た。彼女にしては珍しいことだ
「どうするって?」
僕は、キーを叩きながら画面からは目を離さず答えた
「小説…」
僕は手を止めて彼女を見つめた。彼女も小説を書いたことは無いらしい。それはそうだ、小説を書いたことのある人間なんて1万人に1人くらいだろう。
「僕に考えがある」
僕は、メガネをクイっと持ち上げた。関係ないが、僕の視力は0.2だ
「考え?」
「そう、人工知能を使う」
「人工知能?」
ニーナは目を丸くした。僕はニヤリと不敵に微笑み、MacのEnterキーを「ターン!」と叩いた
「そう人工知能だ」
そういうと僕はニーナをじっと見つめた
「人工知能って…この世界に来る前にニュースとかで話題になってたAIってやつ?」
「正確にいうと、人工知能やAIという言葉に正確な定義は無いんだ。ただ、多いのが機械学習手法、つまりデータを使って、一定のルールをコンピュータが学習して、そのルールを元にデータを判断することができれば人工知能と呼ばれることが多いんだ」
「よく聞くディープラーニングってやつ?」
「ディープラーニングは、最近特に画像処理の分野で目覚ましい性能を発揮していることから、話題になることが多いけど、あくまで機械学習の1手法という位置づけなんだ、人工知能・機械学習・ディープラーニングの関係を簡単に絵にすると…うん、こんな感じかな」
そういうと、僕はMacのKeynoteを立ち上げ簡単な図(Fig.3)を書いた。
Fig.3 人工知能概略図
「ディープラーニングの凄いことろは、今まで人間が苦労して設計していた特徴量、特徴量っていうのは、画像の分類問題で言えば、いわゆる画像フィルタの係数なんだけど、その係数を自動で見つけることができるって点なんだ、図にするとこんな感じかな?分かる?」
そういうと、僕はKeynoteで、以下の図(Fig.4)を書いた。
Fig. 4 ディープラーニングの概略図
「えっと、凄さはなんとなく分かったんだけど、それが小説と何の関係があるの?」
「大ありのオオアリクイだよ」
僕は、メガネをクイっと上にあげた
「オオアリクイ…」
「小説というのは、文字の集まり。文字ってコンピュータ上だと、1Byte、すなわち8bitだね。8bitって分かるかな?1bitが0か1の2通り。2bitだと00・01・10・11と2の2乗の4パターンだね。だから8bitだと2の8乗で256パターンの情報が表せられる。アルファベットなら26文字だから、大文字・小文字に記号を合わせても1Byteあれば十分表現できるってわけ。日本語だとそれじゃ足りないから2Byte、即ち2の16乗で、えーっと幾つだ?」
「65536」
「あ、計算早いね。ひょっとしてそろばんやってた?そう、それだけの情報量で1文字が表現できる」
「すべてがFになる」
「えっ?…ああ、2の16乗だから16進数だと0xFFFFだね。よく知っているね、ひょっとして君、情報系の大学出身?」
僕は話を続けた
「要は文字もデータの集まりってことさ、そして大量のデータさえ集めれば、人工知能の技術が使える。最新の技術だと、集めたデータを元に新たなデータを生成することもできるんだ。GANってやつが有名だね」
ニーナはそっとつぶやいた
「ガンダム…」
「あとはデータだね」
「データ?」
「そう、元になるデータ。そのデータはここにある」
そういって、僕は「小説家になろう」のトップページを指差した。
「人気の作品を読んで一つ一つコピーしていくってこと?たしかにそれならできるかも」
ニーナの顔が明るくなった。
「そんなことしてたら、日がくれちゃうよ。今回はスクレイピングという技術を使う」
「スクレイピング?」
「要は、今ニーナがやろうとしていた、小説を開いてコピーしてという作業をコンピュータに自動でやらせる技術さ」
「そんなことできるの?」
「できる。難易度はサイトによるんだけど、小説家になろうは、小説を探すための専用のAPIも用意されているから、比較的スクレイピングしやすいサイトなんだ。そして、プログラムはついさっきできた」
そういうと、僕はニーナに画面を見せた
「これで、できるの?」
「多分ね。今回はPythonってプログラム言語を使っている」
「コルトパイソン357マグナム」
ニーナはボソッと呟いた。
「よし、これでOK。サーバに負荷をかけたらいけないから、少し時間を置いてクロールするようにした、明日の朝にはデータダウンロードできていると思うよ。今日はもう寝ようか」
「うん、ありがとう」
無表情なニーナが少し嬉しそうな顔をした。かわいい。今日は比較的長く話したし、少しは親密になれたかもしれない
「あ、寒い?こっちに来る?場所開いているけど」
そう言って、僕はふとんを開いてニーナを誘った
「お構いなく」
ニーナはそういうと、隣の部屋に行った。どうも親密になれたというのは僕の気のせいだったらしい
Editor ID: 269