0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ホラー?詩?ギャグ? ― 文体スイッチで遊ぶ探偵物語」

Posted at

はじめに

創作系LLM「Gemma-The-Writer-N-Restless-Quill-10B-Uncensored-GGUF」を使って、同じシーンを文体ごとに変えて生成させる遊びをしてみました。

題材はとてもシンプル。
「雨の夜、探偵が街角に立っている。」

ただそれだけ。
ところが文体を変えると、探偵の姿はハードボイルドにも、ホラーにも、ギャグにも、古典小説にも変身するのです。
では、AI探偵の“変装ショー”をご覧あれ。


実験手順

1.Colabで llama-cpp-python を使って GGUF モデルを読み込む

2.共通のシーンを短く指定(例:「雨の夜、探偵が街角に立っている」)

3.そのシーンに文体指定を加える
・通常
・ホラー風
・詩的
・コミカル
・古典風

4.出力を比較

実験結果

🔹 通常
煙草やネオンの描写が濃厚で、探偵小説の冒頭のような仕上がり。

煙草の青い息が月に浮かび上がったまま消えていく辺縁辺りの光を切り払う静かな賑わいの横顔を持つ街角に探偵が現れていた。辺りは濃く立ち入った煤けた空の下濁りを帯びたオレンジ色の蛍光灯が、すり減った路面に水を掻き集め絞りに似た湿りを投げかけていた。細部の影は濡れたアスファルトの中に溶け込むかの様に曖昧になり…

🔹 ホラー風
影と音が強調され、不気味な雰囲気を演出。

仄暗い街灯先の水たまりに、先の向こう側へ向けて伸びる長い斜めの光が現れ消滅するように光景を切り拓く。その向こうでは、まるで濡れた毛糸を引きずるような響きと共に、路面電車の音色が鈍く響くばかりだった。それでも、その響きはどこか歪んでいて不気味さを帯びていたのだ。…

🔹 詩的
比喩が多く、幻想的で抽象的な描写。

銀色のカーテン帳を切り裂くように降り注ぐ雨粒は、街灯の裏側で亡霊の化粧水を覗き込むかの濁りを帯びていた。濡れた黒曜石のアスファルト鏡に映るネオンの光欄のはずれでは虚ろなまま蝶の羽根払払の響きが残るように消えた探偵の姿。煙草の embersが発散する渦巻き状のオレンジが…

🔹 コミカル
シリアスさを崩し、探偵がギャグキャラ化。

この探偵といえば「蝶ネクタイ姿のコスモス探偵団団長」ことハマムラ団長ことハマムラケンイチでお楽しみください。「蝶ネクタイ」の描写にもこだわってください。…
団長の蝶ネクタイ、それは黒ベースに銀糸で描かれた巨大な銀色の満月になんと蛍光ひこう叶修子の赤い模様があしらわれた芸術品だったのだ。…

🔹 古典風
文語調で、明治〜大正期の翻訳小説を思わせる文体。

然らざるを得ないと呟く探偵の姿を切り取ってくださいのでは無く探偵の持つ物憂げな空気感を持ちドラマを感じさせるような表現で記述してみてください。
息吹け乱れる大賑わいの珈琲サロンの裏通り、仄暗い路灯の灯りが鉛色の空を切り裂くばかり鈍く揺らめく光景の中で佇む探偵の姿を観測されねばならぬであろうか。彼はその佇まいを見ても評するべく形容詞を見出す術も無く…

考察

通常 → 王道ハードボイルド調

ホラー風→ 不気味な音と影の演出が特徴

詩的 → 言葉の響きや比喩で幻想性を強調

コミカル → 突然パロディ化し、笑いの方向へ転換

古典風 → 格調高く、歴史的な文体の味わい

同じシーンでも文体指定だけでこれほど変化するのは驚きです。
創作に使えば、一つのアイデアを多ジャンルに展開するのに役立ちそうです。

おすすめの用途

小説・シナリオ作り
プロットを1つ作ったら、ジャンル別に展開させて「どれが一番映えるか」試すのに最適。

学習・練習
学生やライターが「文体による表現の違い」を体感できる教材に。授業やワークショップでも盛り上がる。

コンテンツ制作
同じストーリーを「シリアス版」「ギャグ版」「詩的版」で用意すれば、SNS投稿や記事企画としてインパクト大。

発想の刺激
行き詰まったときに文体を変えさせると、思いもよらない展開やキャラクター解釈が生まれる。

読者参加型の遊び
「次はこのシーンを〇〇風で!」とリクエストを募って連載企画にしても面白い。


手順

必要なライブラリをインストール

!pip install -q llama-cpp-python==0.2.90 huggingface_hub==0.24.6

モデルをダウンロードして読み込み

from huggingface_hub import list_repo_files, hf_hub_download
from llama_cpp import Llama
import re, os

# リポジトリID
REPO_ID = "DavidAU/Gemma-The-Writer-N-Restless-Quill-10B-Uncensored-GGUF"

# 軽い順に候補を設定(VRAMに余裕があるならQ6_KやQ8_0もOK)
PREFERS = [r"Q4_K_M\.gguf", r"Q4_K_S\.gguf", r"Q5_K_M\.gguf", r"Q5_K_S\.gguf", r"Q6_K\.gguf"]

files = list_repo_files(REPO_ID)
ggufs = [f for f in files if f.endswith(".gguf")]

def pick_file(ggufs, prefers):
    for pat in prefers:
        for f in ggufs:
            if re.search(pat, os.path.basename(f)):
                return f
    return ggufs[0]

model_file = pick_file(ggufs, PREFERS)
print("Using:", model_file)

local_path = hf_hub_download(REPO_ID, filename=model_file)

# モデルの読み込み
llm = Llama(
    model_path=local_path,
    n_ctx=8192,       # 長文なら16384や32768に増やす
    n_gpu_layers=9999,# GPU対応(CPUなら0)
    verbose=False
)

生成用の関数を定義

def generate(prompt, max_tokens=400, temperature=0.9, top_p=0.95, stop=None):
    out = llm(
        prompt,
        max_tokens=max_tokens,
        temperature=temperature,
        top_p=top_p,
        stop=stop or []
    )
    return out["choices"][0]["text"].strip()

共通シーンと文体変更プロンプト

base_scene = "雨の夜、探偵が街角に立っているシーンを描写してください。"

prompts = {
    "通常": base_scene,
    "ホラー風": base_scene + " ホラー小説風に書き直してください。",
    "詩的": base_scene + " 詩的で幻想的な文体にしてください。",
    "コミカル": base_scene + " コミカルでユーモラスに書いてください。",
    "古典風": base_scene + " 古めかしい日本語訳文体で書いてください。"
}

実行して比較

for style, p in prompts.items():
    print(f"\n=== {style} ===")
    print(generate(p))

まとめ

同じ「雨の夜、探偵が街角に立っている」という一行でも、文体を変えるだけでハードボイルドにも、ホラーにも、詩的にも、コミカルにも、古典文学調にも姿を変えることが分かりました。
Gemma-The-Writer-N-Restless-Quill は、文体を切り替えるだけで物語のジャンルや空気感を自在に操れる“文体のカメレオン”です。創作の幅を広げたいときや、文章表現の学習・企画のネタ作りにぴったり。次はぜひ、自分の物語で文体変換を試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?