レポート作成

各章の説明と作成したコメントとを組み合わせてレポートの体裁にまとめる。


サンプルスクリプト

# スクリブト51 第一章 調査の概要を書き出し

## テーマ名からツールソフトまでのコメントを作成し、書き出す。


import pandas as pd

import openpyxl

import docx

from docx import Document

from docx.enum.text import WD_ALIGN_PARAGRAPH

from matplotlib import pyplot as plt


# 図表Noを初期化

nfig = 0

fig_n = '図' + str(nfig)

nhyo = 0

hyo_n = '表' + str(nhyo)


# テーマ名読み込み

thema_data = pd.read_excel('テーマ設定data.xlsx',sheet_name='テーマ名')

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

thema01 = thema_data.iloc[:,0]

thema = thema01[0]

print('テーマ名=',thema)



# 年別発行件数読み込み

pd_data = pd.read_excel('trans_data.xlsx',sheet_name='年別発行件数集計')


# 発行年読み込み

pd_data1 = pd_data.iloc[:,0]

py_list = []

for str1 in pd_data1:

py_list.append(int(str1))

# print(py_list)


# 開始年と終了年を判定

pystt = min(py_list) # minデータを抽出

pyend = max(py_list) # maxデータを抽出

print("開始年=",pystt, "終了年=",pyend)

if int(pyend) > 2100:

print("公報発行年が2100年以降になっています")

sys.exit()

# 開始年と終了年

# print("開始年=",pystt, "終了年=",pyend)

if npmend > 0:

period = str(pystt) + '年1月1日〜' + str(pyend) + '年' + str(monthend) + '月末'

else:

period = str(pystt) + '年1月1日〜' + str(pyend) + '年12月31日'


# '調査目的読み込み

mokuteki_data = pd.read_excel('テーマ設定data.xlsx',sheet_name='調査目的')

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

# 読み込み

mokuteki01 = mokuteki_data.iloc[:,0]

mokuteki =''

for str1 in mokuteki01:

str1 = str1 + '\n'

mokuteki = mokuteki + str1

print('調査目的=',mokuteki)


# 初期化

doc = docx.Document()

npara = 0


para = doc.add_paragraph('特許出願動向の調査レポート\n')

para.alignment = WD_ALIGN_PARAGRAPH.CENTER # 中央揃え

para.runs[npara].font.size = docx.shared.Pt(16) # 16ポイント

para.runs[npara].underline = True # 下線

para.runs[npara].bold = True # ポールド


para = doc.add_paragraph('第一章 調査の概要')

para.alignment = WD_ALIGN_PARAGRAPH.LEFT # 左揃え

para.runs[npara].font.size = docx.shared.Pt(16)

para.runs[npara].bold = True


para = doc.add_paragraph('1-1 調査テーマ')

para.runs[npara].font.size = docx.shared.Pt(14)

para.runs[npara].bold = True

para = doc.add_paragraph('  ' + thema + 'の特許出願動向')

para.runs[npara].font.size = docx.shared.Pt(14)


para = doc.add_paragraph('1-2 調査目的')

para.runs[npara].font.size = docx.shared.Pt(14)

para.runs[npara].bold = True

wrd = mokuteki

para = doc.add_paragraph(wrd)


para = doc.add_paragraph('1-3 調査対象')

para.runs[npara].font.size = docx.shared.Pt(14)

para.runs[npara].bold = True

wrd1 = ' 対象公報:公開特許公報\n' # \nで改行を追加

wrd21 = period + 'の発行\n'

wrd2 = ' 対象期間:' + wrd21

wrd3 = ' 対象技術 : ' + thema

wrd =wrd1 + wrd2 + wrd3

para = doc.add_paragraph(wrd)


para = doc.add_paragraph('1-4 調査手法')

para.runs[npara].font.size = docx.shared.Pt(14)

para.runs[npara].bold = True

wrd1 = ' 以下の手順により、対象公報の抽出、コード化、グラフ化、分析を行なっている。\n'

