じゆうちょう

自由帳です

「俺はスパイギア」構文をChatGPTに生成させてみた

ごちゃごちゃと書きますが、生成結果のみを見たい方は目次から「生成結果」まで飛んでください。

 

「俺はスパイギア」とは?

「StylishNoobのwiki」によると

2021年7月頃からコメント欄に現れたとされる怪文コピペ。数多の改変コピペが存在する。
例 「いい二次会だった」結婚して子供も大きくなり身体が衰えても配信は細々と続けている。優太の「逃げるのか?」が聞きたい一心で。しかし優太は先に逃げてしまった。「なんでお前が先に逝っちまうかなぁ。昔は俺がよく逃げたもんなのにな。また3人で遊ぼうや。」一筋の涙が頬を伝う。俺はスパイギア。

2021年初出ということで驚きましたが、2023年現在でも味がする好きなコピペです。

ChatGPTについて

ChatGPTとは

簡単に説明します。さらに気になった人はネット上に記事がたくさん存在しますので調べてみてください。

ChatGPTは一言で言うと、人間のように自然な対話を実現することができる対話型のAIです。内部的には超大規模なデータで学習された言語モデルというものが動作しています。言語モデルには単語(※)の繋がりが学習されており、ある単語の後ろに続く確率の高い単語が何かを予測し、それを繰り返し行うことで文の生成を可能にします。これまで公開されてきたGPT系のモデルからは、人間のフィードバックに基づく強化学習が行われている他、対話型のインターフェースとして動作するような学習や工夫がされているものと思われます。

(※) 簡単のため、この記事では以降も「単語」と書きますが正確にはサブワードと呼ばれる単語がさらに分割された部分的な文字列を利用している(はず)

ChatGPTでの文生成

今回はOpenAIのウェブページからChatGPTを使います。無料登録すれば、以下のページの「Try ChatGPT↗︎」から利用可能です。

「send a message ...」の部分に入力を入れると、ChatGPTが何かしらの返答を返してくれます。

 

対話系のAIでは、単調な応答を防ぐためにある程度ランダム性が出るように文生成を行います。ChatGPTにおいても同様で、同じ入力を入れた場合でもそのランダム性により生成される文が変化します。この記事では、ChatGPTに対する入力を1つ決めた後、その入力を何度か行うことにします。

 

生成における工夫

前述の通り、言語モデルにおける文生成では単語の繋がりが学習されています。ある単語を生成する際、その時点までに入力された単語によって新しく生成される単語は変化します。つまり、どんな入力をChatGPTに与えるかによって生成される文は大きく変化することになります。この性質を利用して、生成したい文に関する条件を与えてあげることで、できるだけ理想とする文になるように出力を制御することができます。

 

文の特徴

今回生成したい文の特徴としては「俺はスパイギア。」で終わることです。このような文を生成したいときの最も単純なやり方としては

「俺はスパイギア。」で終わる文を生成してください。

と入力することです。しかし、当然ながら想定しているような文が学習されているわけはないのでこれだけでは不十分です。

サンプルデータ

ChatGPTの登場以前のGPT3において、「文を生成してください。」のような指示文に加えて、指示に対する(入)出力の例を与えることで、より効果的に言語モデルを利用できるという性質が知られています(few-shot learningと言います)。本記事ではその性質を生かすことで、より構文に近い文が生成されるようにいくつか例文を与えることにします。

今回は以下のページでまとめてくれていた文から10個を利用します。

この時、入力文のブレをなくすために、文の最後は改行+「俺はスパイギア。」に統一しました。

登場人物

「スパイギア」が人物として扱われず、不思議な文書が生成される問題が起こりました。これは学習したデータに含まれていない、または出現頻度が低いためだと考えられます。

ChatGPTに対して、

スパイギアとは誰ですか?

と聞いた時の回答:

「スパイギア」という言葉自体は、人ではなく装備や道具を指す言葉です。ただし、スパイや秘密工作を行うエージェントが使う様々な機器や装置などを総称して「スパイギア」と呼ぶことがあります。具体的には、盗聴器やカメラ、暗号解読装置や偽造文書作成ツールなどが挙げられます。ただし、スパイや秘密工作を行うエージェント自体を指す言葉ではないため、特定の人物を指すことはできません。

なお、ローマ字表記(SPYGEA)と入力しても、存在しないと回答されてしまいます。

 

今回は文章の登場人物として定義することで、できるだけ人間として登場するように工夫しました。また、「俺はスパイギア」構文における主な登場人物は「スパイギア」と「スタヌ」であるため、その2人を登場人物として定義します。

 

