ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

ChatGPTで、語幹から英単語を辿り続けるチャットボットを作ってみた

作ったもの

語幹を元に、英単語を辿り続けるチャットボット「ミキータ」です*1

https://chat.openai.com/g/g-fqzH1mgRr-mikita2

できることは、以下の3つだけです。

  1. 英単語を指定すると、その単語の意味を説明したうえで、語幹に分解して提示してくれます。
  2. 提示された語幹の1つを選ぶと、その語幹を含む英単語を3つ提示してくれます。
  3. 提示された英単語の1つを選ぶと、1.と同じことをしてくれます。

使用例

カバは漢字で書くと「河馬」、英語のhippopotamus「河の馬」を表すという素晴らしい知識を持っているため、最初に「hippopotamus」を指定してみます。

hippopotamus

すると・・・

English Word

Hippopotamus

Meaning

カバ

Information

カバは、主にアフリカの河川や湖に生息する大型の陸生哺乳類です。驚くべきことに、カバは馬に近い関係にあります。彼らは水中での生活に適応しており、その巨体にもかかわらず、優れた泳ぎ手です。

Stems

  1. Hippo- : 「馬」を意味する
  2. potamus : 「川」を意味する

語幹に分解してくれました。

では、「potamus」という語幹を含む英単語を調べてみましょう。「2」を入力します。
ちなみにわたしは、Mesopotamiaがその例であり、「2つの川の間の土地」を意味するという素晴らしい知識を持っています。

Examples of English Words Containing -potamus

  1. Hippopotamus ◦ カバ
  2. Potamology ◦ 河川学
  3. Potamophile ◦ 河川を好むこと

1はさっそく最初の単語とかぶってしまいましたが、2と3になかなかマニアックな単語が出てきました。ただ、potamusを知っていれば、実は3のpotamophileの意味は想像できてしまいます。
「3」を入力します。

English Word

Potamophile

Meaning

河川を好むこと

Information

「Potamophile」は一般的に使用される単語ではありませんが、ギリシャ語の「potamos」(川)と「phile」(愛好家)から派生しています。河川や流れる水に対して強い好みや関心を持つ人や動物を指すことがあります。

Stems

  1. Potamo- : 「川」を意味する
  2. phile : 「好きな、愛好する」という意味の接尾語

そう、philは、「好き」「愛」って意味なんですよね。
この語幹を含む単語は・・。

Examples of English Words Containing -phile

  1. Bibliophile ◦ 本好き、書物愛好家
  2. Audiophile ◦ 音響機器や音質にこだわりを持つ人
  3. Francophile ◦ フランスやフランス文化を愛好する人

あれ・・・、philosophyとかphilharmonyとかが出てきてほしかったんだけど、マニアックな単語になってしまった・・・。
英単語のレベルは追加指示でコントロールできそうですが、「聞いたこともない」単語が出てきた方が面白いんじゃないかな。

まあ、こんな感じのものです! ダラダラつなげていると、「え、そんなつながりあったの?」って出会いがあったりします。

作ってみて

GPTsの使い方をちゃんと勉強せず、Trial & Errorで作ってみたうえでの感想です。

所要時間

  • メインの動きの部分: 30分
  • 微調整の繰り返し: その後ダラダラ

わかったこと(推測)

  • こちらが指示を与えると、ChatGPTは裏でそれをInstructionsとして最適化する。この際、こちらが言っていないことも勝手に補足している。 指示を追加すると、Instructionsに反映され、最適化される。
  • 差分で指示を与える形になるので、最初の方の指示が亡きものにされていたりする。毎回全文指示した方がいいんじゃないか?と感じる。
  • いずれにせよ、情報をテキストで単純に扱うだけのツールなら、ものすごく簡単にできてしまう

よくわからないこと

  • こちらが構造化された形で指示を与えても、ChatGPTの中での解釈が同じ構造になるわけではない(っぽい)。なので、Instructionsを直接編集しようとすると戸惑う。
  • 過去のレスポンスをうまく変数として扱うのが難しい。「1つ前」のレスポンスだけを見てほしいのに、それより前のレスポンスを参照して想定外の動きをすることがある。
  • レスポンスの形式を指定する方法に習熟が必要。日本語にしてほしい部分が英語になっていたりする。「毎回のレスポンスにこういうメッセージを入れてほしい」みたいな固定値の指定方法もよくわからない。
  • 指示のスコープが意図通りにならないことがある。たとえば

(1)3つの情報A、B、Cを出力して

と指示した後に、

(2)情報Cは英語で出力して

と指示すると、情報C「だけを」英語で出力して、情報A・Bを出力「しない」動きになったりする。

感じたこと

次のポストで書きます。

Generated By Dalle

*1:最初に公開した「ミキータ」は、改良をしていたつもりが次第にまともに動かなくなり、最終的にはこちらの指示が全部エラーになってしまいました・・・。あらためて「2」を作ったのでした。