wrd2 = ' なお、コード化、グラフ化、分析コメントの作成、本レポートの作成については、すべてPythonにより自動作成している。\n'

wrd = wrd1 + wrd2

para = doc.add_paragraph(wrd)


wrd = '1-4-1 検索に使用するIPC、キーワードの抽出'

para = doc.add_paragraph(wrd)

para.runs[npara].bold = True

wrd1= ' 次の手順により、検索に使用するIPC、キーワードを抽出する。\n'

wrd2 = '① インターネットにより調査テーマに関するキーワードを調べる。\n'

wrd3 = '② 調べたキーワードを検索語句としてキーワード検索により公報を予備検索する。\n'

wrd4 = '③ 上記①と②の検索結果(発明の名称、要約、特許分類(IPC,FI,FT))を整理し、検索に使用するIPCとキーワードを抽出する。\n'

wrd = wrd1 + wrd2 + wrd3 + wrd4

para = doc.add_paragraph(wrd)


wrd = '1-4-2 検索式の作成'

para = doc.add_paragraph(wrd)

para.runs[npara].bold = True

wrd = ' 抽出したIPCとキーワードを組み合わせて検索式を作成する。'

para = doc.add_paragraph(wrd)


wrd = '1-4-3 ノイズ公報の除去'

para = doc.add_paragraph(wrd)

para.runs[npara].bold = True

wrd = ' 書誌事項に対してキーワード検索を行を行なってノイズ公報を除去する。'

para = doc.add_paragraph(wrd)


wrd = '1-4-4 コード付与'

para = doc.add_paragraph(wrd)

para.runs[npara].bold = True

wrd1 = ' Pythonを利用して独自に作成したコード化プログラムによりコード化する。\n'

wrd2 = ' コード化の基本的な処理では、出現頻度が高いIPCを抽出し、抽出したIPCに関連が深いIPCをまとめてコードを付与している。'

wrd =wrd1 + wrd2

para = doc.add_paragraph(wrd)


wrd = '1-4-5 グラフ化および分析'

para = doc.add_paragraph(wrd)

para.runs[npara].bold = True

wrd0 = ' 分析用公報データの書誌情報と、各公報に付与した分類コードとから以下の各種集計表とグラフを作成し、本テーマの出願動向を分析している。\n'

wrd0_1 = '  ※ 上記書誌情報の内容は、「公報番号、出願番号、発行日、発明等の名称、出願人・権利者、発明者、IPC、FI、Fターム、要約」である。\n'

wrd1 ='① 全体の出願状況\n'

wrd1_1 = ' ・公報発行件数の年別推移(縦棒グラフ)\n'

wrd2 = '② 出願人ベースの分析\n'

wrd2_1 = ' ・出願人別発行件数の割合(集計表、円グラフ)\n '

wrd2_2 = ' ・出願人数の年別推移(縦棒グラフ)\n'

wrd2_3 = '  ・出願人別発行件数の年別推移(折線グラフ、バブルチャート)\n'

wrd3 = '③ メイングループの分析(縦棒グラフ、バブルチャート)\n'

wrd3_1 = ' ・メイングループ別発行件数の分布(縦棒グラフ)\n'

wrd3_2 = ' ・メイングループ別発行件数の年別推移(バブルチャート)\n'

wrd4 = '④ 新規参入企業(バブルチャート)\n'

wrd5 = '⑤ 最新発行のサンプル公報の概要(書誌リスト、概要)\n'

wrd6 = '⑥ 分類コードベースの分析\n'

wrd6_1 = ' ・分類コード別の発行件数割合(集計表、円グラフ)\n'

wrd6_2 = ' ・分類コード別発行件数の年別推移(折線グラフ、バブルチャート)\n'

wrd7 = '⑦ コード別の詳細分析\n'

wrd7_1 = ' ・一桁コード別発行件数の年別推移(縦棒グラフ)\n'

