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

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

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

エラーが発生しました。

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

ブックマーク機能を使うにはログインしてください。
Pythonに「なろう系タイトルジェネレータ」を移植し、さらにいろんなツールを開発してみる物語  作者: 超プリン体
第二章 なろう系あらすじジェネレータを開発する
14/20

第二章 第四話 試作機を改良してみる

 みなさんこんにちはプリンです。なろう系あらすじジェネレータの章の、第四話です。


 第三話では、「御託ごたくはいらない! 動けばいい!」、という方針で、最終的に必要となるメモリ構造を、強引に人手で作成し、それを使って最終的にちゃんと動くのかの検証を行いました。


 第四話ではさらにそれを、より複雑なあらすじを生成できるものに、改造してみました。下の画像が、synopsis_baseあらすじのベースと、データ構造のツリーをいじった結果です。


挿絵(By みてみん)


 実行した結果が、下の画像になります。前回より少しだけですが、バラエティーに富んだものになっているのが、おわかりいただけるでしょうか。


挿絵(By みてみん)


 どうやったかというと、「誰」というのを、形容部分と本体部分に分離して、その組み合わせで「誰」を作れるようにしたんです。同様に「どこ」というのも、形容部分と本体部分に分離して、組み合わせで「どこ」を作れるようにしてあります。

 「いつ」というのも、形容部分と本体部分に分離しようとしてるんですけど、「いつ」を形容しているサンプルが、今回は見つからなかったので、未使用になっています。


 次に、前回やった、synopsis_baseあらすじのベースをいじって、より複雑なあらすじを生成させてみるというのを、今回もやってみます。そのために行った修正は、下の画像の部分です。

挿絵(By みてみん)

 

 結果は、下の画像のようになりました。結構複雑なあらすじも、作れるようになっています。内容的に、似たりよったりなものになっているのは、使ったサンプルが、私の書いた5つの小説だけなので、しょうがないですね(汗。私以外の人が作った小説もサンプルとして取り込んでいけば、結構面白いあらすじが、自動生成できるんじゃないでしょうか。

挿絵(By みてみん)



 今回はここまでです。今回作ったプログラムは、このあと添付します。結構ややこしいプログラムになっています。ご質問などありましたら感想欄でご質問いただければご説明いたします。


 なお次回は、①データを充実させる、②データの加工を簡単に出来るようにする、の2つのアプローチがありますが、どっちにするか決めかねています。また、③自動生成したあらすじを、AIに判定させてみる、というのも面白そうですが、残念ながら私はAIはまだ勉強不足でよくわかりません(汗。③はあまり期待せず、気長にお待ちください。


 では次回またお会いしましょう。




(今回作ったプログラム、ここから)


# -*- coding: utf-8 -*-


import random



#synopsis_base = "%いつTOP% %誰TOP%が %どこTOP%で %どうするTOP%"

synopsis_base = "%いつTOP% %誰TOP%が %誰TOP%とともに %どこTOP%で %どうするsubTOP% しかし、%どうするTOP%"


s_def=["%いつTOP%","%誰TOP%","%どこTOP%","%どうするsubTOP%","%どうするTOP%",

"%いつ形容%","%いつ%",

"%誰形容%","%誰%",

"%どこ形容%","%どこ%",

"%どうするsub%",

"%どうする%"]


s_start=[0,1,2,3,4,

5,6, #"%いつ形容%%いつ%"

9,16, #"%誰形容%%誰%"

24,26, #"%どこ形容%%どこ%"

32, #"%どうするsub%"

35 #"%どうする%"

]


s_num=[1,1,1,1,1,

1,3, #"%いつ形容%%いつ%"

7,8, #"%誰形容%%誰%"

2,6, #"%どこ形容%%どこ%"

3, #"%どうするsub%"

6 #"%どうする%"

]


s_str=[

"%いつ形容%%いつ%","%誰形容%%誰%","%どこ形容%%どこ%","%どうするsub%","%どうする%", #TOP(0,1,2,3,4)


"", #いつ形容(5)

"とある時代","時は未来","時は現代", #いつ(6,7,8)


"","かわいい", "マスターである", "トラブルを起こした", "機械の大群に殺された" , "引っ込み思案の", "幽霊としてよみがえった",#誰形容(9,10,11,12,13,14,15)

"ベレー帽の少女","社長","猫耳少女","男性","ニート主人公","主人公","少女","天才小説家", #誰(16,17,18,19,20,21,22,23)


"","格差が問題となった", #どこ形容(24,25)

"異世界","ゲーム内仮想世界","リアル世界","地球","過去世界","都会のある町", #どこ(26,27,28,29,30,31)


"牢獄に閉じ込められる","何らかのトラブルによって過去に飛ばされる","霊体となる",

#どうするsub(32,33,34)

"ギルドの問題を解決する","商人となってお店を開く","ラスボスを倒す","機械を乗っ取る","人類を勝利に導く","作家デビューを目指して頑張る"

#どうする(35,36,37,38,39,40)

]



for n in range(10):


c=0

syno = synopsis_base


for s in s_def:

flag_end=-1

while flag_end==-1:

if syno.find(s_def[c])!=-1:

rep_target= s_str[random.randint(s_start[c],s_start[c]+s_num[c]-1)]

syno=syno.replace(s_def[c],rep_target,1)

else:

flag_end=0

c=c+1

print(syno)

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

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

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

↑ページトップへ