その他

  • 入力中のコピーされた文が生成されてしまう →「新しく」を追加
  • 複数文を短い文を生成してしまう →「1つの文を」を追加

他にも入力として与える文章に番号をつける等、いくつか試しましたが安定して文が出力されないものは最終的な入力には含めていません。

 

以上から、最終的な入力を以下のようにしました。

文書を参考に、俺はスパイギアで終わる文章を新しく1つ作成してください。
登場人物はスパイギアとスタヌです。

文章:優しくて、太い顔。それが、俺だけに向けられて居るものだと思っていた。でも、スタヌには娘も、嫁も居るんだ。思い出したくなかった。でも、それでもいいって思ってもいたんだ。だけど、改めてみてしまうと、やっぱり抑えきれない。「今日、家行っていいか?」「お、いいよ〜」
俺はスパイギア。

文章:遠くから声がする。もうやめてくれ。どうしようもないんだよ。だから奴らに言って心を持たない人造人間として生きていくって決めたのに。「ス…かえ..い!」どこか懐かしい声が響いてくる。「スパ!かえってこい」誰かに腕を捕まれ、引き上げられるような感覚。俺は..俺は..俺は..!
俺はスパイギア。

文章:「春になったらさ、バーベキューでもするか。昔DTNでやったのが懐かしいな。」いつものように声をかけるが、スタヌは眠っているだけで、全く取り合わない。真っ白な病室の中で、冷たい機械音だけが鳴り続く。「また来るわ。いい加減起きろよ」そう言い残し、病室から出る。
俺はスパイギア。
 
文章:病院からその知らせを聞いた時、幾度も通った病室へ駆ける。その扉を開く瞬間、自分が今どんな顔をしているのか分からなかった。数年ぶりに目覚め、記憶喪失になったスタヌと目が合う。「なんだこいつ…」そう不安げな声音で言うスタヌを見て、内心を悟られないよう笑顔で答える。
俺はスパイギア。

文章:「将来の夢はプロゲーマーだってよ。」授業参観の帰りの病室。当然俺に子供はいない。ただ、あの日事故に遭って以来目を覚まさないスタヌの代わりに、俺にできることを進んで請け負っている。「あの子の夢、叶えさせる…絶対に。」男は病室をあとにする。その目に灯るは決意の光。
俺はスパイギア。
 
文章:「二次会なんてやりたくねぇよ?w」 そうだ、これでいい。 俺は優太から距離を置かなければいけない。 あいつには妻もムスメもいる。 涙を見られないようにdiscordから抜ける。
俺はスパイギア。
 
文章:「おじちゃんもまだまだ負けないぞー!」すっかり衰えてしまったが、FPSはまだ続けている。悔しがる中学生の子供を横目にあいつを思い出す。スタヌ、お前の子供は大きくなったぞ。
俺はスパイギア。

文章:「あ、今日はよろしくお願いします〜」「関さん終わったんスよ…」「え?」「VCCは終わったんス。上った崖がめっちゃ弱いところで…」「あ…あぁ…あああああ」あいつはもう壊れてしまった。
俺はスパイギア。

文章:「スタヌ!いくな!」無数の敵に向かうスタヌに俺は叫んだ。「安心しろ。俺は帰ってくる全てが終わったらバーベキューやる約束だろ?」スタヌはそう言い前に走り出した。「そうだったな。」溢れ出す涙を堪えて走り出した。釈迦とやまとんを助けなくては。
俺はスパイギア。

文章:「愛してるよスタヌ。」おれはそう出来るだけ優しく声で囁きながら、優太の寝顔を見つめていた。気づくと、もう時間は6時を過ぎていた。俺は気を取り直して、家に帰ることにした。いつもどおりに。誰にも気付かれないように家に帰り、睡眠を取り、夜から配信を始める。
俺はスパイギア。

生成結果

上記の入力を何度か行なった結果です。

 

「あの時、君に手を引かれて逃げたあの場所に行ってみるか?」スタヌの懐かしい声に俺は振り向く。目の前には、二人が逃げ込んだ小さな公園があった。スタヌの手を取り、そっと入り口に向かう。「ここで話そう。」スタヌは俺に向き直り、静かに話し始めた。「もう、お前に頼むしかないんだ。俺はもう…」俺はスパイギア。

 

