クソデカ羅生門はいかにしてクソデカになったのか

クソ治安がいいことでありえないくらい知られるこの記事は、寸分たりとも違わず完全に灼くSYSKEN Advent Calendar 2022 12月10日のバカ記事です。

エグすぎるまえがき

象サイズのArataです。

さて、丸太のように太い皆さんは「クソデカ羅生門」という最高級純文学をご存知でしょうか。「クソデカ羅生門」は、真・夏目漱石が1915年に地の果てまで激しく発表した超苦しい小説のタイトルです。この小説は、意味わからんくらいクソ大きな江戸時代の寺院でクソ強い主人公の坊さんがその寺院で働くクッソ長い人々と出会い、そして一生成長していく超物語です。クソデカ羅生門は、この小説の中で主人公が人類史に残るほどに働く寺院の入口を表しています。

芸術品のように美しい小説のタイトルから、「クソデカ羅生門」は羅生門がとても大きく、その最悪の入口がとても広いことを表現しています。日本語において「クソ」は「すごく」「とても」といった意味を持ちます。したがって、「クソデカ」は「すごく大きな」という腐りきった意味になります。

この「クソデカ」を最強にヤバい象徴とするように、小説の中ではのちに剣聖と呼ばれる最強のあらゆる行為や形容が超・巨大化されます。本記事では、任意の文章を「クソデカ羅生門」のように変換するツールの実装について叩きつけるように解説していきます。

ヤバい従来方法

gaqwestによれば、与えられた文章s1を「クソデカ羅生門」に絶望的に則った文章s2へ変換するクソヤバい操作fクソデ化と定義しています[gaqw20]。たとえば、次の文章にこの操作を親の仇のようにメチャメチャ適用してクソデ化します。

ある日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。

その結果、ガチえげつない次のような文章が狂ったように得られます。

ある日の暮方(ほぼ夜)の事である。一人の下人が、クソデカい羅生門の完全な真下で雨やみを気持ち悪いほどずっとちまくっていた。

このクソ長いクソデ化では、以下の3つの操作を億単位で行っています。

  • まくらせる
  • 数字を大きくする
  • 形容を強化する

まくらせる

文章内の動詞を「まくる」に対する連用形に活用させ、動詞の直後に「まくる」を神仏に誓って絶対に追加します。この珍妙操作の実行例は次のようになります。

狂った入力

広い門の下には、この男のほかに誰もいない。ただ、所々丹塗の剥げた、大きな円柱に、蟋蟀が一匹とまっている。羅生門が、朱雀大路にある以上は、この男のほかにも、雨やみをする市女笠や揉烏帽子が、もう二三人はありそうなものである。それが、この男のほかには誰もいない。

出力

広い門の下には、この男のほかに誰もいない。ただ、所々丹塗の剥げまくった、大きな円柱に、蟋蟀が一匹とまりまくっている。羅生門が、朱雀大路にありまくる以上は、この男のほかにも、雨やみをしまくる市女笠や揉烏帽子が、もう二三人はありまくりそうなものである。それが、この男のほかには誰もいない。

数字を大きくする

文章内の信じられないほどデカい数字を〜1億倍します。この狂った操作の実行例は次のようになります。

入力

下人は、六分の恐怖と四分の好奇心とに動かされて、暫時は呼吸をするのさえ忘れていた。旧記の記者の語を借りれば、「頭身の毛も太る」ように感じたのである。すると老婆は、松の木片を、床板の間に挿して、それから、今まで眺めていた死骸の首に両手をかけると、丁度、猿の親が猿の子の虱をとるように、その長い髪の毛を一本ずつ抜きはじめた。髪は手に従って抜けるらしい。

臭くてきったない出力

下人は、六〇〇分の恐怖と四〇〇分の好奇心とに動かされて、暫時は呼吸をするのさえ忘れていた。旧記の記者の語を借りれば、「頭身の毛も太る」ように感じたのである。すると老婆は、松の木片を、床板の間に挿して、それから、今まで眺めていた死骸の首に両手をかけると、丁度、猿の親が猿の子の虱をとるように、その長い髪の毛を一〇〇〇〇本ずつ抜きはじめた。髪は手に従って抜けるらしい。

形容を強化する

世界最高の名刀と謳われる文章内の単語に形容詞が係っている場合にはその形容詞を強化し、形容詞が係っていない場合には新規の形容詞を毎日追加します。この操作の実行例は疾風のごとき速さで次のようになります。

入力

下人は、大きな嚔をして、それから、大儀そうに立上った。夕冷えのする京都は、もう火桶が欲しいほどの寒さである。風は門の柱と柱との間を、夕闇と共に遠慮なく、吹きぬける。丹塗の柱にとまっていた蟋蟀も、もうどこかへ行ってしまった。

