pythonを利用した特許情報分析

課題コード別の課題・主要構成ファイル一括作成プログラム

/


# 課題コード別の課題・主要構成ファイル一括作成

# スクリプト1 指定した課題コードを含む公報データを一括して集めて書き出す

## フォルダ「課題・対策data」内の複数データから指定した課題コードを含む公報データを抽出し、

## 課題、主要構成を含む公報データをフォルダ「(検索コード)+課題・主要構成」に書き出す

import pandas as pd

import numpy as np

import os

import shutil

import openpyxl

# 絞り込む課題コードを指定

# キーボードから入力

cd1 = input(“絞り込む課題コード=”)    # 絞り込む課題コードを指定

ncd1=len(cd1)

print(“指定したコードの桁数=”,ncd1)

# 改良する技術内容を入力

test_txt = input(“改良したい現在の技術内容は、”)    # 改良する技術内容を入力

# test_txt = “点検すべき設備をリストにしてセンターに保持しておき、点検者がセンターから点検設備リストを携帯するモバイル端末に受信して画面に表示させ、表示にしたがって点検者が順番に点検を行い、点検結果をモバイル端末に入力すると、点検結果がセンターに送信される。”

# print(“改良したい現在の技術内容は、”,test_txt)

# 課題code表読み込み

kadaicode_data = pd.read_excel(“課題code化data.xlsx”,sheet_name=”課題code表”) 

kadaicode_data = kadaicode_data.dropna(how=”all”)    # 全列がNaNである行を削除

if ncd1==1:    # 階層1

    nclm_kw=1

    nclm_cd=2

if ncd1==3:    # 階層2

    nclm_kw=3

    nclm_cd=5

if ncd1==4:    # 階層3

    nclm_kw=6

    nclm_cd=8

if ncd1==6:    # 階層4

    nclm_kw=9

    nclm_cd=11

if ncd1==7:    # 階層5

    nclm_kw=12

    nclm_cd=14

if ncd1==9:    # 階層6

    nclm_kw=15

    nclm_cd=17

if ncd1==10:    # 階層7

    nclm_kw=18

    nclm_cd=20

if ncd1==12:    # 階層8

    nclm_kw=21

    nclm_cd=23

print(“課題KW数=”,nclm_kw)

print(“課題コード数=”,nclm_cd)

kw1_data = kadaicode_data.iloc[:,nclm_kw]    # 課題code表の「課題」読み込み

cd1_data = kadaicode_data.iloc[:,nclm_cd]    # 課題code表の「コード」読み込み

for n1,str1 in enumerate(cd1_data):

    if str1==cd1: 

        kw1=kw1_data[n1]

        break

print(“”)

print(“指定した課題コード=”,cd1,kw1)

print(“”)    

# 書き出すフォルダを作成

folder1=cd1+”課題・主要構成”

try:

    os.makedirs(folder1)

except FileExistsError:

    pass

# 課題code表読み込み

kadai_data = pd.read_excel(“課題code化data.xlsx”,sheet_name=”課題KW表”) 

kadai_data = kadai_data.dropna(how=”all”)    # 全列がNaNである行を削除

# print(“課題数=”,len(kadai_data))

# print(kadai_data[0:3])

# print(“”)

srkw_data = kadai_data.iloc[:,4]    # 課題KW表の「課題」読み込み

print(“課題KW表の課題数=”,len(srkw_data))

# print(srkw_data[0:3])

srcd_data = kadai_data.iloc[:,5]    # 課題コード表の「課題コード」読み込み

print(“課題KW表の課題コード数=”,len(srcd_data))

# print(srcd_data[0:3])

# 課題KW表から指定した課題コードcd1を含む課題と課題コードを読み込み

srcd_list=[]

srkw_list=[]