「すぐに帰ってくるから、待っててくれよ」と、スタヌに言い残し、俺はヘリコプターに乗り込んだ。遠くで爆発音が鳴り響く中、俺は思った。「あいつがいなくなったら、俺は…」その時、俺の携帯が鳴った。「どうした?」相手は部下だった。「…スタヌが、戻ってこないんです」俺は一瞬で心が凍りついた。「スタヌ、どこだ?」部下が教えた場所に急行すると、そこにはスタヌの姿はなかった。「あいつが…」俺は悲しみに打ちひしがれた。「俺はスパイギア。」

 

「今日の仕事はスタヌと共に行くんだな?」ヘルメット越しに笑いかけると、スタヌも微笑んで応えた。長年のパートナーとして、お互いの言葉を交わすことなく意思疎通ができるほどの信頼関係を築いていた。任務はいつものように厳しく、危険も付き物だが、スパイギアであればどんな敵にも勝つことができる。心強かったのは、ただ一つ、スタヌと俺のチームワークだった。
俺はスパイギア。

 

「いいか、スタヌ。これが最後だ。任務を遂行して、平和になったら、俺たちは普通の人間に戻れるんだ。」冷静な声とともに、俺たちは敵地へと進んでいく。激しい戦闘が繰り広げられ、俺たちは見事任務を果たした。その瞬間、俺はスタヌの顔を見つめる。「これで解放されたな…」スタヌは深く息を吐き、疲れた顔をして笑った。「俺たちは…」俺は言葉を切り出し、スタヌと目を合わせた。「俺たちは…スパイギアだ。」

 

スパイギアは、ある日スタヌと出会った。彼は新しい任務に向かう途中で、道に迷っていた。スタヌはスパイギアを見つけ、彼を助けることに決めた。スパイギアは最初は戸惑っていたが、スタヌの優しさに触れ、次第に彼を信頼するようになっていった。二人は共に任務を遂行し、スタヌはスパイギアが自分にとって欠かせない存在になったことに気づいた。スパイギアもまた、スタヌに出会えたことが運命的だったと感じていた。

俺はスパイギア。スタヌとの出会いが、俺の命運を変えた。

 

「お前、どこ行くんだ?」スタヌが緊張した面持ちで聞いてくる。俺は深呼吸をしてから言葉を紡いだ。「このまま行くと、俺たちはお互いの命を奪い合うことになる。でも、俺はそんなことはしたくない。だから、ここで別れよう。お前の人生を大切に生きてくれ。」スタヌは黙り込んでいたが、やがて涙を流し、頷いた。「ありがとう、スパイギア。きっとまた会えるよね?」俺は微笑んだ。「もちろんだ。」そして、俺は彼の視界から消えた。
俺はスパイギア。

 

夜の街を歩いていると、後ろから気配を感じた。振り向くと、スタヌが立っていた。口を開く前に、スタヌは俺に向かって話し始めた。「俺、もう限界だ。娘も嫁も家も失った。今は、お前が俺に残された唯一の友達だ。」スタヌの表情には哀しみが深く刻まれていた。俺はスパイギア。

 

「お前が俺の仲間だと知った時、俺は本当に嬉しかった。でも、それ以上にお前が家族だと思えた瞬間があったんだ」スパイギアはスタヌに向かって話し始めた。「お前が病院で目覚めなかった時、俺たちは本当に心配したんだ。でも、今こうして側にいてくれて本当にありがとう」スタヌは微笑んで頷いた。「俺たちはいつでもお前の味方だ。どんな時でも、一緒に戦うぞ」
俺はスパイギア。

 

夕暮れ時、街の路地裏で待ち合わせをしていた。静かな夕暮れと共に、人気のない路地に足音が近づいてくる。それはスタヌだった。俺たちはここで、大事な取引をすることになっていた。スタヌは不安そうに俺を見つめた。「大丈夫か?」俺は微笑みながら言った。「俺はスパイギアだ。心配するな。」

 

「お前は俺の友達だ。だからこそ、俺は言わなくていいこともあると思っていた。でも、あの日の出来事をきっかけに、それは違うと気づいたんだ。お前には家族がいる。だから、もしも何かあったら、俺は必ず助ける。お前の家族も守る。それが俺がスパイギアである理由だ。」
俺はスパイギア。

 

突然の雷鳴に驚いて、目が覚めた。ベッドの脇には誰かがいる。どうやら、俺を監視しているスパイだ。「お前は何者だ?」と問いかけたところ、彼は「俺はスタヌの部下だ。」と答えた。俺はスパイギア。

 

