科学技術と関連するWebでの情報調査と分析を行っています。
特許データはJ-PlatPatで収集できます。J-PlatPatは独立行政法人工業所有権情報・研修館が提供する特許検索情報サイトです。特許庁のHPからもアクセスすることができます。
J-PlatPatでは、検索結果をcsvファイルにダウンロードできます。また、検索結果の分類コード(FI)ランキングを画面上で確認でき、コピペでスプレッドシートに保存できます。
さらに、検索された各特許は、全文をPDFファイルとしてダウンロードしたり、請求項と詳細な説明は画面上開いてコピペすることができます。
この記事では、J-PlatPatでの検索結果情報から、
- 公知年別件数推移
- 出願人別件数ランキング
- FI分類コード別件数ランキング
をPythonで可視化しました。
ダウンロードするcsvには要約を含めることもできますので、自然言語処理を用いた分析や機械学習モデルの作成もできます。さらに、各特許の請求項と関連する文章を詳細な説明から抽出することもできるかもしれません。これらの検討は別の記事で紹介します。
今回は、以前属していた食品企業に関係の深い「食用油脂」の特許情報について検索しました。
J-PlatPat検索条件
検索サイト: J-PlatPat
検索論理式: [食用油脂/TI+食用油脂/AB+食用油脂/CL+食用油脂/BI]
TI:題名、AB:要約、CL:請求項、BI:書誌的事項
日付指定: 公知日、20150101〜
検索件数: 500件 *csvにダウンロードできるのは500件まで。超えた場合は、公知年を分けて検索ダウンロードして、結合して分析します。
開発環境
Google Colaboratory ノートブック
python
ランタイムのタイプ: ハードウェア アクセラレータ(None)
Install
プロット作成で日本語が使えるようにjapanize-matplotlibをインストールします。
# matplotlibでのplotに日本語を使えるように
!pip install japanize-matplotlib
Import
import pandas as pd
import collections #重複数のカウントに
import matplotlib.pyplot as plt
import japanize_matplotlib
import seaborn as sns
sns.set(font="IPAexGothic")
J-PlatPatからダウンロードしたcsvファイルを読み込んでデータフレームに代入
df = pd.read_csv('input/特実_国内文献.csv')
print(df.info())
各列の情報を確認します。
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 500 entries, 0 to 499
Data columns (total 14 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 文献番号 500 non-null object
1 出願番号 500 non-null object
2 出願日 500 non-null object
3 公知日 500 non-null object
4 発明の名称 500 non-null object
5 出願人/権利者 500 non-null object
6 FI 500 non-null object
7 要約 500 non-null object
8 公開番号 489 non-null object
9 公告番号 0 non-null float64
10 登録番号 294 non-null object
11 審判番号 47 non-null object
12 その他 72 non-null object
13 文献URL 500 non-null object
dtypes: float64(1), object(13)
memory usage: 54.8+ KB
None
公知年別の件数推移をプロット
def yearnum(yn):
# 列'公知年’を作成
yn['公知年'] = yn['公知日'].apply(lambda x: int(str(x)[0:4]))
# '公知年'と件数をデータフレームに
c = collections.Counter(df['公知年'])
yn_c = pd.DataFrame.from_dict(c, orient='index').reset_index() # データフレームに変換
yn_c = yn_c.rename(columns={'index': 'year', 0: 'number'})
yn_c = yn_c.sort_values('year')
yn_c = yn_c.reset_index(drop=True)
return yn_c
print(yearnum(df))
year number
0 2015 64
1 2016 70
2 2017 59
3 2018 64
4 2019 86
5 2020 67
6 2021 48
7 2022 42
棒グラフでプロット
df_c = yearnum(df)
fig, ax = plt.subplots(figsize=(12, 6))
ax.bar(df_c['year'], df_c['number'])
ax.set_title('食用油脂に関する特許件数推移', fontsize=16)
#ax.set_xticklabels(df_c['year'], rotation=20, ha='right')
ax.set_xlabel('公知年', size = 14, weight = "light")
ax.set_ylabel('件数', size = 14, weight = "light")
plt.show()
fig.savefig("output/patents_num.png") #plot画像の保存
出願人別件数ランキングをプロット
def applicantnum(an):
# '出願人/権利者'と件数をデータフレームに
c_applicant = collections.Counter(an['出願人/権利者'])
applicant_most = c_applicant.most_common(10)
an_c = pd.DataFrame(applicant_most, columns =['applicant', 'number'])
return an_c
print(applicantnum(df))
applicant number
0 キユーピー株式会社 86
1 株式会社J-オイルミルズ 75
2 日油株式会社 42
3 日清オイリオグループ株式会社 28
4 日清食品ホールディングス株式会社 19
5 昭和産業株式会社 19
6 不二製油株式会社 17
7 理研ビタミン株式会社 14
8 ミヨシ油脂株式会社 13
9 株式会社ADEKA 12
横棒グラフでプロット
df_c = applicantnum(df)
fig, ax = plt.subplots(figsize=(10, 6))
ax.barh(df_c['applicant'], df_c['number'])
ax.set_title('食用油脂に関する出願人特許件数ランキング', fontsize=16)
#ax.set_xticklabels(df_c['year'], rotation=20, ha='right')
ax.set_xlabel('件数', size = 14, weight = "light")
ax.set_ylabel('出願人', size = 14, weight = "light")
ax.invert_yaxis()
plt.tight_layout()
plt.show()
fig.savefig("output/applicant_num.png") #plotの保存
FI分類コードランキング
J-PlatPatの検索結果画面から分類コードランキングを表示できます。
表示された画面の表をエクセルやGoogleスプレッドシートにコピペして、csvファイルに保存することができます。このcsvファイルから読み込んで表で表示します。
df_fi = pd.read_csv('input/分類コードランキング.csv', index_col=0)
display(df_fi)
食用油脂そのものの開発特許件数と、食用油脂を利用した食品(例えば、ベイカリー、スープ・ソース、肉類、コーヒー、チョコレート)の特許件数などが見て取れます。