11
8

More than 1 year has passed since last update.

Google Patents Public Datasetsについて

Last updated at Posted at 2021-12-08

1.はじめに

2.Google Patents Public Datasetsについて

  • どんなデータが入っている?
     ここを見るとわかるように、US、CNをはじめとして各国の特許データの書誌事項(US公開系はfulltextまで)が入っています。
SQL

SELECT SUBSTR(application_number,0,2) AS CC,COUNT(*) as count
FROM `patents-public-data.patents.publications_202105`
GROUP BY CC
ORDER BY count DESC

結果

image.png

  • データもとは?
    ifiCLAIMSという特許データ提供会社が加工したデータをCreativeCommonsとして提供してBigQueryに格納されています。だいたい半年に1回ほどデータが更新されます。2021年12月13日時点の最新は2021年5月更新分です。

image.png

3.どうやって使うのか?

  • BigQueryというGoogleのサービスを使います。メリットなどはリンク先参照ですが、とにかく速いのが特徴。数千万件のレコードでも数秒で処理結果が帰って来ます。
     SQLという言語でデータベースからデータを取得&加工します。

  • 取得した後はcsvに吐き出した後、pythonなどで可視化します。
    ちなみにpandas-bgq等のライブラリを使えばpythonから直接BigQueryを動かすことができるので、大量データの処理はBigqueryにやらせて、処理結果をpythonで受け取ることもできます。

1例:出願人名検索

SELECT publication_number,
STRING_AGG(ipcs.code,",") as IPC,
STRING_AGG(appl,",") AS applicants
FROM `patents-public-data.patents.publications_202105`
,UNNEST(ipc) as ipcs
,UNNEST(assignee) as appl
WHERE appl LIKE '%トヨタ自動車%'
GROUP BY publication_number
結果 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/1083ba34-417c-6028-9341-55b7592d47c0.png)
1例:IPC検索

SELECT publication_number,
STRING_AGG(ipcs.code,",") as IPC,
STRING_AGG(appl,",") AS applicants
FROM `patents-public-data.patents.publications_202105`
,UNNEST(ipc) as ipcs
,UNNEST(assignee) as appl
WHERE ipcs.code LIKE '%G06Q%'
GROUP BY publication_number
結果:150万行でも3秒ほどで結果がかえってきます! ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385220/00bf7759-227a-ab16-e0a4-53f26d6f1cc1.png)

4.メリット/デメリット

(1)メリット

  • 大量のデータをさくっと扱える。
    下記のデータ収録範囲を見ればわかるように世界各国のデータが入っています。
    要約、タイトルまでであればだいたいすべて取れます。

  • (基本的に)無料
    ⇒自動で30,000円分の利用枠がもらえる上に、無料枠内であればずっと無料です。
     私はヘビーに使っていますが、BigQueryの利用料金は月3,000円くらいです。

(2)デメリット(プログラミングになじみのない人)

  • Gogle Clooud Platform(GCP)への登録が抵抗ある人がいるかも(クレカ要登録)
     ⇒上記のとおりかなりの部分が無料ですが、GCPのエコシステムが使えるので、登録してみてもよいと思います!

  • SQLを多少覚える必要あり
    SELECT,GROUPBYくらい覚えれば基本的な操作はできますので敬遠せずどうぞ。

  • データ収録の遅さ
     早く更新いてくれみたいなrequestが来るくらい遅いときがあります。

  • 請求項や明細書はUS公開のみ
     ⇒請求項や明細書をがりがり取りたい人は別のサービスUSEPJPのほうがいいかも。

5.利用例

(1)技術同士のつながりを可視化する

SQL

with rtable as (
  SELECT family_id as rappnum, SUBSTR(ipcs.code,0,4) as rcode
  FROM `patents-public-data.patents.publications_202101` ,
  UNNEST(ipc) as ipcs
  WHERE filing_date >= 20000101
  GROUP BY rappnum,rcode
),
ltable as (
  SELECT family_id as lappnum, SUBSTR(ipcs.code,0,4) as lcode
  FROM `patents-public-data.patents.publications_202101` ,
  UNNEST(ipc) as ipcs
  WHERE filing_date >= 20000101
  GROUP BY lappnum,lcode
),
cotable as (
  SELECT lappnum,rappnum,lcode,rcode 
  FROM ltable
  join rtable
  ON lappnum = rappnum 
)
SELECT lcode,rcode,COUNT(*) as count
FROM cotable
WHERE lcode != rcode
GROUP BY lcode,rcode

image.png

(2)世界一被引用回数が多い特許を調べる。

母集団等はこの記事を参照。

