tuliodisanto commited on
Commit
bbe0e55
·
verified ·
1 Parent(s): b75d7bb

Update dic_convert.py

Browse files
Files changed (1) hide show
  1. dic_convert.py +32 -26
dic_convert.py CHANGED
@@ -1,26 +1,21 @@
 
1
  # -*- coding: utf-8 -*-
2
  """
3
- Script para processar a planilha TUSS, extrair termos de colunas específicas.
 
4
 
5
  Versão do Python: 3.12+
6
  Bibliotecas necessárias: pandas, openpyxl
7
-
8
- -----------------------------------------------------------------------------
9
- *** ANTES DE EXECUTAR, INSTALE AS BIBLIOTECAS NECESSÁRIAS ***
10
- Abra o terminal e digite:
11
- pip install pandas openpyxl
12
- -----------------------------------------------------------------------------
13
  """
14
  import pandas as pd
15
  import re
16
  import os
17
 
18
-
19
  def gerar_dicionario_de_termos(input_file: str, output_file: str):
20
  """
21
- Lê uma planilha Excel, extrai palavras de colunas predefinidas, aplica filtros
22
- para remover stop words e números, e salva uma lista de palavras únicas em um
23
- arquivo CSV compatível com Excel.
24
 
25
  Args:
26
  input_file (str): O caminho para a planilha Excel de entrada.
@@ -33,32 +28,44 @@ def gerar_dicionario_de_termos(input_file: str, output_file: str):
33
  # --- 2. VALIDAÇÃO DO ARQUIVO DE ENTRADA ---
34
  if not os.path.exists(input_file):
35
  print(f"ERRO: O arquivo de entrada '{input_file}' não foi encontrado.")
36
- print("Certifique-se de que ele está no mesmo diretório do script ou forneça o caminho completo.")
37
  return
38
 
39
  print(f"Iniciando o processamento do arquivo: '{input_file}'...")
40
 
41
  try:
42
  # --- 3. LEITURA E PROCESSAMENTO ---
43
- df = pd.read_excel(input_file, header=0, usecols=colunas_para_usar)
 
44
  print(f"Colunas lidas com sucesso: {list(df.columns)}")
45
 
46
- palavras_validas = []
 
 
47
  for column in df.columns:
48
- phrases = df[column].dropna().astype(str)
49
- for phrase in phrases:
50
- words = re.findall(r'\w+|[^\s\w]', phrase.lower())
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  # --- 4. GERAÇÃO DO DATAFRAME FINAL ---
53
- if not palavras_validas:
54
- print("Nenhuma palavra válida foi encontrada após a aplicação dos filtros.")
55
  return
56
 
57
- output_df = pd.DataFrame(palavras_validas, columns=['Termo_Correto'])
58
- print(f"\nTotal de termos extraídos (após filtros, com duplicatas): {len(output_df)}")
59
-
60
- output_df = output_df.drop_duplicates().sort_values(by='Termo_Correto').reset_index(drop=True)
61
- print(f"Total de termos únicos no dicionário final: {len(output_df)}")
62
 
63
  # --- 5. SALVANDO O RESULTADO EM CSV ---
64
  # Usa 'utf-8-sig' para que os acentos abram corretamente no Excel.
@@ -67,7 +74,7 @@ def gerar_dicionario_de_termos(input_file: str, output_file: str):
67
  print("\n--- Processamento Concluído! ---")
68
  print(f"O arquivo '{output_file}' foi criado com sucesso.")
69
  print("\nAmostra do dicionário gerado:")
70
- print(output_df.head())
71
 
72
  except Exception as e:
73
  print(f"\nOcorreu um erro inesperado durante o processamento: {e}")
@@ -77,7 +84,6 @@ def gerar_dicionario_de_termos(input_file: str, output_file: str):
77
  # --- PONTO DE ENTRADA DO SCRIPT ---
78
  if __name__ == "__main__":
79
  arquivo_excel_entrada = 'TUSSxRolxSinônimosvs2.xlsx'
80
- # Nome do arquivo de saída alterado conforme solicitado
81
  arquivo_csv_saida = 'Dic.csv'
82
 
83
  # Executa a função principal
 
1
+ # dic_convert.py (CORRIGIDO PARA MANTER ACENTOS, PONTUAÇÃO E STOPWORDS)
2
  # -*- coding: utf-8 -*-
3
  """
