第2話 方法
さて,「すべての作品からランダムに選ぶ」からには,
「すべての作品が同じ確率で選ばれる」
ことが最重要になります.
カクヨムには,高度な検索機能[2] があるので,検索条件をでたらめに設定して絞り込みを行う,ということを思いつきました.
冒頭の検索ページ(https://www.tonyu.jp/krs)は,プログラムで検索条件を適当に生成して,その検索結果に移動するリンクを生成する,という至ってシンプルな作りです.
ただ,ちょっと注意が必要です.
まず,検索機能は検索結果を20件おきにページに分けて表示します.次のページなどはあまり見られない傾向にあるので,なるべく1ページにすべての検索結果が表示される,つまり,検索結果を20件以内に収めることが望ましいです.
そこで,今回作った検索ページでは,「ジャンル」「星の数」「文字数」「公開日」という4つの条件を組み合わせて絞り込むことで,おおむね20件程度の検索結果になるような検索条件を生成しています.
そして,これらの絞り込みの結果,すべての作品が当確率で選ばれるようにする必要があります.
例えば,ジャンルを設定して検索するときに,全部のジャンルを等しい確率で検索条件に設定してしまうと,選ばれる作品の確率が偏ってしまいます.
ここで,第1話に出てきた「カクヨム統計」さんにめっちゃ世話になります.ジャンルごとの作品数を集計していただいていました.
(11月19日時点)
異世界ファンタジー 46,694件 (17.6%)
現代ドラマ 41,471件 (15.6%)
現代ファンタジー 32,128件 (12.1%)
恋愛 31,422件 (11.8%)
詩・童話・その他 29,905件 (11.3%)
SF 18,906件 (7.1%)
ラブコメ 18,605件 (7%)
エッセイ・ノンフィクション 14,660件 (5.5%)
ホラー 12,975件 (4.9%)
ミステリー 7,212件 (2.7%)
歴史・時代・伝奇 5,536件 (2.1%)
二次創作 3,401件 (1.3%)
創作論・評論 2,853件 (1.1%)
計 265768件
例えば,異世界ファンタジーの件数はミステリーの6倍くらいある,ということになります.検索条件として,異世界ファンタジーとミステリーを等確率で設定してしまうと,どうなるでしょうか.あなたが異世界ファンタジーを1作品書いたとして,あなたの知り合いがミステリーを1作品書いたとすると,知り合いのミステリーのほうが6倍選ばれやすくなる,という結果になってしまいます(つまり,異世界ファンタジーのほうが「倍率が高い」のです).
そこで,これらのジャンルの分布と同じ確率で,検索条件のジャンルが設定されるようにしました.例えば,異世界ファンタジーが設定される確率は17.6%,ミステリーが設定される確率は2.7%,という具合です.
「カクヨム統計」さんには「星の数の分布」「文字数の分布」「公開月別作品数」という統計もあります.これらの値ももちろん分布に偏りがあって,例えば,星の数の分布をみると,なんと,36%が「0個」で,「3個」までで50%を超えているのです.
そこで,これらの検索条件も「カクヨム統計」さんに提示されている分布に従って指定するようにしました.なお,文字数が5万文字以上の場合,星の分布が結構変わる(全体に比べると多くなる)ようなので,その場合だけ補正をかけています.
最後に,検索結果がおおむね20件になるように,「公開日」の幅を調整しています.たまに,検索結果が少ない条件だと,とんでもない範囲の日付がでますけど気にしないでください(なお,最古の作品公開日は2015年12月25日だそうです).
【2023年1月17日追記】カクヨム統計さんには1年前くらいからつながらなくなり,2022年の公開作品数が不明になってしまいましたが,とりあえず「月1万作品は新規公開されている」という見積りのもと,検索条件の「公開開始日」に2022年が含まれるようにしました.
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます