ソフトウェア
GPT-3のExamples/ESRB ratingを試してみた
フリーソフト・オープンソースを活用しよう。
GPT-3のExamples/ESRB ratingを試してみた
GPT-3のExamples/ESRB ratingを試してみた
2021/11/22
OpenAIの自然言語処理モデルGPT-3のExamples/ESRB ratingを試してみました。
ESRB rating
debian:~$ python openai_examples_esrb_rating.py
("次の文章におけるCERO区分を教えて:\n\n年齢16歳:",)
debian:~$ python openai_examples_esrb_rating.py
("次の文章におけるCERO区分を教えて:\n\n暴力的、性的、反社会的で目も当てられないひどい内容:",)
D
debian:~$ python openai_examples_esrb_rating.py
("次の文章におけるCERO区分を教えて:\n\n暴力的、性的、反社会的で目も当てられないひどい内容:",)
{
"id": "cmpl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"object": "text_completion",
"created": xxxxxxxx,
"model": "davinci:2020-05-03",
"choices": [
{
"text": " CERO Z",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}
]
}
debian:~$
該当する自然言語の文章から難易度や低年齢者保護の観点からゲームや動画などのエンタメの年齢制限など等級管理を行なう米国の国家機関かつ勧告ESRB等級を分類するESRB rating。
日本では、CEROがこれに当たるらしい。
何回かやれば違う結果が得られる可能性もあるのかもしれないものの、今回、日本の規格CEROの評価に関する問いに対し、年齢を示したのみでは応答なしでしたが、傾向?を投げかけたところ、応答がありました。
結果としてDやCERO Zと返してきたわけですが、リンク先によれば、Dなら[17歳以上対象]、Zなら[18才以上のみ対象]とのことなので後者が妥当な気がしますが、日本の規格まで知ってるのか?どうやら妥当な模様。
Dと返ってきたので後述のスクリプト内でオリジナルではmax_tokens=60を6に減らしたら今度は応答が、CERO Z、60とあったからには、もっと情報を得られることもあるのかも?
debian:~$ cat openai_examples_esrb_rating.py
import openai
import os
import json
openai.api_key = os.getenv("OPENAI_API_KEY")
#prompt="Provide an ESRB rating for the following text:\n\n\"i'm going to blow your brains out with my ray gun then stomp on your guts.\"\n\nESRB rating:",
#prompt="次の文章におけるCERO区分を教えて:\n\n\年齢16歳",
prompt="次の文章におけるCERO区分を教えて:\n\n暴力的、性的、反社会的で目も当てられないひどい内容:"
response = openai.Completion.create(
engine="davinci",
prompt=prompt,
temperature=0.7,
max_tokens=6,
top_p=1.0,
frequency_penalty=0.0,
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の中身によっては、文字列にキャストしないとエラーとなるケースもありました。
関連リンク