Spaces:
Sleeping
Sleeping
| # dic_convert.py (CORRIGIDO PARA MANTER ACENTOS, PONTUAÇÃO E STOPWORDS) | |
| # -*- coding: utf-8 -*- | |
| """ | |
| Script para processar a planilha TUSS, extrair TODOS os termos (incluindo | |
| palavras com acentos, números, pontuação e stopwords) de colunas específicas. | |
| Versão do Python: 3.12+ | |
| Bibliotecas necessárias: pandas, openpyxl | |
| """ | |
| import pandas as pd | |
| import re | |
| import os | |
| def gerar_dicionario_de_termos(input_file: str, output_file: str): | |
| """ | |
| Lê uma planilha Excel, extrai todos os tokens (palavras com acentos, | |
| números, pontuação) de colunas predefinidas, converte para minúsculas, | |
| e salva uma lista de tokens únicos em um arquivo CSV compatível com Excel. | |
| Args: | |
| input_file (str): O caminho para a planilha Excel de entrada. | |
| output_file (str): O caminho para o arquivo CSV de saída. | |
| """ | |
| # --- 1. CONFIGURAÇÃO --- | |
| # Colunas de onde os termos serão extraídos (B, D, Q, R, S) | |
| colunas_para_usar = "B,D,Q,R,S" | |
| # --- 2. VALIDAÇÃO DO ARQUIVO DE ENTRADA --- | |
| if not os.path.exists(input_file): | |
| print(f"ERRO: O arquivo de entrada '{input_file}' não foi encontrado.") | |
| return | |
| print(f"Iniciando o processamento do arquivo: '{input_file}'...") | |
| try: | |
| # --- 3. LEITURA E PROCESSAMENTO --- | |
| # Lê o Excel forçando todas as colunas a serem texto para evitar erros | |
| df = pd.read_excel(input_file, header=0, usecols=colunas_para_usar, dtype=str) | |
| print(f"Colunas lidas com sucesso: {list(df.columns)}") | |
| # Usamos um 'set' para armazenar os termos e evitar duplicatas automaticamente | |
| termos_unicos = set() | |
| for column in df.columns: | |
| # Pega todas as frases da coluna, ignorando valores vazios (NaN) | |
| frases = df[column].dropna() | |
| for frase in frases: | |
| # --- LÓGICA DE EXTRAÇÃO MODIFICADA --- | |
| # Esta expressão regular extrai: | |
| # 1. [a-zA-Záàâãéèêíïóôõöúçñ]+ : Palavras com acentos. | |
| # 2. \d+ : Números inteiros. | |
| # 3. [^\s\w] : Qualquer caractere que NÃO seja espaço ou alfanumérico (pontuação). | |
| tokens = re.findall(r'[a-zA-Záàâãéèêíïóôõöúçñ]+|\d+|[^\s\w]', str(frase).lower()) | |
| # Adiciona cada token extraído ao nosso conjunto de termos únicos | |
| for token in tokens: | |
| if token: # Garante que não adicionamos strings vazias | |
| termos_unicos.add(token) | |
| # --- 4. GERAÇÃO DO DATAFRAME FINAL --- | |
| if not termos_unicos: | |
| print("Nenhum termo foi encontrado nas colunas especificadas.") | |
| return | |
| # Converte o conjunto de termos únicos para um DataFrame, ordenando-o | |
| output_df = pd.DataFrame(sorted(list(termos_unicos)), columns=['Termo_Correto']) | |
| print(f"\nTotal de termos únicos no dicionário final: {len(output_df)}") | |
| # --- 5. SALVANDO O RESULTADO EM CSV --- | |
| # Usa 'utf-8-sig' para que os acentos abram corretamente no Excel. | |
| output_df.to_csv(output_file, index=False, encoding='utf-8-sig') | |
| print("\n--- Processamento Concluído! ---") | |
| print(f"O arquivo '{output_file}' foi criado com sucesso.") | |
| print("\nAmostra do dicionário gerado:") | |
| print(output_df.head(15)) # Mostra uma amostra maior | |
| except Exception as e: | |
| print(f"\nOcorreu um erro inesperado durante o processamento: {e}") | |
| print("Verifique se o arquivo Excel não está corrompido e se as colunas B, D, Q, R e S existem.") | |
| # --- PONTO DE ENTRADA DO SCRIPT --- | |
| if __name__ == "__main__": | |
| arquivo_excel_entrada = 'TUSSxRolxSinônimosvs2.xlsx' | |
| arquivo_csv_saida = 'Dic.csv' | |
| # Executa a função principal | |
| gerar_dicionario_de_termos(input_file=arquivo_excel_entrada, output_file=arquivo_csv_saida) |