SQL
WITH bibtable as (
  SELECT
    pub.application_number AS appnum,
    pub.publication_number AS pubnum,
    pub.filing_date as appday,
    STRING_AGG(DISTINCT(applicants.name)) AS applicants ,
    STRING_AGG(DISTINCT(title.text)) AS texts,
    SUBSTR(STRING_AGG(ipcs.code),0,1) AS ipc4,
    STRING_AGG(DISTINCT(title.text)) AS title
  FROM `patents-public-data.patents.publications_201912` AS pub,
     UNNEST(title_localized) AS title,
     UNNEST(assignee_harmonized) as applicants,
     UNNEST(ipc) as ipcs
     GROUP BY appnum,pubnum,appday
)

SELECT 
  bibtable.pubnum,
  SUBSTR(bibtable.pubnum,0,2) AS appcountry,
  SUBSTR(STRING_AGG(DISTINCT(CAST(bibtable.appday AS STRING))),0,4) AS appyear,
  #STRING_AGG(DISTINCT(cit.application_number)) as appnum,
  #STRING_AGG(DISTINCT(cit.type)) AS cit_type,
  COUNT(main.application_number) AS total_cit_count,
  COUNT(DISTINCT(main.family_id)) AS unique_cit_count,
  STRING_AGG(DISTINCT(ipc4)) AS ipcs,
  STRING_AGG(DISTINCT(title)) AS titles,
  STRING_AGG(DISTINCT(applicants)) AS applicants,
  ARRAY_AGG(STRUCT(SUBSTR(ipcs.code,0,1) AS ipc_sec,
                   SUBSTR(main.publication_number,0,2) AS cc,
                   SUBSTR(CAST(main.filing_date AS STRING),0,4) AS year,
                   appls)
            ) AS fcit,
   #STRING_AGG(cit.type),STRING_AGG(DISTINCT(family_id))
FROM 
  `patents-public-data.patents.publications_201912` as main,
  UNNEST(main.citation) AS cit,
  UNNEST(main.ipc) AS ipcs,
  UNNEST(main.assignee) AS appls
LEFT JOIN bibtable
  ON cit.publication_number = bibtable.pubnum
WHERE SUBSTR(main.publication_number,0,2) IN ('US','JP','EP','CN','KR','WO') AND pubnum IS NOT NULL AND ipcs.first = TRUE
GROUP BY appnum,pubnum
ORDER BY total_cit_count DESC,pubnum DESC
Row pubnum appcountry appyear total_cit_count unique_cit_count ipcs titles applicants IPC_A IPC_B IPC_C IPC_D IPC_E IPC_F IPC_G IPC_H US JP EP KR CN WO
1 US-4683202-A US 1985 8996 4766 C Process for amplifying nucleic acid sequences CETUS CORP 1602 148 6116 13 1 12 1083 21 5542 0 1701 1 1 1751
2 US-4816567-A US 1983 8668 4748 C Recombinant immunoglobin preparations GENENTECH INC 3319 27 4354 8 0 3 954 3 4387 0 1878 0 1 2402
3 US-4683195-A US 1986 7174 3763 C Process for amplifying, detecting, and/or-cloning nucleic acid sequences CETUS CORP 1115 154 4853 1 1 11 1021 18 4593 0 1355 1 1 1224
4 US-5223409-A US 1991 4956 2523 C Directed evolution of novel binding proteins PROTEIN ENG CORP 1598 17 2833 10 0 2 493 3 2629 2 1092 1 0 1232
5 US-5523520-A US 1994 4759 3761 C Mutant dwarfism gene of petunia GOLDSMITH SEEDS INC 4585 1 162 0 2 1 5 3 4759 0 0 0 0 0

(3)有価証券報告書と特許データを同時に検索する

Google DataStudio(ダッシュボード作成ツール)と組み合わせれば、簡単に特許データのダッシュボードを作れます。※特許データ側にGoogle Patents Public Datasetsを利用。

image.png

6.他の例用例とか

PCA
CREATE OR REPLACE MODEL PROJECT.DATASET.pcadata
OPTIONS(MODEL_TYPE =  'PCA' ,
    NUM_PRINCIPAL_COMPONENTS = 5,
    SCALE_FEATURES = FALSE ,
    PCA_SOLVER = 'AUTO'
) AS (
SELECT publication_number, emb
FROM `patents-public-data.google_patents_research.publications_202105`,UNNEST(embedding_v1) as emb
);
  • 昔ちょっと流行ったBERT for Patentsもこのデータを利用して作成されてます。
  • 請求項の広さの推定とか
  • GPT-2で、タイトル→要約書、要約書→請求項1を生成するという技術でもこのデータが使われています。日本だとIIPなどありますが、アカデミックなとこでも使われてますね。
  • 同じpublic datasetの中に「google_patents_research」という、書誌事項+テキスト情報からembeddしたデータがはいっているDBもあります。1つ1つの公報が100次元くらいのベクトルになっているので、cosine類似度などでサクッと類似文献抽出が可能です。被引用文献リストもとれるので、引用分析の際に便利です。
11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8