J-PlatPat特許検索データの分析

　科学技術と関連するWebでの情報調査と分析を行っています。
特許データはJ-PlatPatで収集できます。J-PlatPatは独立行政法人工業所有権情報・研修館が提供する特許検索情報サイトです。特許庁のHPからもアクセスすることができます。

https://www.j-platpat.inpit.go.jp/

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をインストールします。
```python:install
# matplotlibでのplotに日本語を使えるように
!pip install japanize-matplotlib
```
# Import
```python: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ファイルを読み込んでデータフレームに代入
```python:read_csv
df = pd.read_csv('input/特実_国内文献.csv')
print(df.info())
```
各列の情報を確認します。
```python:出力結果
<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
```

# 公知年別の件数推移をプロット
```python:公知年別件数の関数定義
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))
```

```python:出力結果
   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
```
棒グラフでプロット
```python:Plot
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画像の保存
```
![patents_num.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481830/68df92ea-ae5e-a662-c879-78efb2210bc1.png)

# 出願人別件数ランキングをプロット
```python:出願人別件数の関数定義
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))
```
```python:出力結果
          applicant  number
0         キユーピー株式会社      86
1      株式会社Ｊ－オイルミルズ      75
2            日油株式会社      42
3    日清オイリオグループ株式会社      28
4  日清食品ホールディングス株式会社      19
5          昭和産業株式会社      19
6          不二製油株式会社      17
7        理研ビタミン株式会社      14
8         ミヨシ油脂株式会社      13
9         株式会社ＡＤＥＫＡ      12
```
横棒グラフでプロット
```python:Plot
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の保存
```
![applicant_num.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481830/017b5f0d-e8b6-8422-e93e-2a27d7413a54.png)


# FI分類コードランキング
　J-PlatPatの検索結果画面から分類コードランキングを表示できます。
表示された画面の表をエクセルやGoogleスプレッドシートにコピペして、csvファイルに保存することができます。このcsvファイルから読み込んで表で表示します。
```python:FI分類コードランキング
df_fi = pd.read_csv('input/分類コードランキング.csv', index_col=0)
display(df_fi)
```
食用油脂そのものの開発特許件数と、食用油脂を利用した食品（例えば、ベイカリー、スープ・ソース、肉類、コーヒー、チョコレート）の特許件数などが見て取れます。
![FIランキング.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481830/7d9003dc-7854-0401-7267-74ff7c17f8c0.png)