4
+ Script para processar a planilha TUSS, extrair TODOS os termos (incluindo
5
+ palavras com acentos, números, pontuação e stopwords) de colunas específicas.
6
 
7
  Versão do Python: 3.12+
8
  Bibliotecas necessárias: pandas, openpyxl
 
 
 
 
 
 
9
  """
10
  import pandas as pd
11
  import re
12
  import os
13
 
 
14
  def gerar_dicionario_de_termos(input_file: str, output_file: str):
15
  """
16
+ Lê uma planilha Excel, extrai todos os tokens (palavras com acentos,
17
+ números, pontuação) de colunas predefinidas, converte para minúsculas,
18
+ e salva uma lista de tokens únicos em um arquivo CSV compatível com Excel.
19
 
20
  Args:
21
  input_file (str): O caminho para a planilha Excel de entrada.
 
28
  # --- 2. VALIDAÇÃO DO ARQUIVO DE ENTRADA ---
29
  if not os.path.exists(input_file):
30
  print(f"ERRO: O arquivo de entrada '{input_file}' não foi encontrado.")
 
31
  return
32
 
33
  print(f"Iniciando o processamento do arquivo: '{input_file}'...")
34
 
35
  try:
36
  # --- 3. LEITURA E PROCESSAMENTO ---
37
+ # o Excel forçando todas as colunas a serem texto para evitar erros
38
+ df = pd.read_excel(input_file, header=0, usecols=colunas_para_usar, dtype=str)
39
  print(f"Colunas lidas com sucesso: {list(df.columns)}")
40
 
41
+ # Usamos um 'set' para armazenar os termos e evitar duplicatas automaticamente
42
+ termos_unicos = set()
43
+
44
  for column in df.columns:
45
+ # Pega todas as frases da coluna, ignorando valores vazios (NaN)
46
+ frases = df[column].dropna()
 
47
 
48
+ for frase in frases:
49
+ # --- LÓGICA DE EXTRAÇÃO MODIFICADA ---
50
+ # Esta expressão regular extrai:
51
+ # 1. [a-zA-Záàâãéèêíïóôõöúçñ]+ : Palavras com acentos.
52
+ # 2. \d+ : Números inteiros.
53
+ # 3. [^\s\w] : Qualquer caractere que NÃO seja espaço ou alfanumérico (pontuação).
54
+ tokens = re.findall(r'[a-zA-Záàâãéèêíïóôõöúçñ]+|\d+|[^\s\w]', str(frase).lower())
55
+
56
+ # Adiciona cada token extraído ao nosso conjunto de termos únicos
57
+ for token in tokens:
58
+ if token: # Garante que não adicionamos strings vazias
59
+ termos_unicos.add(token)
60
+
61
  # --- 4. GERAÇÃO DO DATAFRAME FINAL ---
62
+ if not termos_unicos:
63
+ print("Nenhum termo foi encontrado nas colunas especificadas.")
64
  return
65
 
66
+ # Converte o conjunto de termos únicos para um DataFrame, ordenando-o
67
+ output_df = pd.DataFrame(sorted(list(termos_unicos)), columns=['Termo_Correto'])
68
+ print(f"\nTotal de termos únicos no dicionário final: {len(output_df)}")
 
 
69
 
70
  # --- 5. SALVANDO O RESULTADO EM CSV ---
71
  # Usa 'utf-8-sig' para que os acentos abram corretamente no Excel.
 
74
  print("\n--- Processamento Concluído! ---")
75
  print(f"O arquivo '{output_file}' foi criado com sucesso.")
76
  print("\nAmostra do dicionário gerado:")
77
+ print(output_df.head(15)) # Mostra uma amostra maior
78
 
79
  except Exception as e:
80
  print(f"\nOcorreu um erro inesperado durante o processamento: {e}")
 
84
  # --- PONTO DE ENTRADA DO SCRIPT ---
85
  if __name__ == "__main__":
86
  arquivo_excel_entrada = 'TUSSxRolxSinônimosvs2.xlsx'
 
87
  arquivo_csv_saida = 'Dic.csv'
88
 
89
  # Executa a função principal