В настоящее время я работаю над магистерской диссертацией о добыче информации в рамках патентов.Только начал использовать Python и интегрировал пакет TextRazor.Моя цель - проанализировать CSV-файл с патентными данными и поместить темы из него в новый CSV-файл.
После импорта пакета TextRazor и настройки экстракторов я хочу открыть CSV-файл с соответствующими данными патента.TextRazor анализирует этот файл и выдает темы с релевантностью более 0,5.Я сохраняю эти темы в CSV-файле, который выглядит следующим образом:
Topics; 'topic 1'; 'topic 2'; 'topic 3'; ...; 'topic 130';
Моя проблема в том, что патентные данные могут быть слишком большими (более 10000 строк и 4 столбца) для анализа.Пакет может обрабатывать только до 250 КБ.Можно ли сделать цикл for, чтобы избежать этой проблемы?
Прямо сейчас я разбил CSV-файл, и процесс для каждого из них завершен.Файл CSV выглядит следующим образом:
docname; documents/text; day
44245; [text]; 22.12.2016
32424; [text]; 12.03.2015
...
Цель состоит в том, чтобы создать цикл, который просматривает этот файл, анализирует каждую строку и сохраняет результаты в одном файле CSV.
Этофайл должен выглядеть так:
44245; 'topic 1'; 'topic 2'; ...
32424; 'topic 1'; 'topic 2'; ...
Я благодарен за любые советы или рекомендации.
Мой текущий код выглядит следующим образом (разделение файла по годам и каждому файлу только с 10 патентами):
textrazor.api_key = 'b033067632dba8a710c57f088115ad4eeff22142629bb1c07c780a10'
client = textrazor.TextRazor(extractors= ["entities", "categories", "topics"])
client.set_classifiers(['textrazor_newscodes'])
df17 = open(r'C:\Users\Dogan\Desktop\Patentdaten\Patente 2017 Go Pro.csv').read()
df16 = open(r'C:\Users\Dogan\Desktop\Patentdaten\Patente 2016 Go Pro.csv').read()
df15 = open(r'C:\Users\Dogan\Desktop\Patentdaten\Patente 2015 Go Pro.csv').read()
df14 = open(r'C:\Users\Dogan\Desktop\Patentdaten\Patente 2014 Go Pro.csv').read()
df13 = open(r'C:\Users\Dogan\Desktop\Patentdaten\Patente 2013 Go Pro.csv').read()
patente2017 = df17
patente2016 = df16
patente2015 = df15
patente2014 = df14
patente2013 = df13
response2017 = client.analyze(patente2017)
response2016 = client.analyze(patente2016)
response2015 = client.analyze(patente2015)
response2014 = client.analyze(patente2014)
response2013 = client.analyze(patente2013)
topics2017 = set()
topics2016 = set()
topics2015 = set()
topics2014 = set()
topics2013 = set()
for topic in response2017.topics():
if topic.score > 0.5:
if topic.label not in topics2017:
topics2017.add(topic.label)
for topic in response2016.topics():
if topic.score > 0.5:
if topic.label not in topics2016:
topics2016.add(topic.label)
for topic in response2015.topics():
if topic.score > 0.5:
if topic.label not in topics2015:
topics2015.add(topic.label)
for topic in response2014.topics():
if topic.score > 0.5:
if topic.label not in topics2014:
topics2014.add(topic.label)
for topic in response2013.topics():
if topic.score > 0.5:
if topic.label not in topics2013:
topics2013.add(topic.label)
import pandas as pd
list_topics2017=list(topics2017)
list_topics2016=list(topics2016)
list_topics2015=list(topics2015)
list_topics2014=list(topics2014)
list_topics2013=list(topics2013)
df17 = pd.DataFrame.from_dict({'2017' : list_topics2017}, orient='index')
df16 = pd.DataFrame.from_dict({'2016' : list_topics2016}, orient='index')
df15 = pd.DataFrame.from_dict({'2015' : list_topics2015}, orient='index')
df14 = pd.DataFrame.from_dict({'2014' : list_topics2014}, orient='index')
df13 = pd.DataFrame.from_dict({'2013' : list_topics2013}, orient='index')
df17.to_csv('Analyse-2013bis2017-GoPro.csv', sep=';', header='Topics Go Pro 2013 - 2017')
df16.to_csv('Analyse-2013bis2017-GoPro.csv',mode='a', sep=';', header=False)
df15.to_csv('Analyse-2013bis2017-GoPro.csv',mode='a', sep=';', header=False)
df14.to_csv('Analyse-2013bis2017-GoPro.csv',mode='a', sep=';', header=False)
df13.to_csv('Analyse-2013bis2017-GoPro.csv',mode='a', sep=';', header=False)
Прямо сейчас я получаю CSV-файл (как упомянуто выше) какэто:
2017; 'topic 1'; 'topic 2'; ...
2016; 'topic 1'; 'topic 2'; ...
2015; 'topic 1'; 'topic 2'; ...
2014; 'topic 1'; 'topic 2'; ...
2013; 'topic 1'; 'topic 2'; ...