見出し画像

ChatGPTは俳句を詠めるか?――ChatGPTの基礎知識⑩by岡嶋裕史

彗星のごとく現れ、良くも悪くも話題を独占しているChatGPT。新たな産業革命という人もいれば、政府当局が規制に乗り出すという報道もあります。いったい何がすごくて、何が危険なのか? 我々の生活を一変させる可能性を秘めているのか? ITのわかりやすい解説に定評のある岡嶋裕史さん(中央大学国際情報学部教授、政策総合文化研究所所長)にかみ砕いていただきます。ちょっと乗り遅れちゃったな、という方も、本連載でキャッチアップできるはず。お楽しみに!

過去の連載はこちら

岡嶋さんの好評既刊

ChatGPTはここから始めることができます

ChatGPTは俳句を詠めるか?――ChatGPTの基礎知識⑩by岡嶋裕史

切り捨てられていた分野を包含

 GPT-4が学習に使ったデータセットはとにかくでかいので、今までだったら「価値を生み出さない」「役に立たない」と切り捨てられていた分野を包含し、かつそれらを結びつけているところが「すごい」と思う。

Q 季語ってなあに?

A 季語(きご)とは、日本の伝統的な詩の形式である俳句や川柳において、特定の季節を表現・象徴する言葉のことです。季語は、自然界の現象や生物、行事、風物詩など、季節を感じさせる要素を詩に取り入れることで、その時期の情景や感情を読者に伝える役割を果たします。

季語は、春・夏・秋・冬の4つの季節に分類され、それぞれの季節に特有の言葉が含まれています。例えば、春の季語には「桜」や「うぐいす」、夏の季語には「蝉」や「夏の夜」、秋の季語には「紅葉」や「月見」、冬の季語には「雪」や「寒さ」などが挙げられます。

季語を上手く用いることで、俳句や川柳は季節感や自然の移り変わりを捉え、読者の感性に訴えることができます。

Q へーっ。じゃあ、夏の季語をいくつか教えて。

A もちろんです。夏の季語は、暑さや生き物、行事など、夏の特徴を表現する言葉が含まれています。以下に、いくつかの夏の季語を紹介します。

蝉(せみ) - 夏の暑い日によく聞こえる蝉の鳴き声は、夏の象徴です。
夏の夜(なつのよる) - 暑くて長い夜を表す言葉です。
納涼(のうりょう) - 暑い夏を涼しく過ごすための行事や風物詩を指します。
朝顔(あさがお) - 夏に咲く美しい花で、涼しげな印象を与えます。
花火(はなび) - 夏の夜空を彩る花火は、夏の風物詩として親しまれています。
スイカ - 夏の果物として人気のあるスイカは、暑い夏に涼し気な味わいを提供します。
風鈴(ふうりん) - 夏の風物詩である風鈴は、涼しげな音色で暑い夏を楽しく過ごさせてくれます。
蚊取り線香(かとりせんこう) - 夏の夜に蚊を追い払うために使われる蚊取り線香は、夏の風物詩として知られています。

これらの言葉は、夏の情景や感情を表現する際に、俳句や川柳などの詩に用いられます。

表と俳句を作る

Q いま出してくれた季語を、表の形にまとめてくれる?

A もちろんです。以下に、夏の季語を表形式でまとめました。

この表は、夏の季語とそれらが表す意味やイメージを整理するのに役立ちます。季語を使って詩を作成する際に、この表を参考にしてください。

Q 夏の季語が入っている俳句を、松尾芭蕉風の言葉遣いで作ってください。

A 蝉の声 木陰に涼む 夏の風

アナグラムを作るプログラム

Q いま出力してくれた俳句でアナグラムを作るプログラムを作りたいんだけど、Visual Cで動くように作ってくれる?

A アナグラムを生成するプログラムを作成することはできますが、私はGPT-4モデルであるため、直接コードを生成することはできません。しかし、以下のアプローチを使用して、Visual C++を使ってプログラムを作成する方法を提案します。

文字列を入力として受け取る。
文字列の文字をカウントし、各文字の出現回数を記録する。
文字列をシャッフルするアルゴリズムを実装し、ランダムな順序で文字を配置する。
シャッフルされた文字列を出力する。

これらの手順に従って、Visual C++でアナグラムを生成するプログラムを作成できます。プログラムの具体的な実装に関しては、C++の標準ライブラリを利用し、文字列操作やランダムなシャッフルなどの機能を活用してください。

#ありゃ、いきなりは作ってくれなかった。でも、まあこの辺は聞き方次第なので・・・・・・。

Q 文字列をアナグラムするプログラムのサンプルをC++で出力してください。

