특허 분석

4359 단어 Python
배경.
작업에 특허 조사가 필요하기 때문에 조사 대상의 특허 경향을 파악하기 위해python에서 분석용 간단한 스크립트를 만들어 봤다.
전제 조건
조사 대상 특허의 정보는 J-PlaatPat을 이용해 취득한다.J-PlatPat에서는 검색 결과에 대한 특허 정보를 csv 파일로 내보낼 수 있습니다.csv 파일을 통해 검색 결과를 출력하고 스크립트와 같은 디렉터리에 폴더를 설정하여 이 폴더 아래에 csv 파일을 저장합니다.이번 전문검색에서는 검색 옵션으로'전기차'and'AI'를 지정하고, 출원일을 2019/1/1 이후 얻은 특허 정보로 분석 대상으로 지정했다.
조사 대상 특허의 경향은 출원 건수의 매년 추이와 검색 키워드와 연관된 분야에서 특허 출원 활동에 주력하는 기업에서 포착됐다.전자는 matplotlib으로 도표를 표시했다.후자는 기업당 출원 특허 수를 계산해 출원 특허 수가 많은 톱10을 표시하기로 했다.
각본
만든 스크립트는 다음과 같습니다.
import csv
import glob
import matplotlib.pyplot as plt

def get_filename(dir):
    files = glob.glob(dir + "/*")
    return files

def get_allpatent(files):
    patent = []
    for file_name in files:
        csv_file = open(file_name, "r", encoding="utf-8", errors="", newline="")
        f = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
        header = next(f)
        length_line = len(header)
        for row in f:
            flag = 0
            for tmp_patent in patent:
                if len(row) < length_line:
                    flag = 1
                elif tmp_patent[1] == row[1]:
                    flag = 1
            if flag == 0:
                patent.append(row)
    for i in range(len(patent)):
        patent[i][5] = patent[i][5].replace('\u3000', '')
    return patent

def sort_y_down(data):
    for i in range(len(data)-1):
        for j in range(len(data)-i-1):
            if data[j][1] < data[j+1][1]:
                tmp_x = data[j+1][0]
                tmp_y = data[j+1][1]
                data[j+1][0] = data[j][0]
                data[j+1][1] = data[j][1]
                data[j][0] = tmp_x
                data[j][1] = tmp_y
    return data

def get_company(patent):
    company = []
    for tmp_patent in patent:
        flag = 0
        i = 0
        for tmp_company in company:
            if tmp_company[0] == tmp_patent[5]:
                company[i][1] += 1
                flag = 1
            i += 1
        if flag == 0:
            company.append([tmp_patent[5],1])
    sorted_company = sort_y_down(company)
    return sorted_company

def sort_x_up(data):
    for i in range(len(data)-1):
        for j in range(len(data)-i-1):
            if data[j][0] > data[j+1][0]:
                tmp_x = data[j+1][0]
                tmp_y = data[j+1][1]
                data[j+1][0] = data[j][0]
                data[j+1][1] = data[j][1]
                data[j][0] = tmp_x
                data[j][1] = tmp_y
    return data

def get_year(patent):
    year = []
    for tmp_patent in patent:
        flag = 0
        i = 0
        year_selected = tmp_patent[2][:4]
        for tmp_year in year:
            if tmp_year[0] == year_selected:
                year[i][1] += 1
                flag = 1
            i += 1
        if flag == 0:
            year.append([year_selected,1])
    sorted_year = sort_x_up(year)
    return sorted_year

if __name__ == '__main__':
# 分析対象特許フォルダ配下のcsvファイルより特許情報を取得
    files = get_filename("./分析対象特許")
    all_patent = get_allpatent(files)

# 年ごとの出願数をカウント
    year_count = get_year(all_patent)
    year = [a[0] for a in year_count]
    print(year_count)

# 企業の出願数をカウント
    company_count = get_company(all_patent)
    company = [a[0] for a in company_count]
    for i in range(10):
        print(company_count[i])

# グラフ表示
    plt.plot([a[0] for a in year_count],[a[1] for a in year_count],marker="o")
    plt.xticks(fontsize=7,rotation=30)
    plt.show()
결실
출력 결과는 다음과 같습니다.
[['2019', 999], ['2020', 347], ['2021', 76]]
['トヨタ自動車株式会社', 163]
['株式会社デンソー', 150]
['株式会社半導体エネルギー研究所', 68]
['エルジー・ケム・リミテッド', 63]
['ルノーエス.ア.エス.,日産自動車株式会社', 55]
['信越ポリマー株式会社', 45]
['ダイムラー・アクチェンゲゼルシャフト', 39]
['ソニーセミコンダクタソリューションズ株式会社', 31]
['本田技研工業株式会社', 30]
['株式会社すなおネット', 26]

최후
이번에 출원수 추이와 출원수가 많은 기업이 수출됐고, 특허 정보에도 개요 정보가 담겨 있어 MeCab 등 자연 언어 처리로 검색 키워드 이상에서 업체별 출원 경향을 추출할 수 있다.나도 시간을 내서 이것에 힘써 보고 싶다.

좋은 웹페이지 즐겨찾기