1.はじめに
技術分野(特許分類=IPC)のつながりをマクロに把握したいなと思い検討しました。
plotapiというchord diagramを作成するAPIを契約し(年間11,000円くらい)、これを使って見てみることに。
2.BigQueryで共起データ作成
まずはIPCのつながりを把握するために毎度おなじみのGoogle Patents Public Datasetsを使ってIPCの共起データを作成。] 2000年以降の出願に絞り込みます。IPCは4桁(メイングループ)を利用します。
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
25万件(つながり)ほど抽出。これをcsvで吐き出しておきます。
3 可視化
matrixのデータ(df.values.tolist()で2重配列にしたやつ)+ラベル用の配列が最低限必要です。
IPC4桁でも1000分野あり全部可視化しきれないため、共起の頻度で10000回以上共起している技術分野同士に絞り込みます。
edges = pd.read_csv("~~吐き出したcsv~~.csv")
matrix = edges[edges['count']>=10000].pivot_table(index='lcode',columns='rcode',values='count',fill_value=0)
matrix2 = matrix.values.tolist()
names = matrix.index.tolist()
matrixはこんな形に
⇓これを実行すれば出力されます。
Chord(matrix2,names,font_size_large="7px").show()
ハイライトしたところ
4.技術つながりを見る
A61K,A61Pといった医薬系が多い(同じセクションA内のつながりが多い様子だけど)
C07,C08(有機化学系)は上記のA61~とも太く繋がっている様子。
H01L(半導体)もかなりいろんなところと繋がっている。
H04~(通信系)はG06~(ソフトウェアなど)とのつながりがやはり強い
C12N(生化学)とG01N(人工知能とか)はバイオの遺伝子解析系だろう。
H04N(画像通信,例.テレビジョン)とB41J(タイプライタ)との繋がりは・・・プリンタ!
時系列の変化なども見れるように進化させていこうと思います。
Comments