A 以下に、C++で文字列をアナグラムに変換する簡単なプログラムのサンプルを示します。このコードは、<algorithm>と<random>ヘッダを使用して、与えられた文字列をシャッフルし、アナグラムを生成します。

このサンプルプログラムは、次の手順で動作します。

ユーザーから文字列を入力して受け取ります。
C++の標準ライブラリのランダムエンジンを使用して、文字列をシャッフルします。
シャッフルされた文字列(アナグラム)を出力します。
このコードをC++コンパイラでコンパイルし、実行することで、与えられた文字列のアナグラムを生成できます。

Q これだと漢字が処理できないと思うけど、漢字が使えるように直せる?

A 確かに、先程のアナグラムのコードは、UTF-8エンコードされた漢字やひらがな、カタカナを処理することができません。C++では、漢字を含む文字列を扱うために、std::wstring(ワイド文字列)とstd::wcoutを使って、以下のようにコードを修正できます。

この修正されたコードでは、std::wstringを使用してワイド文字列を扱い、std::wcoutとstd::wcinを使用してワイド文字列を入力・出力します。また、ロケールをUTF-8に設定することで、漢字を含む文字列を正しく扱えるようになります。この修正により、漢字やひらがな、カタカナを含む文字列のアナグラムも生成できます。ただし、このコードは環境によっては正常に動作しない場合があります。特にWindows環境では、C++の標準入出力がUTF-8に対応していないため、追加の設定が必要になることがあります。

 で、ブラウザから使えるネット上の無償開発環境で動かしてみたら、こんな結果を吐き出した。

Input: 蝉の声 木陰に涼む 夏の風

#さっき、GPT-4が出力した俳句だ。

Output: 陰蝉夏涼声にの 風木のむ

組み合わせによって新しい回答を創造できる

 まず、汎用の言語モデルで俳句だの季語だのの話題に追従してくるのがいかしてる。詩や文学の重要性は論を待たないが、いっぽうでビジネスや日常会話で頻出かと言えばそうではないだろう。

 データセットの作成に金も手間もかかることを考慮すれば、真っ先にぶった切りたい候補になってくる。たとえば、大学受験用の電子辞書を買うときスタンダードなモデルを選ぶと、「もうちょっとご予算があれば、医療分野の辞書が充実しているモデルもお求めになれます」などと言われるのと同じである。

 医学部志望の受験生は欲しいかもしれないが、一般的な受験対策としてはいらないので、大多数の人向けのモデルでは省かれる。

 季語の意味や、数ある季語の中から夏の季語を教えてといった問いあわせは、(学んでさえいれば)AIの得意な回答分野だろう。でも、「じゃあ、それを表にしてよ」といっていきなり出力できるのはなかなかである。

 表という表現形式を知っていて、短文と表の置換ができるのはもちろんなのだが、よくあるモデルであればステートレスなので、次のデータを表にして欲しい、「蝉(せみ) - 夏の暑い日によく聞こえる蝉の鳴き声は、夏の象徴です。・・・・・・」ともう一度データを投入しなければならないところだ。

 ChatGPTも永遠に会話履歴を覚えているわけにはいかないので、遡って一貫性を確保できるのは数千字と言われているが、これができるのであればビジネス用途の秘書機能として実用水準だろう。

 そして、ここが生成系AIという名称に恥じない本領発揮部分だが、「俳句を作って」に応えてくれる。膨大な記憶能力を背景に、データから必要な部分を抽出して回答するだけでなく、組み合わせによって新しい回答を創造できる(ように見える)点が出色の出来映えだ。(続く)

岡嶋裕史(おかじまゆうし)
1972年東京都生まれ。中央大学大学院総合政策研究科博士後期課程修了。博士(総合政策)。富士総合研究所勤務、関東学院大学経済学部准教授・情報科学センター所長を経て、現在、中央大学国際情報学部教授、政策文化総合研究所所長。『ジオン軍の失敗』『ジオン軍の遺産』(以上、角川コミック・エース)、『ポスト・モバイル』(新潮新書)、『ハッカーの手口』(PHP新書)、『思考からの逃走』『実況! ビジネス力養成講義 プログラミング/システム』(以上、日本経済新聞出版)、『構造化するウェブ』『ブロックチェーン』『5G』(以上、講談社ブルーバックス)、『数式を使わないデータマイニング入門』『アップル、グーグル、マイクロソフト』『個人情報ダダ漏れです!』『プログラミング教育はいらない』『大学教授、発達障害の子を育てる』『メタバースとは何か』『Web3とは何か』(以上、光文社新書)など著書多数。


光文社新書ではTwitterで毎日情報を発信しています。ぜひフォローしてみてください!