レポート作成
各章の説明と作成したコメントとを組み合わせてレポートの体裁にまとめる。
サンプルスクリプト
# スクリブト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)