さらば青春の光 コント半自動ジェネレータ

# ネタのクラス化・ボケのfstinrg化
お笑いをAIで生成する際にオブジェクト指向なアプローチを取っている人がいません。
男優型コントの作成にかかる作業を大幅に減らすプログラムのプロトタイプを書きました。
https://tarotoyota.pythonanywhere.com/type_saraba_html
頻繁にコードを更新中です。

```python
@dataclass
class Effort:
      effort: list#What kind of unusual efforts did actual experts in the field make in engaging in that field?
effort_j_actor=Effort(["モデルを演じるため増量・減量している", "モデルとなる職業・属性の人々を観察している", "脚本に関して要望・主張する", "モデルの生活・健康状態を模倣している"])

@dataclass
class Defect:
      defect: list
defect_j_script=Defect(["設定に無理がある", "設定に矛盾がある", "展開が早すぎる", "キャスティングがキャラクターに適していない", "ストーリーラインが予測可能すぎる", "ダイアログが自然でない","キャラクターの動機付けが乏しい","リアルでない"])
defect_j_actor =Defect(["演技が大げさすぎる", "感情の表現が乏しい", "キャラクターへの理解が不足", "台詞回しに自然さがない", "視覚的な演技（ボディランゲージなど）が不十分", "スクリーンプレゼンスが弱い", "役作りが浅い", "コミュニケーション能力が不足", "演技の範囲が狭い", "リアリズムが欠けている"])  
```
上記オブジェクトはほぼAIが瞬時に生成しました。
.effort, .defectのように、それ自体が面白さや異常さを持たない普通の情報をこの記事では<strong>"尋常オブジェクト"</strong>と呼びます。
(男優:さらば青春の光)は、
```python
x        = actor
x.effort = xをする上での努力
x.defect = xのクオリティの欠け方
x.hypoI  = xの下位概念のうち卑しい・劣っている・非一般的であるとされていること・もの
```
という、AIが簡単に推論できるオブジェクトから構成されています。
(画家:さらば青春の光), (手タレ:Aマッソ)なども似たような具合です。
ファイヤーサンダーさんも.effort, .defect, .suffer等を使用したネタを多くなさっています。
.hypoIの生成は下記のようにしました。

```python
@dataclass#'_j_' stands for 'Japanese language'. '_e_' stands for 'English language'.
class Hypo:#'S' stands for 'superior', 'I' stands for 'inferior'
      hypoS:list#Among the hyponyms of the hypernyms, those that tend to be the subject of movies and dramas.Among the hyponyms of the hypernym, those that are generally treated as superior.
      hypoI:list#Among the hyponyms of the hypernyms, those that are not the subject of movies or dramas.Among the hyponyms of the hypernym, those that are generally treated as inferior.

hypo_j_academics    =Hypo(["化学","数学","医学"]                            ,["ジェンダー学","美術史","国際コミュニケーション学"])
hypo_e_academics    =Hypo(["Astrophysics","Mathematics"]                    ,["Gender studies","Art history","communications"])
hypo_j_club_activity=Hypo(["野球部","サッカー部"]                           ,["茶道部","手芸部"])
hypo_e_club_activity=Hypo(["American football club","baseball club"]        ,["science club, debate club","stamp collecting club"])
hypo_j_written_works=Hypo(["文学","詩"]                                     ,["まいじつの記事","ホットミルクの煽り文","自己啓発本", "通販CMの台本"])
hypo_e_written_works=Hypo(["literature","poem"]                             ,["tabloid magazine literature", "porn magazine literature","self-help book", "infomercial scripts"])
hypo_j_actor        =Hypo(["俳優"]                                          ,["エキストラ","AV男優","ASMR声優","通販CMの役者","着ぐるみ役者","子供向け番組の役者"])
hypo_e_actor        =Hypo(["actor"]                                         ,["extra","porn actor","ASMR voice actor","infomercial actor","Children’s program actor"])
hypo_j_model        =Hypo(["ファッションモデル", "ランウェイモデル"]        ,["ヌードモデル", "手タレ", "下着モデル"])
hypo_e_model        =Hypo(["Fashion model", "Runway model"]                 ,["nude model", "hand model", "lingerie model"])
```
上記オブジェクトはほぼAIが瞬時に生成しました。
"まいじつの記事","ホットミルクの煽り文","tabloid magazine literature", "porn magazine literature"は私が入力したものです。"パーツモデル"という出力は"手タレ"に変更しました。"ジェンダー学"と"AV男優"は、倫理フィルターの影響か、生成させる事に失敗しました。

<strong>「x.hypoIの従事者がx.hypoSの尋常オブジェクトに関係している」という構造のネタを"男優型"と仮称します。</strong>

```python
#(sA, sB) は (Subject A, Subject B)の略.
#コメントアウトの尋常オブジェクトはそのほとんどがargz=actorとしてAIに生成させたもの。
,"sA は {argz.verbC} に携わっている."#演技
,"sA は {argz.persC} (である / を目指している / を自称している)."#俳優
,"sA は {argz.suffer} に悩んでいる." #メソッド演技法による役作りの精神的負担
,"sA は {argz.effort} ."#モデルを演じるため増量・減量している, モデルとなる職業・属性の人々を観察している, 脚本に関して要望・主張する, 
,"sA は {argz.obstinacy} ."#内容がベタである点を罵っている
,"sA は {argz.Ste_Vis} ."#マスクとサングラスをして変装している
,"sA は {argz.Ste_Act} ."#第三世界の孤児を養子にしている
,"sA は {argz.cliche} ." #監督と意見が合わずに衝突する
,"sA は {argz.persP, argz.platP} を比較対象として見ており, ライバル視し, 憧れ, 愛憎入り混じった感情を持っている."# ディカプリオ, アカデミー賞,
,"sA は {argz.r_p_co, argz.r_p_boss, argz.r_p_subordinate, argz.r_p_customer, argz.r_p_fan}, 他の{z_persC} について(称揚 / 罵倒 / 心配 / 自己卑下)する文脈で言及している."#共演者, 監督, マネージャ, 視聴者, ファン
,"sA は {argz.defect} について(自身 / 他者)に厳しい."#キャラクターへの理解が不足, 台詞回しに自然さがない
,"sA は {argz.hypoI} である." #AV男優, ASMR声優
```
私が見てきた男優型コントで使用されていた尋常オブジェクトはほとんど上記のとおりです。
(男優:さらば青春の光)で使用されている尋常オブジェクトは、ほとんどGPT4が同じものを生成できました。


