1.ファミリを何とかする
特許には「ファミリ」というものがあります。
例えば1件の日本出願があればこれを元にして外国出願や分割出願を行えるようになっており、元出願、外国出願、分割出願らを人間の家族に例えてファミリ特許といっております。
ちょうど元の出願が山田太郎=世帯主であればその家族、子供の山田花子、山田健太の3人で1家族というのと同じです。人間も特許もそれぞれ独立した個ですが、人間を家族単位で扱うように特許もファミリ単位で扱いたい場合があります。
しかしながら専用ツール無しで(Excelで)特許をファミリ単位で扱おうとすると結構煩わしい作業が伴います。今回は少しでもファミリの取り扱いを容易にできるような処理方法を紹介したいと思います。
2.今回やろうとしていること
今回やろうとしていることは
1.1つの要素の中に改行コードで区分されて含まれている家族一人一人を別の要素に分離する
2.分離している家族を世帯主でまとめて再度改行コードで区分された1つの要素に統合する
1.1つの要素の中に改行コードで区分されて含まれている家族一人一人を別の要素に分離する
の2つです
まず特許の「世帯主」の要素と「世帯主を含む家族」の要素が対応付けられた配列(リスト)が準備されているものとします。
「家族」一人一人は改行コードで区分されているものとします。
このリストを以下のプログラムで処理します
fmlygr = [["JP1","JP1\r\nUS2\r\nEP3"],
["JP10","JP10\r\nJP11"]]
fmlylist = [[],[]]
index =0
for item in fmlygr:
fmly = fmlygr[index][1].splitlines() #改行コードで分割しリストfmlyに代入
for smpl in fmly:#家族ごとに複数の要素に分割
fmlylist.append([fmlygr[index][0],smpl])
index += 1
print(fmlylist)
上記プログラムでのポイントは「splitlines()」のコマンドです。このコマンドとその次の行のForループの組み合わせだけで家族の分離が簡単に実現できてしまいます。
2.分離している家族を世帯主でまとめて再度改行コードで区分された1つの要素に統合する
次のプログラムは1.のプログラム(家族を分離する)とは逆の処理(家族を統合する)になります。
import itertools
fmlylist =[["JP10", "JP11"], ["JP1", "EP3"], ["JP10", "JP10"],["JP1", "JP1"],["JP1", "US2"] ]
fmlygr = [[],[]]
for k, g in itertools.groupby(sorted(fmlylist, key=lambda x: x[0]), lambda x: x[0]):
idg='\r\n'.join(x[1] for x in g) #改行コード(\r\n)で区分してjoinでまとめる
fmlygr.append([k,idg])
print(fmlygr)
プログラムを実行すると、世帯主ごとに家族がまとまった形式に戻ります。
上記プログラムでのポイントは「世帯主のグループ化とソート」です。Pythonの機能であるイテレータツール(「itertools.groupby(sorted..」)の利用により世帯主のグループ化とソートの処理が非常に短いプログラムで実現できます。これもPythonの優れた機能の一つと思います。
3.おすすめの使い方
例えば何らかの特許を発見したとき、ファミリ特許も評価しないといけない場合、ファミリ特許を複数の要素に分離し、評価の情報を連結させた後、全ファミリ特許とその評価を同じエクセルの行に収める、といった処理が機械的にできるようになります。
(例えば以下のような形式にすることができる)
Pythonの優れた文字列処理機能をどう利用するかは知財業務の担当者にとって非常に研究しがいのあるテーマではないでしょうか。
以上何かのご参考になれば幸いです。