wrd7_2 =' ・一桁コード別出願人別の発行件数割合(集計表、円グラフ)\n'

wrd7_3 =' ・一桁コード別出願人数の年別推移(縦棒グラフ)\n'

wrd7_4 = ' ・一桁コード別出願人別発行件数の年別推移(バブルチャート)\n'

wrd7_5 = ' ・一桁コード別新規参入企業(バブルチャート)\n'

wrd7_6 = ' ・一桁コード毎の下位コード別の発行件数割合(集計表、円グラフ)\n'

wrd7_7 = ' ・一桁コード毎の下位コード別発行件数の年別推移(バブルチャート)\n'

wrd7_8 = '  ・(該当公報が有れば)サンプル公報の概要(書誌リスト)\n'

wrd8 = '⑧ 出願人別・コード別の公報発行件数(バブルチャート)\n'

# wrd24 = '⑧ 課題別の年別推移(バブルチャート)\n'

# wrd 25 = '⑨ トピック分析(発行年別の高頻出キーワードリスト)\n'

wrd01 =wrd0 + wrd0_1 + wrd1 + wrd1_1 + wrd2 + wrd2_1 + wrd2_2 + wrd2_3 + wrd3 + wrd3_1 + wrd3_2

wrd02 = wrd4 + wrd5 + wrd6 + wrd6_1 +wrd6_2 + wrd7 + wrd7_1 + wrd7_2 + wrd7_3

wrd03 = wrd7_4 + wrd7_5 + wrd7_6 + wrd7_6 + wrd7_7 + wrd7_8 + wrd8

wrd = wrd01 + wrd02 + wrd03


para = doc.add_paragraph(wrd)


wrd = '1-5 バソコン環境'

para = doc.add_paragraph(wrd)

para.runs[npara].bold = True

wrd1 = '・使用パソコンのOS macOS Catalina\n'

wrd2 = '・使用Python Python 3.8.3\n'

wrd3 = '・Python実行環境 Jupyter Notebook\n'

wrd =wrd1 + wrd2 + wrd3

para = doc.add_paragraph(wrd)


wrd = '1-6 ツールソフト(処理内容)'

para = doc.add_paragraph(wrd)

para.runs[npara].bold = True

wrd = '・特許出願動向調査_singleV2.ipynb(コーデイング、集計、図表作成、コメント作成、レポート作成)\n'

para = doc.add_paragraph(wrd)


doc.add_page_break() # 改頁


doc.save('report.docx')




# スクリブト90 第四章 まとめ(コメント書き出し)


# doc.add_page_break() # 改頁

para = doc.add_paragraph('第四章 まとめ')

para.runs[npara].font.size = docx.shared.Pt(16)

para.runs[npara].bold = True


wrd = " この調査では、機械学習で使用されているPythonによりコード化し、コードを付与した公報データをグラフ化した。"

para = doc.add_paragraph(wrd) # この調査では、機械学習で使用されているPython

print('wrd=',wrd)


# wrd01 = " コード化はIPCを中心としており、その1桁コードは次のとおり。\n"

wrd01 = " コード化はIPCを中心としており、その1桁コードは次のとおり。"

wrd = wrd01 + wrd_cd1_list

para = doc.add_paragraph(wrd)

print('wrd=',wrd)


#コメント追加

with open("matome.txt","r") as f:

wrd = f.readlines()

para = doc.add_paragraph(wrd) # 分析結果は以下のとおり

print('wrd=',wrd)


#エンドコメント追加

wrd = ' なお、この分析は全てプログラム処理による簡易的なものであるので、さらに精度の高い分析が必要であれば、特許調査会社の専門家による検索式作成と全件目視チェックによる分析を依頼することが望ましい(ただし数百万円と数ヶ月の期間が必要となるかもしれません)。'

para = doc.add_paragraph(wrd) # なお、この調査はほとんどがプログラム処理

print('wrd=',wrd)


doc.save('report.docx')


# print(fig_n,'、',hyo_n)