Microsoft Ignite 2021の基調講演で発表された「Azure OpenAI Service」。公式ページにある通りOpenAI でOpenAI APIを発行してもらったのでExpamplesにある49個のアプリから「Classification」をPythonから実行して試行錯誤します。
すでにOpenAIが持っている情報に対して、少しの教師を与えることで分類してくれるようです。
OpenAIのExpamplesにあるClassificationとは
公式の説明では「Classify items into categories via example.」とあり、“例(教師データ)を使ってアイテムをカテゴリーに分類”となっています。
公式のタグでは「Classification」と1つが付与されています。1つだけ付与されている珍しいExampleとなります。
プログラムを見るとエンジンは「Davinci」を使っています。
サンプルコードでは1行目に「The following is a list of companies and the categories they fall into(以下は企業とそのカテゴリーの一覧です。)」とあり、企業とそれに対するカテゴリー一覧が表示されているという説明が記述されています。
他のサンプルでも最初に「The following is(以下は)」で始まるものがあり、先頭にこの記述をすることでルールを推測し、モデルを作ってくれているようです。
早速使ってみた
公式にあるコードを参考に、好きな文章を入れられるように str という変数に会話を入れて実行できるようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
Python Code ‘’’ import os import openai openai.api_key = os.getenv("OPENAI_API_KEY") str = """The following is a list of companies and the categories they fall into Facebook: Social media, Technology LinkedIn: Social media, Technology, Enterprise, Careers Uber: Transportation, Technology, Marketplace Unilever: Conglomerate, Consumer Goods Mcdonalds: Food, Fast Food, Logistics, Restaurants FedEx:""" response = openai.Completion.create( engine="davinci", prompt=str, temperature=0, max_tokens=6, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0, stop=["\n"] ) print(response["choices"][0]["text"]) ‘’’ |
例として、Facebook、Linkedin、Uber、ユニリーバ、マクドナルドの5社を例に出し、Fedexがどのようなカテゴリーかを推測するモデルです。一般的な言葉だけでなく、企業名といった固有名詞も判断できることがわかります。
実行すると 、
Facebook:ソーシャルメディア、テクノロジー
LinkedIn:ソーシャルメディア、テクノロジー、エンタープライズ、キャリア
Uber:運送、テクノロジー、マーケットプレイス
ユニリーバ:コングロマリット(複合企業)、一般消費製品
マクドナルド:食事、ファーストフード、物流、レストラン
に対して 、
FedEx:Logistics(物流), Transportation(運送)
となります。
First Retailing:Consumer Goods(一般消費製品), Retail(小売り)
のような企業だけでなく最近上場したばかりの企業を調べても 、
日本調理機(株):Conglomerate, Consumer
のように結果が返ってきます。
対して、日本で一番時価総額が高いユニコーン企業である株式会社Preffered Networksでも結果が返ってこなかったので、基本的には上場しているかどうかということのようです。
他の分類も出来ます
最初の「companies」の部分を「actors」に変えて、情報を用意してみました。
Edward Regan Murphy: comedian, actor, singer
Charles Spencer Chaplin: comedian, filmmaker, composer
Sir Sean Connery: actor
Jim Carrey:
もっと語彙力があると様々な分類ができると思われますが、きちんと「comedian, actor」と返ってきました。
どんなときに使えるのか?
企業の分類は、よく知っている企業に対して多くのカテゴリーを付与し教師データとして用意することで、上場レベルであれば様々な国の企業のカテゴリーなどを詳細に取得することが出来ます。英語以外の国の企業についても簡単にカテゴリー分けをすることが出来るので、調査等を行うときに非常に役に立ちます。
上場企業や俳優の様に、ある程度インターネット上にもデータがあるものでいくつかの例を用意するだけで、カテゴリーを付与することが出来ます。ですので、似たような企業を探す・好みの映画を探す・似た傾向のアーティストを探すと行ったことが可能であり、検索エンジンとは違った視点でもデータ集めや活用をすることが出来ます。