# バラシ
```python
list1=[
"a1: sAはsBの(部下 / 同業者 / {argz.r_p_co} / {argz.r_p_subordinate})である. しつこくアドバイスを求めるsAに, sBはつっけんどんな対応を続ける. sAは, sBが熱心でない点をなじる."#(男優:さらば青春の光)
,"a2: sAはsBの(上司 / 同業者 / {argz.r_p_co} / {argz.r_p_boss})である. しつこく(アドバイス/激励)するsAに, sBはつっけんどんな対応を続ける. sAは, sBが熱心でない点をなじる."#(マネージャー:Aマッソ)
,"b1: sAはsBの(ファン / 信奉者 / {argz.r_p_customer} / {argz.r_p_fan})である. 自身が ﾛ を目指している旨述べ, しつこく(弟子入り / アドバイス)を求めるsAを, sBは不快がる."
,"b2: sAはsBの(ファン / 信奉者 / {argz.r_p_customer}, {argz.r_p_fan})である. sBが有名な ﾛ である旨騒ぎ立て, 歓喜し人を集めおおごとにしようとするsAを, sBは不快がる."
,"c1: sAはsBの(近親者 / 友人)である. sBは, sAの(嘆き / 自尊心からの発言 / 自分の活動による周囲への負担を軽視する発言)に つっけんどんな対応を続ける."#(画家:さらば青春の光), (依存症:さらば青春の光)
]
list2=[
"z1: sBが, sA が 従事しているのは {z_hypoI} である点指摘する."#('AVやねん':男優:さらば青春の光), ('手タレやねん':マネージャー:Aマッソ), ('ここぼったくりバーやぞ':バー:ライス, ファイヤーサンダー)"
,"z2: sBが, sA が 従事している {z_hypoI} をやめろという旨述べる."#('TOTO やめてよ':依存症:さらば青春の光)
,"y1: sBが, sB が 従事しているのは {z_hypoI} である点指摘する."
,"y2: sBが, sB が 従事している {z_hypoI} をやめたいという旨述べる"
,"x1: sAが {z_hypoI} のアウトプットを見せる."#(ボクシング:さらば青春の光)
,"w1: sBが, {z_hypoI} に関連する活動をやめるよう述べる."
,"v1: sB が, sA が {z_hypoI} をまだ一度もしていない点指摘する"#('まだ一枚も描いてへんやん':画家:さらば青春の光)
,"v2: sB が, sA が {z_hypoI} をまだ始めて間もない点指摘する."
]
```
自分が見た事のある[男優型コントのバラシ, 男優型コントにおける主体たちの関係性]をザっとfstringに書き出したものです。
list1については、"可能なパターン"がとんでもない種類あり、網羅する訳にはいきません。
しかし、ほとんどの男優型コントのバラシはlist2のいずれかと同じ形にならざるを得ないと思います。
# x.yを参照するボケ・ツッコミ
で、男優型コントでは、fstring的な（ボケ, ツッコミ）が多用されています。
<strong>fstring的なボケ・ツッコミというのは、x.hypoI が xの尋常オブジェクト に関係している点に言及するだけの文のことです。</strong>
"男優が女優と読み合わせしたい旨述べ、その必要がない旨監督が述べる."
"手タレのマネージャが情熱を持って色々と仕事をしている点に手タレが違和感を指摘する."
"バーテンダーの尋常ならざる努力に、その必要がない旨ぼったくりバーの所有者が述べる"
は
"sA の {argz.effort} に対し sB がその必要ない旨述べる."
とでも表記すればいい訳です。細かい言葉尻は人間が考えればいいです。

"非fstring的なボケ"とは、"汁俳優"とか"ひら、ひら、甲、ひら、甲、首"とかです。
このプログラムを使えば、男優型コントを作る作業のうち、非fstring的なボケを考える以外の作業がほとんど必要なくなります。

[ボケ, ツッコミ, 尋常オブジェクトへ言及する文]などを言葉尻として大量にstr型オブジェクトとして収録し、使用する[尋常オブジェクト, ボケ, ツッコミ, 尋常オブジェクトへ言及する文]を乱数で決定すれば完全自動化ができる訳ですが、私は実際に何かコンテンツを作っている人に向けてプログラムを公開しています。この場合必要なのはリロールボタンではなく、使用可能な全オブジェクトのリストでしょう。だから"半自動"ジェネレータな訳です。

AIに「面白いもの」を生成させようとしている人がたくさんいますが、私はAIに「面白くないもの」を生成させる事に集中しています。つまり尋常オブジェクトを生成させる以外でAIを使っていません。

2024/02/04追記
このプログラムをコパイロットとして漫画を描きました。
https://rookie.shonenjump.com/series/EmTZ65sdcZA
プログラムに収録しているfstring・尋常オブジェクトが増えるにつれ有用性は加速度的に増していきます。