for n1,str1 in enumerate(srcd_data):

    # print(str1)

    if str(str1) !=”nan”:

        # print(str(str1[0:ncd1]),”=”,cd1)

        if str(str1[0:ncd1])==cd1:            

            if str1 not in srcd_list:

                # print(str1)

                srcd_list.append(str1)

                srkw_list.append(srkw_data[n1])

print(“検索対象課題数=”,len(srkw_list))

print(“検索対象課題[0:3]=”,srkw_list[0:3])

print(“検索対象課題コード数=”,len(srcd_list))

print(“検索対象課題コード[0:3]=”,srcd_list[0:3])

## 公報データ読み込み ##

# 「課題・対策data」内のフォルダ名取得

pass1=”/Users/yamaguchi/Desktop/課題・対策data”

files1=os.listdir(pass1)

# ソート

files1=sorted(files1)

# print(len(files1))

files1_list=[]

# 「」の下位フォルダに含まれているファイル名取得

# print(“読み込むファイル名”)

files_list=[]

for str1 in files1:

    # print(str1)

    if str(str1) !=”nan”:

        if “.xlsx” in str1:     # .xlsxを読み込む

            if str1[0:1] != “~”:

                # print(str1)

                files_list.append(str1)

print(“読み込むファイル数=”,len(files_list))               

print(“読み込むファイル名[0:5]=”,files_list[0:5])

# 三桁課題コードsrcd_listを含む公報データを読み込み、指定した階層1のフォルタに書き出す

# 三桁課題コードにより公報データを読み込み

# code0=“A01”

print(“”)

print(“課題コードの処理結果”)

code_list=[]

corpcd_list=[]

srcd_list2=[]

kw_list=[]

yobu_list=[]

shinki_list=[]

main_list=[]

pn_list=[]

ti_list=[]

abst_list=[]

bunya_list=[]

jurai_list=[]

kouka_list=[]

kadai_list=[]

claim1_list=[]

code_list=[]

kw_list=[]

mainwrd_list=[]

ntot=0

for n2, str2 in enumerate(files_list):    # files1_list=課題・対策data内のファイル名

    # corpcd=str2[0:3]    # ファイル名の先頭3文字を産業分野コードとする

    corpcd=str2    # ファイル名

    corp=”/” + str2    # 読み込むファイル名のパス

    pat_data=pd.read_excel(pass1+corp,sheet_name=”書誌・課題”)

    pat_data=pat_data.dropna(how=”all”)    # 全列がnanである行を削除    

    # 課題コード読み込み

    code_data=pat_data.iloc[:,18]

    # print(“公報課題コード=”,code_data[0:3])

    # 課題KW読み込み

    kw_data=pat_data.iloc[:,19]

    # print(“公報課題KW=”,kw_data[0:3])

   # 要部構成単語読み込み

    yobu_data=pat_data.iloc[:,20]

    # print(“要部構成単語=”,yobu_data[0:3])

    # 新規要素

    shinki_data=pat_data.iloc[:,21]

    # print(“要部構成単語=”,yobu_data[0:3])

    # 主要構成読み込み

    main_data=pat_data.iloc[:,24]

    # 公報番号欄読み込み

    patno_data=pat_data.iloc[:,0]   

    # 発明の名称読み込み

    ti_data=pat_data.iloc[:,3]

    # 要約読み込み

    abst_data=pat_data.iloc[:,9]

    # 利用分野読み込み

    bunya_data=pat_data.iloc[:,11]

    # 従来の技術読み込み

    jurai_data=pat_data.iloc[:,12]

    # 発明の効果読み込み

    kouka_data=pat_data.iloc[:,13]

    # 課題読み込み

    kadai_data=pat_data.iloc[:,14]

    # 請求項1読み込み

    claim1_data=pat_data.iloc[:,15]

    nhit=0

    nn_list=[]    # 検索対象の課題コードを含む公報Noを企業毎にリセット

    for n1, str1 in enumerate(srcd_list):    # scrd_list=検索対象課題コード

        code1=str1    # 課題コード

        #指定された課題コードを含む公報データを各ファイルから抽出        

        for n3, str3 in enumerate(code_data):

            if str(str3)==”nan”: str3=”Z99Z”

            str11=”;” + str1    # 照合のために検索対象の課題コードの先頭に”;”を仮付加

            str31=”;” + str3    # 照合のために公報の課題コードの先頭に”;”を仮付加

            if str11 in str31:    # 公報課題コード中に検索課題コードが含まれていれば

                if n3 not in nn_list:

                    nhit=nhit+1

                    ntot=ntot+1

                    code_list.append(str3)    # 課題コードのリスト

                    nn_list.append(n3)    # 読み込んだn3のリスト

                    corpcd_list.append(corpcd)     # ファイル名(産業分野)

                    srcd_list2.append(cd1 + “;” + kw1)                

                    kw_list.append(kw_data[n3])    # 課題KW                    

                    yobu_list.append(yobu_data[n3])    # 要部構成単語 shinki_data

                    shinki_list.append(shinki_data[n3])    # 新規要素

                    main_list.append(main_data[n3])    # 主要構成要件     

                    pn_list.append(patno_data[n3])    # 公報番号

                    ti_list.append(ti_data[n3])              # 発明の名称

                    abst_list.append(abst_data[n3])    # 要約

                    bunya_list.append(bunya_data[n3])    # 利用分野

                    jurai_list.append(jurai_data[n3])    # 従来の技術

                    kouka_list.append(kouka_data[n3])    # 発明の効果

                    kadai_list.append(kadai_data[n3])    # 課題

                    claim1_list.append(claim1_data[n3])    # 請求項1

    # print(n2+1,corpcd,”公報ヒット件数=”,nhit)

