OpenAIの「Classification」で色々なデータを分類してみた – 日本一詳しいOpenAI入門

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」と返ってきました。

どんなときに使えるのか?

企業の分類は、よく知っている企業に対して多くのカテゴリーを付与し教師データとして用意することで、上場レベルであれば様々な国の企業のカテゴリーなどを詳細に取得することが出来ます。英語以外の国の企業についても簡単にカテゴリー分けをすることが出来るので、調査等を行うときに非常に役に立ちます。

上場企業や俳優の様に、ある程度インターネット上にもデータがあるものでいくつかの例を用意するだけで、カテゴリーを付与することが出来ます。ですので、似たような企業を探す・好みの映画を探す・似た傾向のアーティストを探すと行ったことが可能であり、検索エンジンとは違った視点でもデータ集めや活用をすることが出来ます。

この記事を書いた人

azure-recipe-user