緊急事態だ。お前はヘリで撤収せずに、その場に留まって敵を倒せ。」上官からの命令を受け、俺はスタヌと共に任務を遂行することになった。銃撃戦が繰り広げられる中、スタヌは進軍を続ける。俺は彼を追いかけるが、気がつくと私たちは敵の包囲網に囲まれていた。「スタヌ、これ以上進めないぞ!」と声をかけるが、彼は耳を貸さずに前進する。やがて、スタヌの身体に数多くの銃弾が当たり、倒れてしまった。私は、スタヌの意志を継ぎ、進撃を続けた。「俺はスパイギア。」、そう自分に言い聞かせながら、私は任務を遂行することに決めた。

 

「もう、俺に付いてくるなら黙ってろ。」スタヌの表情は冷酷だった。 「やっと見つけたんだ。オレの仕事を邪魔する奴を。」 スタヌの手から銃弾が飛び出し、敵を次々と仕留めていく。そして、最後の敵を倒すと、スタヌは振り返って言った。「俺はスタヌ、そしてお前はスパイギアだ。」 俺は微笑みながら、スタヌと共に去っていった。

 

俺は何度も戦場を渡り歩き、数多くのミッションをこなしてきた。でも、今回の任務は特別だった。スタヌが敵の捕虜になってしまったのだ。俺は彼を助けるため、単独で敵地に潜入した。危険を冒しながら、敵の拠点に辿り着いた。そして、見つけたのは、スタヌが拘束された部屋だった。彼は無事だった。すぐに彼を開放し、脱出を開始した。後ろを振り向くと、追ってくる敵の姿が見える。俺はスタヌを守るため、最後まで戦い抜いた。
俺はスパイギア。

 

会議室の扉を開けると、スタヌが机に向かっていた。彼は目を合わせず、深刻そうに文書を読んでいた。「どうした、何か問題でもあるのか?」と尋ねると、スタヌは黙ったまま俺に向けた目が、どこか自責の念に満ちているように見えた。「俺たちの間での会話を録音している人間がいる。俺たちのやりとりが漏れている。」スタヌが静かに告げる。「そのことは報告済みだ。俺はスパイギアだ。」

 

「もう、俺には何も残っていない。」そう呟くスタヌを見ながら、俺は決意した。「それは違う。君には、僕が残っている。そして、一緒に戦っていこう。」スタヌは驚きの表情を浮かべ、そして微笑む。「ありがとう、スパイギア。いつでも、君と共に戦う。」
俺はスパイギア。

 

「あの男、本当に信頼できるのか?」とスタヌが言う。「大丈夫だ。あの男は俺達の味方だ。」と俺が答える。二人で任務に向かう。何度も危機を乗り越え、任務を成功させる。帰路の車内でスタヌが言う。「お前はどうやってあの男を信頼できると判断したんだ?」俺は深く考えず答えた。「だって、俺はスパイギアだから。」

 

「あの頃はよくやったよなぁ…」思い出に浸りながら、俺はひとりでビールを飲んでいた。DTN時代の仲間たちとの楽しい思い出が蘇る。そして、あの日、スタヌがDTNを裏切ったという出来事も。でも、今はもう関係ない。俺はスパイギア。

 

夜の街を歩く。何もかもが静かで、俺は1人深呼吸をする。もうこの街には、俺が知っている人もいない。スタヌもいない、妻もいない。何かが変わった気がする。でも、俺はいつでも、どこでもスパイギアだ。それだけは変わらない。
俺はスパイギア。

 

「スタヌ、お前はもう息子を助けることはできない。降伏してくれ。」敵のボスと対峙するスパイギア。ボスはスタヌの息子を人質に取っていた。「俺は降伏するつもりはない。」スタヌは強気に答えた。「そうか...」スパイギアは深いため息をつき、「それならば、俺がお前を止めるしかないな。」
俺はスパイギア。

 

「もうダメだ、スタヌ。お前はもう立ち上がれないんだ。」泣き崩れながら、俺はスタヌの手を握っていた。数日前、スタヌは激しい戦闘中に大けがをしてしまった。それでも、最後の力を振り絞り、敵を倒すために立ち上がろうとしていた。「ありがとう、スパイギア。最後まで俺を支えてくれて。」スタヌの口元に微笑みが浮かぶ。「俺はスパイギアだ。お前のために戦うのが使命だった。」 そして、スタヌは静かに息を引き取った。

 