print(“”)

print(“ヒット件数の合計=”,ntot)

# df化

df01=pd.DataFrame(data=corpcd_list,columns=[“ファイル名”])

df02=pd.DataFrame(data=srcd_list2,columns=[“検索コード”])

df03=pd.DataFrame(data=code_list,columns=[“課題コード”])

df04=pd.DataFrame(data=kw_list,columns=[“課題KW”])

df05=pd.DataFrame(data=yobu_list,columns=[“要部構成単語”])

df06=pd.DataFrame(data=shinki_list,columns=[“新規要素”])

df07=pd.DataFrame(data=main_list,columns=[“主要構成”])

df08=pd.DataFrame(data=pn_list,columns=[“公報番号”])

df09=pd.DataFrame(data=ti_list,columns=[“発明の名称”])

df10=pd.DataFrame(data=abst_list,columns=[“要約”])

df11=pd.DataFrame(data=bunya_list,columns=[“利用分野”])

df12=pd.DataFrame(data=jurai_list,columns=[“従来の技術”])

df13=pd.DataFrame(data=kouka_list,columns=[“発明の効果”])

df14=pd.DataFrame(data=kadai_list,columns=[“課題”])

df15=pd.DataFrame(data=claim1_list,columns=[“請求項1”])

# 横に結合

df100=pd.concat([df01,df02,df03,df04,df05,df06,df07,df08,df09,df10,

                df11,df12,df13,df14,df15],axis=1)

# print(“df100=”,df100[0:1])

# dataframeをarrayに変換

arr1 = df100.values

# print(len(arr1))

# print(arr1)

