特許をパースする

不勉強にてxmlって
ブラウザで見られるけど何これ?
と以前思ってました。、、、恥ずかしい
よくよく調べるととても便利そうです。

で、xml形式の特許があると解析に使えそうと思うわけです。
集めてきた特許から、番号や、優先日、出願人とかの情報をささっと一覧にできると
いいよなーと思っていたこともあったので、

google先生に聞くとそんなことずいぶん前からなされているようでした。。。

さて、xml形式の特許が結構簡単に入手できる環境が整ったので
テスト的にスクリプトを作ってみました。
これは同じフォルダにある.xml形式のファイルをを全部読み込んで出願人とかをタブ区切りで出力します。
 フランス語とか、エンコでこけるのでアブスとは英語に限定しました。

相当行けてないスクリプト感ただよいますが、一応動いた。のでモチっと改良する予定

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from xml.etree.ElementTree import *
import sys, glob
patentlist = glob.glob("./*.xml")

f = open("pase_result.txt", "w")
f.write("PATENT_NO\tTITLE\tAPPLICANT\tABST\n")
    
for patent in patentlist:
    tree = parse(patent)
    root = tree.getroot()
    patent_no =  root[0][0][0][0].text+root[0][0][0][1].text+root[0][0][0][2].text
    title = root.findall(".//invention-title")[0].text
    applicants = root.findall(".//orgname")
    applicant = ""
    for  i in applicants:
        applicant += i.text+","
    abst = root.findall(".//abstract")
    for i in abst:
        if i.get("lang")  ==  "eng":
            l = i.getiterator("p")
            abstract = ""
            for i in l:
                abstract += i.text
            f.write("%s\t%s\t%s\t%s\n"%(patent_no, title, applicant, abstract))
        else: pass
   
f.close()

xmlの階層構造がそもそも勉強に使っていた例に比べるとかなり入り組んでいたのでまだ不具合たくさん出そうです。
がんばると、テキストなのでバラバラにして複数の出願人がどれくらいの頻度出るかとか、簡単に見れそうです。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中