Для исследовательского проекта я хочу проанализировать записи о доходах.Я относительно новичок в программировании и, следовательно, у меня проблемы с поиском правильной настройки для выполнения требований моего анализа.
Стенограммы документов представлены в следующей (упрощенной) форме:
++ Заголовок с названием компании, отраслью, годом, кварталом, датой и временем ++
Speaker1- Положение говорящего1: некоторый текст.
Динамик2 - Положение говорящего2: некоторый текст.
(...)
++ Конец файла ++
Я хочу обработать html-файлы и сохранить их в структуре данных, способной удовлетворить мои требования к анализу на более поздней стадии проекта.Мне пришла в голову идея создать три вложенных класса:
Master
- хранит все имена файлов документов для обработки
- создает и сохраняет
Document
объекты для всех документов
Document
- анализирует и сохраняет информацию документа из HTML-кода
- разбивает HTML-код на отдельные параграфы
- создает и сохраняет
Paragraph
объекты для всех абзацев
Paragraph
- анализирует и сохраняет динамик, положение динамика и текст из абзаца
class Master():
def __init__(self):
''' Initialize the master object '''
self.filenames = [] # List of filenames
self.documents = [] # List of documents
def process_documents(self, filenames):
''' Create document object for each document '''
self.filenames.append(filenames)
for filename in filenames:
with open(filename, 'r') as f:
html = f.read()
document = Document(html)
document.process_paragraphs()
self.documents.append(document)
class Document():
def __init__(self, html):
''' Initialize the document object '''
self.html = html # Html code of complete file
self.cname = self.parse_cname() # Company name
self.industry = self.parse_industry() # Industry
self.quartal = self.parse_quartal() # Quartal
self.year = self.parse_year() # Year
self.dtime = self.parse_dtime() # Datetime
self.paragraphs = [] # List of paragraphs
def parse_cname(self):
''' Extract company name from html '''
pass
def parse_industry(self):
''' Extract industry from html '''
pass
def parse_quartal(self):
''' Extract quartal from html '''
pass
def parse_year(self):
''' Extract year from html '''
pass
def process_paragraphs(self):
''' Create paragraph object for each paragraph '''
for portion in self.html:
paragraph = Paragraph(portion)
self.paragraphs.append(paragraph)
class Paragraph():
def __init__(self, html):
''' Initialize the paragraph object '''
self.html = html # Html code of paragraph
self.speaker = parse_speaker() # Speaker
self.position = parse_position() # Position of speaker
self.text = parse_text() # Text
def parse_speaker(self):
''' Extract speaker from paragraph html '''
pass
def parse_position(self):
''' Extract position from paragraph html '''
pass
def parse_text(self):
''' Extract text from paragraph html '''
pass
С этой настройкой я надеюсь упростить следующие этапы анализа:
- Фильтрация документов по отраслям, годам и кварталам
- Фильтрация документов, содержащих конкретные ключевые слова
- Фильтрация абзацев, содержащих конкретные ключевые слова
- Удаление знаков препинания и стоп-слов из абзацев
- Расчет настроения абзацев
- (...)
Это прессНастроил ли подход подходящий подход к данной проблеме?
Меня беспокоит то, что уровни Master
, Document
и Paragraph
тесно связаны с точки зрения проблем.Но классы в моем программном коде не имеют реального отношения, за исключением того, что они хранят объекты друг друга.Например, если я захочу реализовать метод класса Document
, который возвращает список Paragraph
объектов, я потеряю информацию, к которой относится документ Paragraph
объектов.
Есть ли возможность зафиксировать иерархическое отношение объектов в моей настройке?