if len(arr1)>0:

    # ブックを作成

    book=openpyxl.Workbook()

    # シートを追加

    sheetname=cd1+”課題・主要構成”

    ws=book.create_sheet(title=sheetname)    # cd1:検索コード

    # 不要な「sheet」を削除

    del book[“Sheet”]

    # 保存

    book.save(folder1+”/”+cd1+”課題・主要構成.xlsx”)    # cd1:検索コード

    # Excel(xlsx)に書く出し

    # ヘッダ作成

    header_list=[[“ファイル名”,”検索コード”,”課題コード”,”課題KW”,”要部構成単語”,”新規要素”,”主要構成”,

                  “公報番号”,”発明の名称”,”要約”,”利用分野”,”従来の技術”,”発明の効果”,”課題”,”請求項1″]]

    file_name=folder1+”/”+cd1+”課題・主要構成.xlsx”    # cd1:課題コード

    # print(“file_name=”,file_name)

    wb=openpyxl.load_workbook(file_name)

    def write_list_1d(sheet, l_1d, start_row, start_col):

        for y, row in enumerate(l_1d):

            for x, cell in enumerate(row):

                sheet.cell(row=start_row + y,

                    column=start_col + x,

                    value=l_1d[y][x])

    sheet=wb[cd1+”課題・主要構成”]    # cd1:課題コード

    write_list_1d(sheet,header_list,1,1)    # ヘッダを1行目1列目に書き込み

    write_list_1d(sheet,arr1,2,1)    # シート名「sheet」の1行目1列目からarr1の内容を書き込

    wb.save(file_name)    # ファイル「file_name」に保存

if len(arr1)>0:

    print(len(df100),”件書き出しました”)

    print(“”)

else:

    print(“該当公報はありませんでした”)

    print(“”)

print(cd1+kw1+”を含む課題、主要構成、書誌項目などをフォルダ「(検索コート゜)+課題・主要構成」に書き出しました”)

#/

# step2 指定した課題コードおよびその下位コードと対応する課題の書き出し

# 課題code表読み込み

kadaicode_data = pd.read_excel(“課題code化data.xlsx”,sheet_name=”課題code表”) 

kadaicode_data = kadaicode_data.dropna(how=”all”)    # 全列がNaNである行を削除

# 読み込みデータ全体をDataFrameに変換

df00 = pd.DataFrame(kadaicode_data)

# print(“df00=”,df00[0:1])

# dataframeをarrayに変換

arr2 = df00.values

# print(len(arr2),arr2[0:3])

# kwとcodeの読み取りカラムを指定

kwclm = [1,3,6,9,12,15,18,21]

cdclm = [2,5,8,11,14,17,20,23]

# 指定コードの長さからカラム位置を決定

nclm = cdclm[ncd1-2]

# print(nclm)

# 指定した課題コードとその下位の課題コードを抽出し、対応する課題を付加して書き出す

flg1=0

allcdkw_list = []

for n1,str1 in enumerate(arr2):

    if flg1 == 0:

        bcd = str(str1[nclm])

        # print(bstr)

        if bcd == cd1:

            bkw=str1[nclm-2]

            # print(bkw)

            cdkw = bcd + “;” + bkw

            # print(cdkw)

            allcdkw_list.append(cdkw)

            bcdkw = cdkw

            flg1=1

    if flg1 == 1:

        if str(str1[nclm]) != cd1:break

        for n2,nn1 in enumerate(kwclm):

            if str(str1[nn1]) != “nan”:

                bkw=str1[nn1]

                nn2 = cdclm[n2]

                bcd = str1[nn2]

                cdkw = bcd + “;” + bkw

                # print(cdkw)

                if bcdkw != cdkw: 

                    allcdkw_list.append(cdkw)

                    # print(str1[nn1])

                    break

print(“ヒットコード数=”,len(allcdkw_list))

print(“ヒットコード[0:3]”,allcdkw_list[0:3])

# 整形(ヒットコードの階層の差に応じ、ヒットコードの前にブランクを挿入)

ballcdkw_list = []