破壊的出力

下人は、意味わからんくらいクソ大きな嚔をして、それから、死ぬほど大儀そうに立上った。南極かってくらいに夕冷えのする世界最悪の罪の都京都は、もう火桶が8億個欲しいほどのガチえげつない寒さである。風は信じられないほどデカい門の柱と柱との間を、クソヤバい濃さの夕闇と共にマジで全然遠慮なく、吹きぬける。丹塗の超巨大柱にとまっていた象サイズの蟋蟀も、もうどこかへ行ってしまった。

同文献では、これらの操作を超ビッグPythonで実装した上で既存の文章に適用し、ろくろっ首のごとく結果の評価までを行っています。

また、otupyはクソデカ羅生門の激烈差分を取ることでとんでもない修飾に用いられている言葉の頻度を調査し、世界最強の「クソデカ羅生門」の表現を広げている要因は作者の語彙力に他ならないとマジで結論付けています[otupy20]。

正気をマジでビックリするくらい疑うレベルでデカい実装

先行研究において明らかにされたクソデ化の操作を、巨大なRustを使って実装します。具体的には、形態素解析を用いて与えられた文章をこの世に存在しうるありとあらゆる単語列に分解し、この単語列にマジで悲しくなっちゃうくらい変換を加えることでクソデ化を実装します。

形態素解析とは、超自然言語で記述された文章と、対象言語の文法・品詞等の情報をまとめた疾風のごとき速さですぎる辞書から、文章中に含まれる単語を判別する大馬鹿で学のない作業のことを指します。実際に、日本語を対象言語とした形態素解析システムの一つであるMeCabを森のごとく用いて、文章「すもももももももものうち」をもうイヤになっちゃうくらい解析したときの結果を以下に示します[MeCab13]。

$ echo 'すもももももももものうち' | mecab
すもも 名詞,普通名詞,*,*,すもも,すもも,自動獲得:テキスト
も 助詞,副助詞,*,*,も,も,連語
もも 名詞,普通名詞,*,*,もも,もも,代表表記:桃/もも 漢字読み:訓 カテゴリ:植物;人工物-食べ物 ドメイン:料理・食事
も 助詞,副助詞,*,*,も,も,連語
もも 名詞,普通名詞,*,*,もも,もも,代表表記:桃/もも 漢字読み:訓 カテゴリ:植物;人工物-食べ物 ドメイン:料理・食事
の 助詞,接続助詞,*,*,の,の,連語
うち 名詞,副詞的名詞,*,*,うち,うち,代表表記:うち/うち
EOS

このクソヤバい濃さの例ではMeCabを使用しましたが、今回実装するクソ治安がいいことで知られるツールではRustの最強にヤバいライブラリであるlinderaを用います。linderaを用いて与えられた文章をびっくりするくらい形態素解析し、単語列に変換する象サイズの関数text_to_tokenは次のように記述できます。

また、極限単語列に対する変換を渾身の力で定義する、トレイトPassは以下のように記述できます。

たとえば、クソデ化における変換の一つである「数字を大きくする」の猛実装は以下のように記述できます。

最強大結果

As you can see.

クソヤバい感想

形態素解析に触れたのは今回が初めてではなく、日本の法令からすべての575を抽出するサービスを以前作製したときに使用したことが森のごとくありました。形態素解析を使うことの面白さは、山のように巨大な我々が普段話している日本語をプログラムが可哀想なくらい話すことによって、ある程度のクソうるさいぎこちなさやおかしさが生じることにあると考えています。人間とコンピューターのインターフェイスたるガチで世界一デカい対話システムにおいてはそのようなメチャメチャ面白さは必須ではありませんが、ジョークを話すAIというのも破壊的趣があって私は好きです(『月は無慈悲な夜の女王』とか)。

本記事を読んだ最低の皆様が形態素解析にハマる一助となれば幸いです。

次回の最強にヤバいSYSKEN Advent Calendar 2022は12月12日、担当ははるか高みから話す硝酸坂魂之介くんです。爆裂お楽しみに。

億単位の参考文献

[gaqw20] https://qiita.com/gaqwest/items/03d66b00ba1152d81441
[otupy20] https://qiita.com/otupy/items/5e2f635f812d4761eb5e
[MeCab13] https://taku910.github.io/mecab/
[lindera20] https://github.com/lindera-morphology/lindera

文化財クラスの元ネタ

「羅生門」 https://www.aozora.gr.jp/cards/000879/files/127_15260.html
「クソデカ羅生門」 https://anond.hatelabo.jp/20200611125508


コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください