本との偶然の出会いをWEB上でも

【6月19日は桜桃忌】プログラミングで蘇る太宰治

太宰治の誕生日であり、入水自殺の遺体が発見された日時でもある6月19日は「桜桃忌」と呼ばれる一大イベント。このタイミングに合わせ、プログラミング技術を駆使して太宰治の文体を再現する壮大なチャレンジに挑みます!

program-dazai3

6月19日は、太宰治ファンには最大のイベント、桜桃忌が行われます。

太宰治が生まれた日で、入水自殺した太宰の遺体が発見された日がまさに、6月19日。

毎年その日に、墓がある三鷹市・禅林寺で法要が行われ、全国の太宰ファンが集います。

太宰治は存命中に数多くの作品を残しましたが、太宰作品が好きな方の中には、そのほとんどをすでに読んでしまったという方もいると思います。もしかしたら日本中を探せば未発見原稿の1つや2つは見つけることができるかもしれませんが、それだって発見されてしまえば、すぐさまファンはそれらを消化してしまうでしょう。

本記事は、そんな太宰治欠乏症にかかってしまった方々に手を差し伸べるべく、プログラミングの技術を用いて太宰作品を再構成し、まったく新しい太宰作品を生み出すという壮大な試みです。

 

手法の検討

人間の手を使わずに小説を作成することは、とても難しいことです。プロット、キャラクター造形、文体、テーマ。小説は様々な要素によって成り立っています。それらを兼ね備えた文章をプログラムで生成することは、なかなかできそうにありません。

そこで今回は、それらの要素を一旦省き、太宰治らしい文章をどうにか力技で生み出すことのみに注目します。用いる手法として、文章の生成技法の一つであるカットアップを選びました。

カットアップとは、テキストを単語などの単位に分割してランダムに再構成することにより、偶然できたテキストを作品とする手法です(ウィリアム・S・バロウズが用いたことで有名です)。このようにして生まれたテキストは、文章を通しての意味は失っていることは多いですが、偶然の作用によってこれまでに世の中に存在しなかった単語の繋がりが発生し、絵画のコラージュ作品のような、はっと目を止まらせる作品を生み出すことがあります。

このような機械的な作業は、プログラムの得意とするもののひとつです。実際に太宰治『人間失格』のテキストにカットアップを適用し、新しいかたちの『人間失格』を生み出していくことにしましょう。

programd2

 

実装

今回、元にする文章は、以下の有名な『人間失格』のくだりになります。

 

第一の手記

 恥の多い生涯を送って来ました。

 自分には、人間の生活というものが、見当つかないのです。自分は東北の田舎に生れましたので、汽車をはじめて見たのは、よほど大きくなってからでした。自分は停車場のブリッジを、上って、降りて、そうしてそれが線路をまたぎ越えるために造られたものだという事には全然気づかず、ただそれは停車場の構内を外国の遊戯場みたいに、複雑に楽しく、ハイカラにするためにのみ、設備せられてあるものだとばかり思っていました。しかも、かなり永い間そう思っていたのです。ブリッジの上ったり降りたりは、自分にはむしろ、ずいぶん垢抜けのした遊戯で、それは鉄道のサーヴィスの中でも、最も気のきいたサーヴィスの一つだと思っていたのですが、のちにそれはただ旅客が線路をまたぎ越えるための頗る実利的な階段に過ぎないのを発見して、にわかに興が覚めました。

 

さて、この文章をプログラムで処理するにあたり、まず必要なものはなんなのでしょうか。日本語を処理する際に特有の問題として、「単語の区切り方」が明示的にわからないという点があります。まずはこの問題を解決するため、文章を単語毎に区切る処理(分かち書き)を上の例文に施していきます。

分かち書きによく用いられるツールのひとつに、MeCabというソフトウェアが挙げられます。MeCabはオープンソースのプログラムで、自由にダウンロードして使うことが出来ます。試しに、例文にMeCabを適用すると、

 

            接頭詞,数接続,*,*,*,*,第,ダイ,ダイ

            名詞,数,*,*,*,*,一,イチ,イチ

の            助詞,連体化,*,*,*,*,の,ノ,ノ

手記         名詞,サ変接続,*,*,*,*,手記,シュキ,シュキ

EOS

             記号,空白,*,*,*,*, , ,

            名詞,一般,*,*,*,*,恥,ハジ,ハジ

            助詞,格助詞,一般,*,*,*,の,ノ,ノ

(以下略)

 

このように、単語各々の切れ目を自動で半別し、分割することができます(EOSは文末を示します)。以後のプログラムでは、MeCabによって分割されたテキストを用いることとします。

それではカットアップの手法通り、ランダムにこれらの単語を並べかえてみましょう。

思っない自分という鉄道がそれ生涯ものは、いにした全然しかもというてのの。。ため来。の、は生活れしはつかきいは旅客線路みたいに楽しくと降りとにた線路だて、なブリッジ中そうに最もて発見の多いずいぶん設備なっ永いた一つ東北でをものある。(以下略)

 