for n1,str1 in enumerate(allcdkw_list):

    bcdwd = str1.split(“;”)    # 分割

    bcd1 = str(bcdwd[0])

    # print(bcd1)

    if len(bcd1) – ncd1 == 0: wd = “”

    if len(bcd1) – ncd1 == 1: wd = “    ”

    if len(bcd1) – ncd1 == 2: wd = “    ”

    if len(bcd1) – ncd1 == 3: wd = “        ”

    if len(bcd1) – ncd1 == 4: wd = “        ”    

    if len(bcd1) – ncd1 == 5: wd = “            ”

    if len(bcd1) – ncd1 == 6: wd = “            ” 

    if len(bcd1) – ncd1 == 7: wd = “                ”

    if len(bcd1) – ncd1 == 8: wd = “                ” 

    if len(bcd1) – ncd1 == 9: wd = “                    ”

    if len(bcd1) – ncd1 == 10: wd = “                    ” 

    if len(bcd1) – ncd1 == 11: wd = “                        ”

    if len(bcd1) – ncd1 == 12: wd = “                        ”         

    if len(bcd1) – ncd1 == 13: wd = “                            ”

    if len(bcd1) – ncd1 == 14: wd = “                            ”

    bstr1 = wd + str(str1)

    # print(bstr1)

    ballcdkw_list.append(bstr1)

# print(“抽出課題=”,ballcdkw_list[0:3])

# DataFrame化

df30 = pd.DataFrame(data=ballcdkw_list, columns=[‘課題コード・課題リスト’])

# Excelとして書き出す前準備

# dataframeをarrayに変換

arr1 = df30.values

# 書き出すbookを指定

wb = openpyxl.load_workbook(file_name)

# シートを追加

ws = wb.create_sheet(title=”抽出課題コード・課題KW”)

# 保存

wb.save(file_name) 

# Exce(xlsx)に書き出し

# ヘッダ作成

header_list =[[‘抽出課題コード・課題KW’]]

def write_list_1d(sheet, l_1d, start_row, start_col):

    for y, row in enumerate(l_1d):

        for x, cell in enumerate(row):

            sheet.cell(row=start_row + y,

                       column=start_col + x,

                       value=l_1d[y][x])

sheet = wb[‘抽出課題コード・課題KW’]

write_list_1d(sheet, header_list, 1, 1)    # ヘッダを1行目1列目に書き込み

write_list_1d(sheet, arr1, 2, 1)    # シート名「sheet」の1行目1列目からarr1の内容を書き込み

wb.save(file_name)                     # ファイル「file_name」に保存

print(“”)

print(“「抽出コード・課題表.xlsx 」のシート「抽出課題コード・課題KW」に抽出した課題を書き出しました”) 

#/

# step3 類似度を算出

#「test_txt」に設定した技術内容と、「課題・主要構成」の要約とを比較して類似度を算出

import pandas as pd

import numpy as np

import openpyxl

import re

import difflib

import Levenshtein

from pprint import pprint

# cd1+”課題・主要構成”

# フォルダ「(KW)+課題・主要構成」のファイル「課題・主要構成.xlsx」を指定

file_name=folder1+”/”+cd1+”課題・主要構成.xlsx”    # keywrd:課題コード  

# 課題・主要構成データ読み込み

kdmain_data = pd.read_excel(file_name,sheet_name=cd1+”課題・主要構成”) 

kdmain_data = kdmain_data.dropna(how=”all”)    # 全列がNaNである行を削除

# print(“件数=”,len(kdmain_data))

# 読み込みデータ全体をDataFrameに変換

df00 = pd.DataFrame(kdmain_data)

# print(“df00=”,df00[0:1])

# 要約読み込み

abst_data = kdmain_data.iloc[:,9]    # 要約

# 要約をリスト化

print(“”)

abst_list = []

for str1 in abst_data:   # listに変換

    abst_list.append(str1)

# print(abst_list[0:5])

# 類似語を抽出(ゲシュタルトパターンマッチング)

# ゲシュタルトパターンマッチングにより類似度が0.8以上を類似語として除去

rgd_list =[]

for n1,str1 in enumerate(abst_list):

    # print(n1,str1)

    # ゲシュタルトパターンマッチング

    gestalt1 = difflib.SequenceMatcher(None, str1, str(test_txt)).ratio()

    # print(n1,gestalt1)    # 類似度

    rgd_list.append(gestalt1)

# print(len(rgd_list),”rgd_list=”,rgd_list)

