Jump to content

MorfeuPy

Membros
  • Contagem de Conteúdo

    2
  • Ingressou

  • Última visita

Informações Pessoais

  • Cidade
    São José dos Campos
  • Estado
    São Paulo (SP)

Clientes & Parceiros

  • Você é um cliente TecnoSpeed?
    Não

Visitantes Recentes do Perfil

O bloco de visitantes recentes está desativado e não está sendo mostrado a outros usuários.

Conquistas de MorfeuPy

1

Reputação na Comunidade

  1. Olá pessoal, Preciso de ajuda para criar um Script Python no google colab que aplique a estrutura hierárquica específica ao texto fornecido conforme a necessidade e conforme a equivalência das marcações definidas e identificadas para títulos, item e subitem. Adicionar ou replicar todos os marcadores da sua escala hierárquica. Os marcadores títulos podem ser identificados nos textos com os seguintes formatos: - Números únicos: 3 - Números duplos: 22 - Números duplos com ponto: 2.3 - Números triplos: 232 - Números triplos com pontos: 4.3.8 - Números quádruplos com pontos: 4.3.8.1 - Números quintuplos com pontos: 4.3.8.1.2 - Letras minúsculas com apenas um lado do parênteses: a) - Letras minúsculas entre parênteses: (a) - Números com apenas um lado do parênteses: 1) - Números entre parênteses (1) - Descrição: Attachment A, B, C... - Descrição: Appendix 1, 2, 3... - Descrição: Appendix A, B, C... E os marcadores item e subitem podem ser identificados nos textos com os seguintes formatos: - Números duplos: 22 - Números duplos com pontos: 2.3 - Números triplos: 232 - Números triplos com pontos: 4.3.8 - Números quádruplos com pontos: 4.3.8.1 - Números quintuplos com pontos: 4.3.8.1.2 - Letras minúsculas com apenas um lado do parênteses: a) - Letras minúsculas entre parênteses: (a) - Letras maiúsculas entre parênteses: (A) - Números com apenas um lado do parênteses: 1) - Números entre parênteses (1) - Notas Explicativas: as notas devem ser identificadas como: "Note 1, Note 2, Note 3...", e devem receber todas marcações hierárquica em ecalada do título, item ou subitem ao qual pertencerem ou estiverem dentro. Exemplo: 1 TextoTextoTextoTextoTextoTextoTextoTextoTextoTextoTextoTexto 12 TextoTextoTextoTextoTextoTextoTextoTextoTextoTexto 1.1.2 TextoTextoTextoTextoTextoTextoTextoTextoTextoTexto a) TextoTextoTextoTextoTextoTextoTextoTextoTextoTexto b) TextoTextoTextoTextoTextoTextoTextoTextoTextoTexto Note 1 - TextoTextoTextoTextoTextoTextoTextoTexto Note 2 - TextoTextoTextoTextoTextoTextoTextoTexto Ao incluir todos os marcadores em escalada ao textos tem que ficar dessa forma: 1 TextoTextoTextoTextoTextoTextoTextoTextoTextoTextoTextoTexto 1 12 TextoTextoTextoTextoTextoTextoTextoTextoTextoTexto 1 12 1.1.2 TextoTextoTextoTextoTextoTextoTextoTextoTextoTexto 1 12 1.1.2 a) TextoTextoTextoTextoTextoTextoTextoTextoTextoTexto 1 12 1.1.2. b) TextoTextoTextoTextoTextoTextoTextoTextoTextoTexto 1 12. 1.1.2. b) Note 1 - TextoTextoTextoTextoTextoTextoTextoTexto 1 12 1.1.2. b) Note 2 - TextoTextoTextoTextoTextoTextoTextoTexto ESTOU USANDO O TEXTO ABAIXO COMO EXEMPLO, MAS OS TEXTOS PODEM TER QUALQUER UM DOS MARCADORES INFORMADOS ACIMA Texto a ser aplicado: 3.5.3 The operator shall track the position of an aeroplane through automated reporting at least every 15 minutes for the portion(s) of the in-flight operation(s) that is planned in an oceanic area(s) under the following conditions: a) the aeroplane has a maximum certificated take-off mass of over 45 500 kg and a seating capacity greater than 19; and b) where an ATS unit obtains aeroplane position information at greater than 15 minute intervals. Note 1.— Oceanic area, for the purpose of aircraft tracking, is the airspace which overlies waters outside the territory of a State. Note 2.— See Annex 11, Chapter 2, for coordination between the operator and air traffic services providers regarding position report messages. Note 3.— Operational procedures for monitoring the aircraft tracking information are contained in PANS-OPS, Volume III, Section 10. COMO OS TEXTOS DEVEM FICAR: 3.5.3 The operator shall track the position of an aeroplane through automated reporting at least every 15 minutes for the portion(s) of the in-flight operation(s) that is planned in an oceanic area(s) under the following conditions: 3.5.3 a) the aeroplane has a maximum certificated take-off mass of over 45 500 kg and a seating capacity greater than 19; and 3.5.3 b) where an ATS unit obtains aeroplane position information at greater than 15 minute intervals. 3.5.3 b) Note 1.— Oceanic area, for the purpose of aircraft tracking, is the airspace which overlies waters outside the territory of a State. 3.5.3 b) Note 2.— See Annex 11, Chapter 2, for coordination between the operator and air traffic services providers regarding position report messages. 3.5.3 b) Note 3.— Operational procedures for monitoring the aircraft tracking information are contained in PANS-OPS, Volume III, Section 10. Observe no texto acima que os marcadores foram adicionados aos textos que fazem parte da sua escala hierárquica! CHEGUEI NESSE CÓDIGO MAS NÃO DEU CERTO: # Instalação das bibliotecas necessárias !pip install python-docx import docx from google.colab import files import re def upload_file(): # Solicita ao usuário que faça upload de um arquivo uploaded = files.upload() filename = next(iter(uploaded)) return filename def detect_marker_type(text): # Detecta o tipo de marcador e retorna o tipo e o nível patterns = { "single_number": r"^\d+\s", "double_number": r"^\d+\.\d+\s", "triple_number": r"^\d+\.\d+\.\d+\s", "quad_number": r"^\d+\.\d+\.\d+\.\d+\s", "quint_number": r"^\d+\.\d+\.\d+\.\d+\.\d+\s", "lower_letter_paren": r"^\([a-z]\)\s", "lower_letter": r"^[a-z]\)\s", "upper_letter": r"^\([A-Z]\)\s", "single_number_paren": r"^\(\d+\)\s", "single_number_one_paren": r"^\d+\)\s", "attachment": r"^(Attachment|Appendix)\s[A-Z0-9]+", "note": r"^Note\s\d+" } for key, pattern in patterns.items(): if re.match(pattern, text): return key return None def process_document(filename): doc = docx.Document(filename) level_stack = [] for para in doc.paragraphs: text = para.text.strip() marker_type = detect_marker_type(text) if marker_type: # Determine the hierarchy level if marker_type in ["single_number", "double_number", "triple_number", "quad_number", "quint_number", "attachment"]: level = 0 # Title levels reset hierarchy elif marker_type in ["lower_letter", "lower_letter_paren", "upper_letter"]: level = 1 # Item under title elif marker_type in ["single_number_one_paren", "single_number_paren"]: level = 2 # Subitem elif marker_type == "note": level = 3 # Note under subitem # Adjust stack to current level level_stack = level_stack[:level] + [text] # Create hierarchical prefix prefix = ' '.join(level_stack[:-1]) + ' ' if level_stack[:-1] else '' # Update paragraph text with hierarchical prefix para.text = prefix + text # Save the processed document new_filename = "processed_" + filename doc.save(new_filename) return new_filename def download_file(filename): # Trigger file download files.download(filename) # Running the script uploaded_filename = upload_file() processed_filename = process_document(uploaded_filename) download_file(processed_filename)
×
×
  • Create New...