Ich dachte, ich sollte gleichzeitig die Patentanalyse versuchen, also beschloss ich, es zu versuchen. Insbesondere wenn es zum Beispiel um Patentanalysen geht, gibt es eine Darstellung wie die folgende. (Die Abbildung stammt aus dem J-STORE-Handbuch.) Die vertikale Achse zeigt den Patentanmelder, die horizontale Achse zeigt das Jahr, in dem das Patent erteilt wurde, und die Größe des Kreises zeigt die Anzahl der Patente, die als Blasendiagramm bezeichnet wird. Es gibt etwas auf der Welt, das eine solche Verschwörung gegen eine Gebühr macht.
Diesmal durch Durchsuchen der Patentdokumente mithilfe der kostenlosen Patentdatenbank J-PlatPat und Verarbeiten der Ergebnisse in Python. Ich würde gerne eine solche Handlung machen.
Laut Wikipedia
Die Patentinformationsplattform (Japanische Plattform für Patentinformationen) bezieht sich auf gewerbliche Schutzrechte wie Patente, praktische neue Ideen, Designs und Marken, die vom INPIT (Industrial Ownership Information and Training Center) der Incorporated Administrative Agency betrieben werden. Dies ist eine Datenbank, in der Sie kostenlos nach Gazetten für gewerbliches Eigentum usw. suchen und diese abfragen können.
... anscheinend ... Das Wichtigste dabei ist, dass die Verwendung kein Geld kostet, aber es gibt viele Einschränkungen, wie kostenlos es ist, und Sie riskieren, wütend zu werden, wenn Sie es leicht berühren.
Diesmal ist die Strategie dieser Plattform halb und die Erklärung der Verarbeitung der erhaltenen Daten halb.
Ich interessiere mich für Batterien, insbesondere sogenannte Sekundärbatterien, die geladen und entladen werden können, deshalb möchte ich danach suchen.
Wenn Sie jedoch normalerweise nach "Batterie" suchen, werden beispielsweise auch Solarzellen und Brennstoffzellen durchsucht. Bis zu diesem Punkt geschieht dies sogar bei einer normalen Suche.
Während Sie Hass auf die Menschheit fordern, die Solarzelle und Brennstoffzelle als "Batterie" übersetzt hat, geben Sie Folgendes in J-PlatPats patentierte / praktische Suche nach neuen Ideen ein => Eingabe logischer Ausdrücke.
Dieses / TI gibt den Titel an. In diesem Fall werden Patente durchsucht, die im Patenttitel "Sekundärbatterie" oder "Speicherbatterie" enthalten. Wenn Sie einen logischen Ausdruck verwenden, können Sie verschiedene andere Dinge angeben, damit sich die Welt erweitert. Weitere Informationen finden Sie in der Hilfe von J-PlatPat.
Diese Bezeichnung führt zu 60459 Patenten. Die maximale Anzahl der angezeigten J-PlatPat-Suchergebnisse beträgt jedoch 3000, sodass Sie sterben werden. Suchen Sie also nach dem Ausgabedatum.
Das Ausgabedatum wird durch die Suchoption und nicht durch den logischen Ausdruck angegeben. In diesem Fall werden die Patente angezeigt, die im Zeitraum von einem Jahr vom 1. Januar 2019 bis zum 1. Januar 2020 erteilt wurden.
Jetzt können Sie 1408 Patente sehen, wie unten gezeigt (Stand 04.02.2020).
Ich möchte den Patentinhalt von Fall zu Fall kratzen, aber das ist verboten (siehe Anmerkungen). Mache das niemals. Ich denke, Sie sollten mir die "CSV-Ausgabe" in der Liste verzeihen. Lass es uns drücken.
Um CSV auszugeben, beschränken Sie sich auf 100 oder weniger.
Ja, ich bin gestorben. Dies ist das Ende dieses Artikels. Ist eine Lüge. Beeilen Sie sich nicht, drücken Sie "Liste drucken".
Dann öffnet sich das Fenster "Liste drucken | J-PlatPat [JPP]" wie oben gezeigt. Dieser Bildschirm enthält alle 1408 Patente. Klicken Sie mit der rechten Maustaste und speichern Sie die HTML-Datei, anstatt sie zu drucken. Damit ist die Erfassung der Patentdaten für 2019 abgeschlossen.
Danach werden wir, während wir das Ausgabejahr entsprechend verschieben, den HTML-Code der Patentliste wie 2018, 2017 manuell abrufen. Dieses Mal haben wir Daten für 15 Jahre von 2005 bis 2019 erfasst.
Es ist eine Arbeit, die sich leer anfühlt, aber eigentlich kein so großer Aufwand ist und nur etwa 10 Minuten dauert.
Mit Pythons BeautifulSoup ist es einfach, den Inhalt einer HTML-Tabelle in CSV zu konvertieren.
Ein bisschen wie unten. Lesen Sie HTML-Dateien aus ./html und schreiben Sie CSV-Dateien in ./csv.
from bs4 import BeautifulSoup
import re
import glob
import pandas as pd
path = glob.glob('./html/*.html')
for p in path:
name = p.replace('.html','').replace('./html\\','')
html = open(p,'r',encoding="utf-8_sig")
soup = BeautifulSoup(html,"html.parser")
tr = soup.find_all('tr')
columns = [i.text.replace('\n','') for i in tr[0].find_all('th')]
df = pd.DataFrame(index=[],columns=columns[1:])
for l in tr[1:]:
lines = [i.text for i in l.find_all('td')]
lines = [i.replace('\n','') if n != 6 else re.sub(r'[\n]+', ",", i) for n,i in enumerate(lines)]
lines = pd.Series(lines, index=df.columns)
df = df.append(lines,ignore_index=True)
df.to_csv('./csv/'+name+'.csv', encoding='utf_8_sig', index=False)
Es greift überhaupt nicht auf J-PlatPat zu, da es nur die lokal manuell gespeicherte HTML-Datei verarbeitet. Es ist sicher.
Ein Teil des erhaltenen Datenrahmens ist unten gezeigt (Patent2005.csv). 15 solcher CSVs werden von 2005 bis 2019 gespeichert. ~~ Es ist nicht erforderlich, wenn J-PlatPat alle CSV-Ausgaben unterstützt ~~
Referenznummer | Anmeldenummer | Abgabedatum | Bekanntes Datum | Titel der Erfindung | Antragsteller/Rechteinhaber | FI |
---|---|---|---|---|---|---|
Re-Tabelle 2005/124920 | Japanische Patentanmeldung Nr. 2006-514740 | 2005/06/14 | 2005/12/29 | Bleiakku | Panasonic Corporation | ,C22C11/00,C22C11/02,C22C11/06,andere, |
Re-Tabelle 2005/124899 | Japanische Patentanmeldung Nr. 2006-514659 | 2005/03/09 | 2005/12/29 | Sekundärbatterie und ihre Herstellungsmethode | Panasonic Corporation | ,H01M2/16@M,H01M4/02@B,H01M4/02@Z,andere, |
Re-Tabelle 2005/124898 | Japanische Patentanmeldung Nr. 2006-514732 | 2005/06/13 | 2005/12/29 | Positives Aktivmaterialpulver für Lithium-Sekundärbatterie | AGC Seimi Chemical Co., Ltd. | ,H01M4/02@C,H01M4/36@E,H01M4/36,andere, |
Re-Tabelle 2005/122318 | Japanische Patentanmeldung Nr. 2006-514434 | 2005/05/18 | 2005/12/22 | Nichtwässrige Elektrolyt- und Lithium-Sekundärbatterie, die diese verwendet | Ube Kosan Co., Ltd. | ,H01M4/02@C,H01M4/02@D,H01M4/36,andere, |
Japanische Patentanmeldung Nr. 2005-353584 | Japanische Patentanmeldung 2005-140521 | 2005/05/13 | 2005/12/22 | Lithium-Ionen-Sekundärbatterie und ihre Herstellungsmethode | Panasonic Co., Ltd. und andere | ,H01M2/16@P,H01M4/02,101,H01M4/02,108,andere, |
Beim Erstellen eines Blasendiagramms besteht das Problem bei der Auswahl des Zielantragstellers (Unternehmens). Wenn wir diesmal die Top-10-Unternehmen mit der Anzahl der Patentanmeldungen pro Jahr ansprechen, haben wir nur 30 Unternehmen, also werden wir dies tun.
Organisieren Sie Ihre Daten wie folgt:
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import glob
import pandas as pd
import collections
import numpy as np
import seaborn as sns
path = glob.glob('./csv/*.csv')
app_top10_dic = {} #TOP10 Unternehmen und Anzahl der Bewerbungen für jedes Jahr
app_total_dic = {} #Alle Unternehmen und Anzahl der Bewerbungen pro Jahr
app_all = [] #Liste der Unternehmen, die dem Blasendiagramm unterliegen
for p in path:
name = p.replace('.csv',' ').replace('./csv\\patent','').replace(' ','')
df = pd.read_csv(p)
app_list = df['Antragsteller/Rechteinhaber']
app_list = [i.rstrip('andere').replace(' ','').replace('\u3000',' ') for i in app_list]
app_set = collections.Counter(app_list)
app_top10 = app_set.most_common()[:10]
app_all.extend([i[0] for i in app_top10])
app_top10_dic[name] = app_top10
app_total = app_set.most_common()
app_total_dic[name] = app_total
app_all = list(set(app_all))
Erstellen Sie eine Matrix mit dem Antragsteller (Unternehmen) in der Spalte und dem Antragsjahr in der Zeile. Erstellen Sie zuerst eine leere Matrix (df) wie unten gezeigt und dann
years = list(app_top10_dic.keys())
df = pd.DataFrame(index=app_all,columns=years).fillna(0)
Fügen Sie die Anzahl der Anwendungen wie folgt hinzu.
for i in app_total_dic:
dic = app_total_dic[i]
for d in dic:
if(d[0] in app_all):
df[i][d[0]] += d[1]
Schließlich erhalten Sie eine Matrix wie folgt:
2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sumitomo Metal Mine Co., Ltd. | 6 | 14 | 7 | 13 | 2 | 7 | 15 | 18 | 16 | 25 | 35 | 54 | 56 | 60 | 61 |
Furukawa Battery Co., Ltd. | 46 | 40 | 34 | 41 | 33 | 31 | 23 | 9 | 12 | 13 | 11 | 7 | 11 | 11 | 13 |
Dainippon Printing Co., Ltd. | 4 | 14 | 12 | 0 | 5 | 9 | 29 | 59 | 5 | 9 | 2 | 1 | 5 | 0 | 0 |
Sanyo Electric Co., Ltd. | 181 | 137 | 155 | 120 | 96 | 102 | 120 | 110 | 104 | 180 | 73 | 65 | 26 | 59 | 45 |
Samsung SDI Co., Ltd. | 83 | 138 | 24 | 32 | 38 | 52 | 108 | 57 | 41 | 49 | 69 | 40 | 16 | 14 | 22 |
: | : | : | : | : | : | : | : | : | : | : | : | : | : | : | : |
Semiconductor Energy Research Institute Co., Ltd. | 0 | 0 | 0 | 0 | 0 | 0 | 9 | 7 | 15 | 16 | 22 | 54 | 24 | 12 | 12 |
GS Yoursa Corporation | 57 | 20 | 11 | 17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
GS Yuasa Co., Ltd. | 43 | 16 | 38 | 40 | 39 | 44 | 56 | 76 | 79 | 75 | 99 | 72 | 83 | 41 | 31 |
Hitachi Maxell Co., Ltd. | 29 | 20 | 8 | 28 | 26 | 17 | 39 | 49 | 48 | 46 | 63 | 35 | 39 | 14 | 0 |
Japan Zeon Co., Ltd. | 2 | 5 | 5 | 5 | 6 | 16 | 28 | 29 | 43 | 67 | 62 | 45 | 55 | 22 | 2 |
Dies wird als Pandas-Datenrahmen abgerufen, sodass Sie mit Seaborn problemlos eine Heatmap erstellen können.
fig = plt.figure(figsize=(6,10),dpi=150)
sns.heatmap(df,square=True,cmap='Reds')
Ich denke das ist genug, aber ich mache auch ein Blasendiagramm. Ich kann (sollte) das nicht auf einmal machen, also werde ich mein Bestes geben. Ich bemerkte die Farbe und schrieb eine Legende ein.
fig = plt.figure(figsize=(6,10),dpi=150)
for n,y in enumerate(years):
for m,x in enumerate(app_all[::-1]):
plt.scatter(y,x,s=int(df[y][x]))
size = [100,200,300]
for s in size:
plt.scatter(-100,-100,s=s,facecolor='white',edgecolor='black',label=str(s))
plt.legend(title='Patents', bbox_to_anchor=(1.03, 1),
loc='upper left',labelspacing=1,borderpad=1)
plt.xlim(-1,15)
plt.ylim(-1,30)
plt.xticks(rotation=45)
plt.show()
Es ist fertig. Dies ist sicherlich leichter zu verstehen als die Heatmap.
Ein kurzer Blick auf das Ganze zeigt, dass Toyota seit 2013 stark ist. Es ist überraschend, dass Toshiba seit 2017, als es verschiedene Dinge gab, ständig Patente erteilt. Es ist wunderbar. Die Patente von Panasonic nehmen ab, aber angesichts der Anwendungen von Panasonic IP Management und Sanyo Electric (Tochtergesellschaft), nicht wahr? Es gibt zu viele verbundene Unternehmen von Hitachi, und was ist der Unterschied zwischen GS Yuasa und GS Yuasa Corporation? Es scheint also, dass Konzernunternehmen integriert werden müssen.
Aus diesem Grund habe ich versucht, die Patentanalyse mit Python ein wenig zu untersuchen. Ich war von den Spezifikationen von J-PlatPat beeinflusst und habe vergessen, wie man Pandas benutzt, aber vorerst habe ich ein Blasendiagramm erstellt, um mein Ziel zu erreichen.
Es besteht jedoch die Möglichkeit, dass einige Patente aufgrund unzureichender Spezifikation von Suchelementen übersehen wurden. Dieser Teil scheint verschiedene Versuche und Irrtümer zu erfordern.
Wenn Sie den Text des Patents erhalten können, können Sie mit der Analyse der natürlichen Sprache verschiedene interessante Dinge tun. In Anbetracht des Textes Google Patent Public Datasets Ist es besser, -data) zu verwenden?
Ich war vorerst zufrieden, also endete ich hier!
In den "Einschränkungen für Massenzugriff, Roboterzugriff usw." im J-PlatPat-Verwendungshandbuch heißt es:
J-PlatPat wird öffentlich für Informationen zu gewerblichen Schutzrechten verwendet. Daher sind Aktionen wie das Herunterladen großer Datenmengen zum Zweck der einfachen Datenerfassung und des Roboterzugriffs (regelmäßige automatische Datenerfassung durch ein Programm), die die allgemeine Verwendung beeinträchtigen können, verboten. Ich werde.
Deshalb ist die automatische Erfassung durch das Programm NG. Tu es nicht. Seien wir vorsichtig.
Ich denke, es ist fraglich, ob diese Datenerfassung "das Herunterladen einer großen Datenmenge zum Zweck der einfachen Datenerfassung" verdient, aber ich denke, es ist wahrscheinlich in Ordnung, weil ich tatsächlich nur 15 Dateien heruntergeladen habe. Ich werde.