print(“類似度[0:3]=”,rgd_list[0:3])

# DataFrame化

df1 = pd.DataFrame(data=rgd_list, columns=[‘類似度’])

# 横に結合

df30 =pd.concat([df00,df1], axis=1)

# ソート

# df30 = df30.sort_values(‘類似度’, ascending=True)    # 昇順

# 降順にソート

df30=df30.sort_values(‘類似度’,ascending=False)

# Excelとして書き出す前準備

# dataframeをarrayに変換

arr1 = df30.values

#  Excelブックに新規シートを追加

book = openpyxl.load_workbook(file_name)

# シートを追加

ws = book.create_sheet(title=”類似度”)

# 保存

book.save(file_name)

# file_nameを開く

wb = openpyxl.load_workbook(file_name)

# Exce(xlsx)に書き出し

# ヘッダ作成

header_list =[[‘ファイル名’,’検索コード’,’課題コード’,’課題KW’,’要部構成単語’,

               ‘新規要素’,’主要構成’,’公報番号’,’発明の名称’,

               ‘要約’,’利用分野’,’従来の技術’,’発明の効果’,’課題’,’請求項1′,

               ‘類似度’]]

def write_list_1d(sheet, l_1d, start_row, start_col):

    for y, row in enumerate(l_1d):

        for x, cell in enumerate(row):

            sheet.cell(row=start_row + y,

                       column=start_col + x,

                       value=l_1d[y][x])

# sheet = wb[‘類似度順_課題別_主要構成’]

sheet = wb[‘類似度’]

write_list_1d(sheet, header_list, 1, 1)    # ヘッダを1行目1列目に書き込み

write_list_1d(sheet, arr1, 2, 1)    # シート名「sheet」の1行目1列目からarr1の内容を書き込み

wb.save(file_name)                     # ファイル「file_name」に保存

print(“”)

# print(“「類似度順_課題別_主要構成.xlsx」のシート「類似度順_課題別_主要構成」に書き出しました”) 

print(“「抽出コード・課題表.xlsx」のシート「類似度」に書き出しました”) 

#/

# step4 サンプル公報データを抽出

##抽出課題毎に改良する技術内容との類似度が高いサンプル公報データを抽出する

print(“ヒットコード[0:3]”,allcdkw_list[0:3])

# 課題・主要構成データ読み込み

kdmain_data = pd.read_excel(file_name,sheet_name=”類似度”) 

kdmain_data = kdmain_data.dropna(how=”all”)    # 全列がNaNである行を削除

# print(“件数=”,len(kdmain_data))

# 課題コード読み込み

code_data = kdmain_data.iloc[:,2]    # 課題コード

# test_txtをリスト化

code_list = []

for str1 in code_data:   # listに変換

    code_list.append(str(str1))

# print(“課題コード[0:1]=”,code_list[0:1])

# 公報番号読み込み

patno_data = kdmain_data.iloc[:,7]    # 公報番号

# リスト化

patno_list = []

for str1 in patno_data:   # listに変換

    patno_list.append(str(str1))

print(“公報番号[0:1]=”,patno_list[0:1])

# 発明の名称読み込み

title_data = kdmain_data.iloc[:,8]    # 発明の名称

# リスト化

title_list = []

for str1 in title_data:   # listに変換

    title_list.append(str(str1))

print(“発明の名称[0:1]=”,title_list[0:1])

# 要約読み込み

abst_data = kdmain_data.iloc[:,9]    # 要約

# リスト化

abst_list = []

for str1 in abst_data:   # listに変換

    abst_list.append(str(str1))

print(“要約[0:1]=”,abst_list[0:1])

# 主要構成読み込み

main_data = kdmain_data.iloc[:,6]    # 主要構成

# リスト化

main_list = []

for str1 in main_data:   # listに変換

    main_list.append(str(str1))

# print(“主要構成[0:1]=”,main_list[0:1])

# 請求項1読み込み

