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

GPT-3のExamples/Keywordsを試してみた

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

GPT-3のExamples/Keywordsを試してみた

GPT-3のExamples/Keywordsを試してみた

2021/11/27

 OpenAIの自然言語処理モデルGPT-3のExamples/Keywordsを試してみました。

Keywords

debian:~$ python openai_examples_keywords.py
('バンクシー[生年月日未公表]は、英国を拠点とする匿名のアーティスト[路上芸術家]、政治活動家、映画監督。 スイスのアーティスト、マスター・オブ・ミラーズがバンクシーかもしれないという憶測があるが、本人は自身のウェブサイトでこれを否定している。 彼の政治および社会批評の作品は、世界各地のストリート、壁、および都市の橋梁に残されている。 バンクシーの作品は、アーティストとミュージシャンのコラボレーションを伴う、ブリストルのアンダーグラウンド・シーンから生まれた。',)
 
 そして、92年にアルバム"Reeling Volume I"を、様々なアーティストが参加した。 『The Last Billboard Project』は1994-96年におけるモラル・
debian:~$ python openai_examples_keywords.py
('バンクシー[生年月日未公表]は、英国を拠点とする匿名のアーティスト[路上芸術家]、政治活動家、映画監督。 スイスのアーティスト、マスター・オブ・ミラーズがバンクシーかもしれないという憶測があるが、本人は自身のウェブサイトでこれを否定している。 彼の政治および社会批評の作品は、世界各地のストリート、壁、および都市の橋梁に残されている。 バンクシーの作品は、アーティストとミュージシャンのコラボレーションを伴う、ブリストルのアンダーグラウンド・シーンから生まれた。',)
 
 バンクシーは、英国の新聞や雑誌において、彼の作品が政治的なメッセージを伝えること
debian:~$ python openai_examples_keywords.py
('バンクシー[生年月日未公表]は、英国を拠点とする匿名のアーティスト[路上芸術家]、政治活動家、映画監督。 スイスのアーティスト、マスター・オブ・ミラーズがバンクシーかもしれないという憶測があるが、本人は自身のウェブサイトでこれを否定している。 彼の政治および社会批評の作品は、世界各地のストリート、壁、および都市の橋梁に残されている。 バンクシーの作品は、アーティストとミュージシャンのコラボレーションを伴う、ブリストルのアンダーグラウンド・シーンから生まれた。',)
 
{
 "id": "cmpl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
 "object": "text_completion",
 "created": xxxxxxxx,
 "model": "davinci:2020-05-03",
 "choices": [
  {
   "text": " バンクシーは、自身の作品を「アートとしてのポスター」と呼び、彼の作品には、社会的なメッセ",
   "index": 0,
   "logprobs": null,
   "finish_reason": "length"
  }
 ]
}
debian:~$

 文中からキーワードとなり得るフレーズを抽出するKeywords

 後述のスクリプト内でtemperature値を低くすると文中からキーワードを洗い出し、高くすると検索インデックスを作るにあたって便利な関連キーワードを生成するとのこと。

 というわけで1回めは、temperature値を高めの1.0、2回めとJson形式出力の3回めは低め0.3で実行してみました。

 が、見事な応答ではあるものの、何れも次に続くと予想される文章を出力しているような?

debian:~$ cat openai_examples_keywords.py
import openai
import os
import json
 
openai.api_key = os.getenv("OPENAI_API_KEY")
#prompt="Text: Black-on-black ware is a 20th- and 21st-century pottery tradition developed by the Puebloan Native American ceramic artists in Northern New Mexico. Traditional reduction-fired blackware has been made for centuries by pueblo artists. Black-on-black ware of the past century is produced with a smooth surface, with the designs applied through selective burnishing or the application of refractory slip. Another style involves carving or incising designs and selectively polishing the raised areas. For generations several families from Kha'po Owingeh and P'ohwhóge Owingeh pueblos have been making black-on-black ware with the techniques passed down from matriarch potters. Artists from other pueblos have also produced black-on-black ware. Several contemporary artists have created works honoring the pottery of their ancestors.\n\nKeywords:",
prompt="バンクシー[生年月日未公表]は、英国を拠点とする匿名のアーティスト[路上芸術家]、政治活動家、映画監督。 スイスのアーティスト、マスター・オブ・ミラーズがバンクシーかもしれないという憶測があるが、本人は自身のウェブサイトでこれを否定している。 彼の政治および社会批評の作品は、世界各地のストリート、壁、および都市の橋梁に残されている。 バンクシーの作品は、アーティストとミュージシャンのコラボレーションを伴う、ブリストルのアンダーグラウンド・シーンから生まれた。"
 
response = openai.Completion.create(
 engine="davinci",
 prompt=prompt,
 temperature=0.3,
 max_tokens=60,
 top_p=1.0,
 frequency_penalty=0.8,
 presence_penalty=0.0,
 stop=["\n"]
)
#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の中身によっては、文字列にキャストしないとエラーとなるケースもありました。

ホーム前へ次へ