2023年8月27日日曜日

ChatGPT Plusで自由記述形式からJSONを生成

 何らかの自由形式文のファイルに対して、適当なタグを設定してJSON形式ファイルを生成したい場合があります。例えば、こちらの過去記事は、参考資料[1]の植物の特性を記述した自由形式文をJSONに自動変換する試みでした。そこでは、形態素解析と係り受け解析を利用したプログラム開発が必要でした。しかし、ChatGPTの出現によって、状況は一変しました。そういったプログラムをJavaなどで作成するまでもなく、日本語(英語でも良いが)で僅か数行の指示文(プロンプト)を与えるだけで、それが可能になってしまいました!プログラマー失業の危機かもしれない!
ChatGPTで生成した量子コンピュータのイメージ
 以下にChatGPT(ただし、GPT-4利用の場合)を使ったそのような例をメモとして残しておきたいと思います。

私の指示文(プロンプト)
 以下の例文に対して、4行ほどの日本語のプロンプト(これはsecretです)を与えた。
 今後は、どのようなプロンプトを与えるのかが重要になり、「企業秘密」になってくるかもしれない。ここでもそのように秘密にしました!
 以下に、5つの例文([1]から引用)に対して、ChatGPTが生成したJSON形式を載せます。

ChatGPT(GPT-4)からの回答
--------------------------------------------------------------------------------------
[a] ニッケイ: 樹皮に芳香があり、葉は長楕円形で、液果が黒く熟す。
--------------------------------------------------------------------------------------
  "ニッケイ": {
    "全般": "樹皮 芳香",
    "": {
      "what": "長楕円形",
      "how": ""
    },
    "": {
      "what": "",
      "how": "",
      "when": ""
    },
    "果実": {
      "what": "液果",
      "how": "黒 熟す"
    }
  }

[myコメント] タグ"全般"の値が適切ですね。

--------------------------------------------------------------------------------------
[b] キクザキイチゲ: 3出複葉が3輪生し、茎先に白いキクのような花の咲く春植物。
--------------------------------------------------------------------------------------
  "キクザキイチゲ": {
    "全般": "春植物",
    "": {
      "what": "3出複葉 3輪生",
      "how": ""
    },
    "": {
      "what": "白い キクのような",
      "how": "茎先 咲く",
      "when": "春"
    },
    "果実": {
      "what": "",
      "how": ""
    }
  }

[myコメント] タグ"花"のサブタグ"when"の値が"春"なのは適切ですね。

--------------------------------------------------------------------------------------
[c] オモト: 葉は厚くて縁が波打ち、淡黄緑の花が円筒状に咲き液果は赤い。
--------------------------------------------------------------------------------------
  "オモト": {
    "全般": "",
    "": {
      "what": "厚い 縁 波打ち",
      "how": ""
    },
    "": {
      "what": "淡黄緑 円筒状",
      "how": "咲く",
      "when": ""
    },
    "果実": {
      "what": "液果",
      "how": "赤い"
    }
  }

[myコメント] "葉"のサブタグ"what"の値"波打ち"は、"how"の値の方がいいかも。でも全体的にgoodですね。

--------------------------------------------------------------------------------------  
[d] バイカオウレン: 掌状複葉の小葉は5枚あり、梅に似た白い花が単生し、袋果ができる。
--------------------------------------------------------------------------------------
  "バイカオウレン": {
    "全般": "",
    "": {
      "what": "掌状複葉 小葉 5枚",
      "how": ""
    },
    "": {
      "what": "白い 梅に似た",
      "how": "単生 咲く",
      "when": ""
    },
    "果実": {
      "what": "袋果",
      "how": "できる"
    }
  }

[myコメント] "花"のサブタグ"how"の値"咲く"は、原文には無いところが面白い。

--------------------------------------------------------------------------------------  
[e] ポーチュラカ: 多肉質で地を這い葉はへら形で、枝先に多彩な花が咲く。
--------------------------------------------------------------------------------------
  "ポーチュラカ": {
    "全般": "多肉質 地這い",
    "": {
      "what": "へら形",
      "how": ""
    },
    "": {
      "what": "多彩",
      "how": "枝先 咲く",
      "when": ""
    },
    "果実": {
      "what": "",
      "how": ""
    }
  }

[myコメント] タグ"全般"の値を設定してくれたところが嬉しい。

感 想
 なかなか、まずまず、ですね。このような結果を得ることは、普通の形態素解析と係り受け解析では難しく、膨大なコーパスの学習とattention機構がなせる技だと感じます。
 当然ながら、プロンプト文をどのように与えるかで、結果はかなり異なります。満足できない場合は、試行錯誤である程度改善できるのではないでしょうか。あくまで、道具としてどのように使っていくのか、ということですね。

参考資料
[1]渡辺坦:植物の名前を探しやすい デジタル植物写真集
http://plantidentifier.ec-net.jp/

0 件のコメント:

コメントを投稿