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 という変数に会話を入れて実行できるようにします。
1Python Code
2
3‘’’
4
5import os
6
7import openai
8
9
10
11openai.api_key = os.getenv("OPENAI_API_KEY")
12
13str = """The following is a list of companies and the categories they fall into
14
15
16
17Facebook: Social media, Technology
18
19LinkedIn: Social media, Technology, Enterprise, Careers
20
21Uber: Transportation, Technology, Marketplace
22
23Unilever: Conglomerate, Consumer Goods
24
25Mcdonalds: Food, Fast Food, Logistics, Restaurants
26
27FedEx:"""
28
29
30
31response = openai.Completion.create(
32
33 engine="davinci",
34
35 prompt=str,
36
37 temperature=0,
38
39 max_tokens=6,
40
41 top_p=1.0,
42
43 frequency_penalty=0.0,
44
45 presence_penalty=0.0,
46
47 stop=["\n"]
48
49)
50
51
52
53print(response["choices"][0]["text"])
54
55‘’’例として、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」と返ってきました。
どんなときに使えるのか?
企業の分類は、よく知っている企業に対して多くのカテゴリーを付与し教師データとして用意することで、上場レベルであれば様々な国の企業のカテゴリーなどを詳細に取得することが出来ます。英語以外の国の企業についても簡単にカテゴリー分けをすることが出来るので、調査等を行うときに非常に役に立ちます。
上場企業や俳優の様に、ある程度インターネット上にもデータがあるものでいくつかの例を用意するだけで、カテゴリーを付与することが出来ます。ですので、似たような企業を探す・好みの映画を探す・似た傾向のアーティストを探すと行ったことが可能であり、検索エンジンとは違った視点でもデータ集めや活用をすることが出来ます。