気の向くままに辿るIT/ICT
ソフトウェア

GPT-3のExamples/Summarize for a 2nd graderを試してみた

ホーム前へ次へ
フリーソフト・オープンソースを活用しよう。

GPT-3のExamples/Summarize for a 2nd graderを試してみた

GPT-3のExamples/Summarize for a 2nd graderを試してみた

2021/12/03

 OpenAIの自然言語処理モデルGPT-3のExamples/Summarize for a 2nd graderを試してみました。

Summarize for a 2nd grader

debian:~$ python openai_examples_summarize.py
('九官鳥が、この文章ってどういう意味?と聞いてきた。:\n\"\"\"\nスマートスピーカーとは、音声認識と音声合成、その多くは、加えて人工知能という技術から成るスマート家電の1つです。音声認識には、自然言語処理も重要です。その結果、人の話し言葉を理解して音声操作もできるようになります。また、音声合成技術によってイントネーションなども考慮しながら人の話し言葉を創り出します。これらを組み合わせることによってコンピュータやインターネットからの情報を基に日付や時刻、曜日や天気、ニュースや料理のレシピを教えてくれたり、音楽をかけてくれたり、併せて無線通信や赤外線通信を利用して家電を操作してくれたりします。アマゾンやグーグル、ライン製の製品もありますが、日本の大学の研究機関などが開発した各技術を組み合わせると同じようなことができることもあります。手が離せない時など声で操作できると便利なケースも多々あるでしょう。\n\"\"\"\n私は、鳥でも理解できるように簡単な言葉で言い換えてみることにしました。:\n\"\"\"\n\n',)
 
スマートスピーカーとは、音声認識と音声合成、その多くは、加えて人工知能という技術から成るスマート家電の1つです。音声認識には、自然言語処理も重要です。その結果、人の話し言葉を理解して音声操作もできるようになります。また、音声合成技術によってイントネーショ
debian:~$ python openai_examples_summarize.py
('九官鳥が、この文章ってどういう意味?と聞いてきた。:\n\"\"\"\nスマートスピーカーとは、音声認識と音声合成、その多くは、加えて人工知能という技術から成るスマート家電の1つです。音声認識には、自然言語処理も重要です。その結果、人の話し言葉を理解して音声操作もできるようになります。また、音声合成技術によってイントネーションなども考慮しながら人の話し言葉を創り出します。これらを組み合わせることによってコンピュータやインターネットからの情報を基に日付や時刻、曜日や天気、ニュースや料理のレシピを教えてくれたり、音楽をかけてくれたり、併せて無線通信や赤外線通信を利用して家電を操作してくれたりします。アマゾンやグーグル、ライン製の製品もありますが、日本の大学の研究機関などが開発した各技術を組み合わせると同じようなことができることもあります。手が離せない時など声で操作できると便利なケースも多々あるでしょう。\n\"\"\"\n私は、鳥でも理解できるように簡単な言葉で言い換えてみることにしました。:\n\"\"\"\n',)
 
{
 "id": "cmpl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
 "object": "text_completion",
 "created": xxxxxxxx,
 "model": "davinci:2020-05-03",
 "choices": [
  {
   "text": " \nスマートスピーカーとは、音声認識と音声合成、その多くは、加えて人工知能という技術から成るスマート家電の1つです。音声認識には、自然言語処理も重要です。その結果、人の話し言葉を理解して音声操作もできるようになります。また、音声合成技術によってイントネーショ",
   "index": 0,
   "logprobs": null,
   "finish_reason": "length"
  }
 ]
}
debian:~$

 難しい文章でも要約してくれるSummarize for a 2nd grader

 お題自体が平易過ぎて要約しようがなかったのか、完全コピーですね...。

 max_tokens=60でそうだったので興味があって200にしてみましたが、同じ...。

debian:~$ cat openai_examples_summarize.py
import openai
import os
import json
 
openai.api_key = os.getenv("OPENAI_API_KEY")
#prompt="My second grader asked me what this passage means:\n\"\"\"\nJupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. It is named after the Roman god Jupiter.[19] When viewed from Earth, Jupiter can be bright enough for its reflected light to cast visible shadows,[20] and is on average the third-brightest natural object in the night sky after the Moon and Venus.\n\"\"\"\nI rephrased it for him, in plain language a second grader can understand:\n\"\"\"\n",
prompt="九官鳥が、この文章ってどういう意味?と聞いてきた。:\n\"\"\"\nスマートスピーカーとは、音声認識と音声合成、その多くは、加えて人工知能という技術から成るスマート家電の1つです。音声認識には、自然言語処理も重要です。その結果、人の話し言葉を理解して音声操作もできるようになります。また、音声合成技術によってイントネーションなども考慮しながら人の話し言葉を創り出します。これらを組み合わせることによってコンピュータやインターネットからの情報を基に日付や時刻、曜日や天気、ニュースや料理のレシピを教えてくれたり、音楽をかけてくれたり、併せて無線通信や赤外線通信を利用して家電を操作してくれたりします。アマゾンやグーグル、ライン製の製品もありますが、日本の大学の研究機関などが開発した各技術を組み合わせると同じようなことができることもあります。手が離せない時など声で操作できると便利なケースも多々あるでしょう。\n\"\"\"\n私は、鳥でも理解できるように簡単な言葉で言い換えてみることにしました。:\n\"\"\"\n",
 
response = openai.Completion.create(
 engine="davinci",
 prompt=prompt,
 temperature=0,
 max_tokens=200,
 top_p=1.0,
 frequency_penalty=0.0,
 presence_penalty=0.0,
 stop=["\"\"\""]
)
#print(prompt)
print(str(prompt))
print(" ")
print(response['choices'][0]['text'])
#print(str(response['choices'][0]['text']))
#print(json.dumps(response, ensure_ascii=False, indent=2))
debian:~$

 ソースはこんな感じ、環境変数OPENAI_API_KEYに自分のAPIキーが入っている前提です。

 そのままでは想定通り機能しないので一部オリジナルソースから変更しています。

 print()、もしくは、json出力しないと実行しても何も表示されないので何れかを追加する必要があり、後者用にimport jsonを追加。

 が、応答内容によっては、何れか一方では表示できないことがあり、他方を使用せざるを得ないこともあります。

 表示できないのが、print文なら、response配列を文字列にキャストすれば、たいていは凌げますが。

 応答文だけだとチャット状態にならず、問いかけ文も表示したいところ。

 が、サンプル通りだとprintやjson形式で出力しようにも問いかけ用の変数promptがスコープの範囲になく、スコープに入るようPythonの場合だとインデント階層を相応に上げたところで変数が登場(変数宣言)するようにする必要があります。

 また、promptの中身によっては、文字列にキャストしないとエラーとなるケースもありました。

ホーム前へ次へ