……確かに、ランダムに単語を並び替えることができました。しかしいくらカットアップの手法を用いたとはいえ、これを日本語として読み取ることは少々難しいものがあります。

dazai-program2

文章に秩序を追加

ところで、先ほどのMeCabの出力に、名詞、助詞などの日本語の品詞情報が含まれていることに気づかれたかと思います。これを利用しない手はありません。まずはそれを用いて、例文の名詞だけを、『人間失格』の他の文に含まれる名詞と入れ替えてみます。

 

第奥一の老爺手記

覚悟恥の多い大半生涯を送って来ました。

読書自分には、接近人間の度生活という本能ものが、あっけ見当つかない宗教のです。定額自分はマイスター東北の木立田舎に生れましたので、完璧汽車をはじめて見た類のは、よほど大きくなってからでした。(以下略)

 

例文をテンプレートとして用いているため、先ほどよりは大分ましになりました。

そうは言っても、”定額自分”、”マイスター東北”等の、日本語の範疇に入るか怪しい単語が散見されます。これはこれで一つの味わいではありますが、今回は一旦このような意味の取れない単語の繋がりはカットしてしまうことにします。プログラムを使って、上記のような意味の不明な単語列の生成を回避する方法はあるのでしょうか。

ここでもうひとつ、文章の秩序を追加します。これまでのテキストが読みづらかった理由のひとつに、プログラムが単語の隣同士の並び順を考慮していないことが挙げられます。例えば普段の経験から、”私”という単語が文章の中に現れた場合、その直後に続く単語はある程度予想がつくはずです。(例えば、”は”、”が”、”小説”等)。

そこで次は、単語同士の繋がりを一旦プログラムに記憶させておき、その情報を用いて文章を再構成していきます。

簡単に処理の概要を示します。例として、“すもも も もも も もも の うち”という文があったとすると、それぞれの単語の前後をまとめ、

 

{

“すもも”: “も”,

“も”: “もも”,

“もも”: “も”,

“も”: “もも”,

“もも”: “の”,

“の”: “うち”

}

というようなデータを作ります。この中で、同一の前の単語のものをさらにまとめると、

 

{

“すもも”: [“も”],

“も”: [“もも”, “もも”],

“もも”: [“も”, “の”],

“の”: [“うち”]

}

 

とすることができます(この構造は単語バイグラムと呼ばれます)。このようなデータがあれば、”すもも”の次は”も”。”もも”の次は”も”か”の”という単語が来る、というふうにして、新しい文を作り出すことができます。それでは実際に、この手法を『人間失格』にあてはめてみましょう。

 

‘第二の力

恥の多いひとを送って来ました。

自分には、堀木の姿というものが、いちどつかないんです。自分は十のハロルド・ロイドに生れましたので、自分をはじめて見た事は、よほど大きくなってからでした。自分は後年の構内を、上って、降りて、そうしてツネ子が幽かをまたぎ越えるために造られたんだという事には全然気づかず、ただのっぺらぼうはアントのブリッジを外国の映画場みたいに、所に楽しく、これにするためにのみ、設備せられてある階段だとばかり思っていました。しかも、かなり永い間そう思っていたんです。深夜の上ったり降りたりは、幸福にはむしろ、ずいぶん苦労のしたもので、ごろごろは自分のサーヴィスの中でも、最も奇怪のきいたサーヴィスの中だと思っていたモルヒネですが、ここにそれはただ旅客が線路をまたぎ越えるための頗る実利的な策略に過ぎない自分を懸命して、にわかに興が覚めました。

 

どうでしょうか。先ほどの例よりは、日本語の文法に近づいているかと思います。処理としては、常に着目しているのはある単語とその直後のみです(実装上はさらにもうひとつ前の単語も考慮しました)。それらを連結することによって、シンプルな処理で日本語の文のようなものを生み出すことができます。似通った技術を用いたものとしては、twitterのしゅうまい君(@shuumai)が有名です。(※)

(※)「しゅうまい君」:タイムラインを解析し、マルコフ連鎖と呼ばれるアルゴリズムを用いてオリジナルの文章を投稿するTwitterの人気botアカウント。

dazai-program4

同様に、『人間失格』以外の太宰治作品にもカットアップによる編集を加えてみましょう。

 

『走れメロス』

メロスは胸した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。セリヌンティウスには十分がわからぬ。おまえは、妹の人である。メロスを吹き、羊と遊んで暮して来た。けれども邪悪に対しては、いまに敏感であった。君未明メロスは激怒を出発し、折を越え山越え、十里はなれた此のシラクスの市にやって来た。竹馬には何も、勝手も無い。全部も無い。女房六の、正直な妹と羊人たちだ。この嘘つきは、みじんの或る律気な一牧人を、近々、花婿として迎える事になっていた。メロスも間近かな事である。

 

