見出し画像

特許ベクトルデータベースを作りたい

はじめに


OpenAIのEmbbedingsというAPIを使うとテキストをベクトル化できますので、これで特許のベクトルデータベースを作りたいと思います。

まず、Pythonでベクトル化データを作り、それを、ChatGPTのCode interpreterで視覚化等したいと思います。

Pythonによる処理

データ


今回は、このデータのAbstract(要約)をベクトル化します。ビール関係の特許423件となります。

プログラム

ベクトル化プログラムは、以下を参考にしました。

https://platform.openai.com/docs/guides/embeddings/use-cases

from openai import OpenAI
client = OpenAI()

def get_embedding(text, model="text-embedding-3-small"):
   text = text.replace("\n", " ")
   return client.embeddings.create(input = [text], model=model).data[0].embedding

df['ada_embedding'] = df.combined.apply(lambda x: get_embedding(x, model='text-embedding-3-small'))
df.to_csv('output/embedded_1k_reviews.csv', index=False)

処理結果は以下となります。Abstract_vec列に要約をベクトル化した数値が格納されています。処理時間は2分程度でした。

このままPythonで処理するのもよいですが、プログラミングが大変ですので、以降の処理は、ChatGPTにて実行します。

ChatGPTによる処理


Patent_vec.xlsxをChatGPTにアップロードして、以下のプロンプトを入力します。

プロンプト

Abstract_vecをPCAにより視覚化してください。

ChatGPTの出力

このような感じで散布図が出力されます。次にクラスタリングしてみます。

プロンプト

K-means法によりクラスタ化してください

ChatGPTの出力

5つのクラスタに分割されています。クラスタ数は人間の方で指定できるようですが、今回は提案されるがままとしました。

次に、せっかくクラスタに分けましたので、データーフレームの方に出願ごとに該当クラスタを付与してもらいます。これにより分析に利用しやすくします。

プロンプト

データフレームに該当クラスタの列を追加してください。

ChatGPTの出力

このような感じで、データフレームにCluster列が追加されています。

次に出願人ごとの散布図を作成してもらいます。

プロンプト

applicantごとの散布図を生成願います。

ChatGPTの出力

少々見にくいので、出願人ごとの図にしてもらいます。

プロンプト

applicantごとに別々の散布図にしてください。

ChatGPTの出力

見やすくはなりましたでしょうか?

次に出願年毎の散布図を作成してもらいます。

プロンプト

出願年ごとの散布図をアニメーションで作成してください

ChatGPTの出力

その他

クラスタごとの出願年ごとの出願件数推移も出力できます。

クラスタごとの出願人ごとの出願件数も出力できます。

まとめ


ベクトル化できれば、あとは、ChatGPTでノンプログラムでいろいろ分析処理ができることがわかりました。

ベクトル化自体も、短いプログラムを書けばすみますので、昔に比べれば、ベクトル化分析の敷居も下がったと思います。

この記事が気に入ったらサポートをしてみませんか?