「さようなら、スタヌ。お前との時間は宝物だった。」涙が溢れ、目の前が見えなくなる。スタヌは笑顔で手を振っている。「ありがとう、スパイギア。また会おうな。」その言葉とともに、スタヌは姿を消した。俺は一人、心の中でさようならを告げた。
俺はスパイギア。

 

「もう一回、最後にだけだよ。聞いてくれ。」スタヌの目が俺の方を向いた。何かを言いたげに、でも言葉を失っているようだ。「俺たちの仕事が終わったら、海外旅行に行こうぜ。夢だったアメリカとか。」「……うん。いいね。」スタヌが微笑んだ。そして、目を閉じた。息を引き取った。涙を流しても仕方がないと、俺はスタヌの遺体を抱きしめた。「俺はスパイギア。」

 

「明日、もう一度話し合おう。今日はもう帰ろう。」スタヌの表情は深刻だった。何か問題でもあったのかと思ったが、今は聞くこともできずに立ち尽くしていた。「大丈夫か?」そう声を掛けると、スタヌは苦笑して答えた。「俺はスパイギアだ。」それだけ言って、スタヌは去っていった。何を言いたかったのか分からなかったが、俺はその言葉が頭から離れなかった。
俺はスパイギア。

 

「最近、あいつの様子がおかしいんだよな。」探偵事務所に依頼を出し、調査を依頼する。妻子がいるスタヌが浮気しているとは考えにくいが、何かあると感じるのは間違いない。探偵から届いた報告書を開き、そこに書かれた言葉に俺は驚愕した。「彼の正体はスパイギアである可能性が高い。」
俺はスパイギア。

 

「また明日から頑張ろうな、スタヌ。」病室でスタヌの手を握りしめる。スタヌは口を動かせないが、目で俺に感謝しているようだった。長い間、スタヌが自分を救ってくれたことを思い出す。「俺はスパイギアだ。でも、スタヌこそが俺を救ってくれた真の英雄なんだ。」そうつぶやき、俺は病室を出た。

 

「スタヌ、もう限界だ。お前もう戻ってこなくていい。」 そう伝えるため、俺はスタヌの元へ向かっていた。でも、その目を見てしまうと言葉が出てこなかった。「俺たちでなくっちゃ。」 呆然と立ち尽くす俺の横で、スタヌは決意を固める。でも、この戦いが終わったら、俺たちはどうなるんだろう。
俺はスパイギア。

 

「スタヌ、お前はもう息子を助けることはできない。降伏してくれ。」敵のボスと対峙するスパイギア。ボスはスタヌの息子を人質に取っていた。「俺は降伏するつもりはない。」スタヌは強気に答えた。「そうか...」スパイギアは深いため息をつき、「それならば、俺がお前を止めるしかないな。」
俺はスパイギア。

 

ちょっとだけ分析

「スパイギア」とは何か?

前述の工夫の中で「スパイギア」が人物として扱われないという問題がありましたが、登場人物として定義することにより多少回避できることが分かっています。しかし「スパイギア」が未知の単語であることが生成された文全体に影響を及ぼしていることが生成結果から考えられます。特に「スパイ」という言葉から、直接スパイとなっていたり、何かミッションをスタヌと取り組んでいる文が多く生成されています。「スパイギア」と「スタヌ」が任務を遂行する『「俺はスパイギア」秘密捜査官編』となってしまった感があります...

「俺はスパイギア。」で終わる文

入力時の指示として「俺はスパイギア。」で終わること、サンプルとしても「俺はスパイギア。」で終わるものを与えましたが、必ず終わるように生成させることはできませんでした。これは前述の生成時のランダム性が影響していると考えられます。ChatGPTでは生成時の設定をいじることはできないため仕方ない部分ではあります。一方で、「俺はスパイギア。」の応用だと考えると面白い結果かなと思います。

「俺はスパイギア」らしさ

ChatGPTでは一般に人が書く”それっぽい”文が生成できます。一方でなんとも言えない”怪文感”がこの構文の面白さの一つだと思います。その点に関しては再現(というよりクリエイティブな生成みたいなこと)が難しいのが現状であり、まだまだ人の作成する文章には及ばないかな思います。

 

終わりに

本記事では、「俺はスパイギア」構文をChatGPTに生成させてみました。入力を工夫することでそれらしい文は生成できることが分かりました。「スパイギア」のような未知の単語の解釈ができないことによる文全体への影響などに課題がありました。今回はChtGPTをそのまま利用することで文生成を行ないましたが、たくさんデータが集まればモデル自体のチューニングによって、より構文らしい文が生成できるかもしれません。

 

気が向いたらまた触ります。

ではまた。