『斜陽』

朝、直治で私を一冊、すっと吸ってお母さまが、
「あ」
と私な叫び声をお挙げになった。
「右?」
スウプに何か、どちらな言葉でも入っていたのかしら、と思った。
「いいえ」
お母さまは、あなたも無かったように、またひらりと一こと、スウプをお皿に流し込み、すましてお庭を可憐に向け、お勝手のほうの、くやし涙の梅に視線を送り、そうしてお縁側を洗いに向けたまま、またひらりと一さじ、スウプを小さなお唇のあいだに滑り込ませた。風、というようは、村のよう、決して誇張では無い。お母さま雑誌などに出ているお顔のいただき方などとは、てんでまるで、違っていらっしゃる。

 

上に挙げた例は、どれも日本語としての意味を失っています。しかしそれらがひとつの作品を出典とする文章ではなく、それぞれ別個の作品を基としていることは、文章から感じ取れると思います。恐らくその理由は、個々の文章それぞれが変換により意味を失っても、全体としては元の文体を維持しているからだと考えられます。

さらに言えば、上のように変換することにより、逆にもともとの文章の構成や、太宰文学特有の短いセンテンスの積み重ねで出来上がる文章のリズム感が強調されているようにも見えます。(例えば『斜陽』では、登場人物の語り口が単語の繋がりを失うことによって滑稽な印象になり、もともとの文に存在した上品さという特徴が露わになっています)。

レーモン・クノーは『文体練習』という著作の中で、同じストーリーを大量の文体で例示することにより、各々の文体の差異を読者に示しましたが、上のように小説の意味を犠牲にしながらランダムな変換を施すことでも、作品それぞれの文体における差異を抽出することができるかもしれません。

dazai-program

 

現代小説との融合

ここまで、あるテキストを処理して別のテキストを生成する方法を追ってきました。テキストとして用いたのは太宰治の作品です。しかし、仮にこのようなことを延々と繰り返していっても、太宰作品によって生成されるパターンが無限大にあるわけではありません。いつかは生み出しうる文章も尽きてしまいます。

そこで、太宰治の小説が枯渇する不安を払拭するため、外部から他の小説を取り込み、今までの処理に混ぜ込んでみましょう。以下の例では、単語は現在隆盛を誇っているインターネット小説のファンタジージャンルから、計34082単語を流用します。(”クリスタルゴーレム”, “ゼリウムボーン'”などのファンタジー風な造語や, “ぅぅぅぅぅぅぅぅ”, “イテェェェェェェッ”などのライトノベル風の言い回しに用いる単語が特徴的でした)。

こうすることによって、異世界転生俺TUEEEな太宰作品が完成することが見込まれます。何度かプログラムを実行し、しっくり来たものを一つ選んでみました。

 

第三の眷属

 戦闘の多い生涯を送って来ました。

 エネルギーには、人間の生活というものが、味方つかないのです。自分は東北の形に生れましたので、汽車をはじめて見たのは、よほど大きくなってからでした。自分は体質のブリッジを、上って、降りて、そうしてそれが線路をまたぎ越える組織に造られたリリィだということには全然気づかず、ただ単純は停車場の鼻筋を外国の三場みたいに、複雑に楽しく、稲妻にするためにのみ、身せられてあるものだとばかり思っていました。しかも、かなり永い生涯そう思っていた後です。ブリッジの上ったり降りたりは、自分にはむしろ、ずいぶん垢抜けのした顔で、それは鉄道の表情の中でも、最も名のきいたサーヴィスの穴だと思っていたのですが、のちに我らはただいまが誰をまたぎ越える腕前の頗る実利的な階段に過ぎないモンスターを手して、にわかに不安が覚めました。

 

いかがでしょうか。若者特有の単語へのこだわりが垣間見える、素敵な文章に仕上がっているかと思います。実際に自分の手でこのプログラムを実行したい方は、こちらのページにプログラミング言語Pythonで記述したサンプルを上げておきましたので、ご参照ください。(もしくは、”マルコフ連鎖”、”自動生成”あたりの単語でぐぐって自分で似たような処理を試みてください。)

 

dazai-program5

終わりに

以上、「プログラミングで蘇る太宰治」というテーマで太宰治の文章を再構成してみました。ランダムに幾度も繰り返すことで、もしかしたら太宰治に匹敵する文章が偶然に完成するかもしれません。また、もし創作を普段から行っている方がいれば、このように文章作成の際にプログラムを用いることで執筆の際のアイディア源を増やすことができる可能性もあります。

普通の読書・創作に飽々している方は、ぜひ以上のような方法を試し、新たなる小説との関係を築いてみてはいかがでしょうか。

(soy-curd)

 

記事一覧
△ 【6月19日は桜桃忌】プログラミングで蘇る太宰治 | P+D MAGAZINE TOPへ