clm1_data = kdmain_data.iloc[:,14]    # 請求項1

# リスト化

clm1_list = []

for str1 in clm1_data:   # listに変換

    clm1_list.append(str(str1))

# print(“請求項1[0:1]=”,clm1_list[0:1])

# 類似度読み込み

ruiji_data = kdmain_data.iloc[:,15]    # 類似度

# リスト化

ruiji_list = []

for str1 in ruiji_data:   # listに変換

    ruiji_list.append(str(str1))

print(“類似度[0:1]=”,ruiji_list[0:1])

# ヒットした課題コードを含み、類似度が高い公報データを抽出

hitcd_list = []

no_list = []

ti_list = []

ab_list = []

mn_list = []

cl_list = []

rj_list = []

for n1,str1 in enumerate(allcdkw_list):

    hitcd = str1.split(“;”)

    hitcd0 = hitcd[0] + “;”

    # print(hitcd0)

    n = 0

    for n2,str2 in enumerate(code_list):

        bstr2 =str2 + “;”

        # print(bstr2)

        if hitcd0 in bstr2:

            # print(n1,hitcd0,bstr2,ruiji_list[n2])

            hitcd_list.append(hitcd0)

            no_list.append(patno_list[n2])

            ti_list.append(title_list[n2])

            ab_list.append(abst_list[n2])

            mn_list.append(main_list[n2])

            cl_list.append(clm1_list[n2])

            rj_list.append(ruiji_list[n2])            

            n = n + 1

            if n == 3:break

# print(hitcd_list[0:1])

# print(no_list[0:1])

# print(ti_list[0:1])

# print(ab_list[0:1])

# print(mn_list[0:1])

# print(cl_list[0:1])

# print(rj_list[0:1])

## DataFrame化

df01 = pd.DataFrame(data=hitcd_list, columns=[“ヒットコード”])

df02 = pd.DataFrame(data=no_list, columns=[“公報番号”])

df03 = pd.DataFrame(data=ti_list, columns=[“発明の名称”])

df04 = pd.DataFrame(data=ab_list, columns=[“要約”])

df05 = pd.DataFrame(data=mn_list, columns=[“主要構成”])

df06 = pd.DataFrame(data=cl_list, columns=[“請求項1”])

df07 = pd.DataFrame(data=rj_list, columns=[“類似度”])

# 横に結合

df30 =pd.concat([df01,df02,df03,df04,df05,df06,df07], axis=1)

print(“抽出したサンプル公報数=”,len(df30),’件’)

# print(df30[0:1])

# Excelとして書き出す前準備

# dataframeをarrayに変換

arr1 = df30.values

#  Excelブックに新規シートを追加

book = openpyxl.load_workbook(file_name)

# file_name = “抽出コード・課題表.xlsx”

# シートを追加

ws = book.create_sheet(title=”sample公報”)

# 保存

book.save(file_name)

# file_nameを開く

wb = openpyxl.load_workbook(file_name)

# Exce(xlsx)に書き出し

# ヘッダ作成

header_list =[[‘ヒットコード’,’公報番号’,’発明の名称’,’要約’,

               ‘主要構成’,’請求項1′,’類似度’]]

def write_list_1d(sheet, l_1d, start_row, start_col):

    for y, row in enumerate(l_1d):

        for x, cell in enumerate(row):

            sheet.cell(row=start_row + y,

                       column=start_col + x,

                       value=l_1d[y][x])

sheet = wb[‘sample公報’]

write_list_1d(sheet, header_list, 1, 1)    # ヘッダを1行目1列目に書き込み

write_list_1d(sheet, arr1, 2, 1)    # シート名「sheet」の1行目1列目からarr1の内容を書き込み

wb.save(file_name)                     # ファイル「file_name」に保存

print(“”)

print(‘「抽出コード・課題表.xlsx」のシート「sample公報」にサンプル公報を書き出しました’)    

#/


print(“終了しました”)