Finish-him commited on
Commit
756fc41
·
verified ·
1 Parent(s): 59e123e
Files changed (1) hide show
  1. train.py +38 -9
train.py CHANGED
@@ -1,4 +1,4 @@
1
- # =================== CÓDIGO COMPLETO E FINAL ===================
2
 
3
  import os
4
  import glob
@@ -7,12 +7,39 @@ import csv
7
  import numpy as np
8
  from tqdm.auto import tqdm
9
  from sentence_transformers import SentenceTransformer
 
10
 
11
  # --- CONFIGURAÇÕES ---
12
- # O diretório onde o Dockerfile clonou os dados do próprio Space
13
  DATA_DIR = "/app/dados"
 
 
14
  # ---------------------
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  def serialize_item_to_text(item_dict):
17
  """Converte um dicionário em uma string de texto."""
18
  parts = []
@@ -29,16 +56,19 @@ def serialize_item_to_text(item_dict):
29
 
30
  def main():
31
  """Função principal para carregar dados e gerar embeddings."""
 
 
 
32
  csv.field_size_limit(10_000_000)
33
 
34
- # Procura recursivamente por todos os arquivos .json e .csv no diretório de dados
35
- all_files = glob.glob(DATA_DIR + "/**/*.json", recursive=True) + \
36
- glob.glob(DATA_DIR + "/**/*.csv", recursive=True)
37
 
38
- print(f"🔎 Encontrados {len(all_files)} arquivos para processar no repositório.")
39
 
40
  if not all_files:
41
- print("⚠️ Nenhum arquivo .csv ou .json encontrado. Verifique se os dados estão no repositório.")
42
  return
43
 
44
  documents = []
@@ -68,7 +98,6 @@ def main():
68
  cache_path = os.environ.get('SENTENCE_TRANSFORMERS_HOME', '/app/cache/torch')
69
 
70
  print("Carregando modelo avançado: intfloat/e5-mistral-7b-instruct")
71
- print("Isso pode levar vários minutos, pois o modelo é grande.")
72
  model = SentenceTransformer(
73
  'intfloat/e5-mistral-7b-instruct',
74
  cache_folder=cache_path,
@@ -93,4 +122,4 @@ def main():
93
  if __name__ == "__main__":
94
  main()
95
 
96
- # =================================================================
 
1
+ # =================== CÓDIGO FINAL COM LÓGICA DE DESCOMPACTAÇÃO ===================
2
 
3
  import os
4
  import glob
 
7
  import numpy as np
8
  from tqdm.auto import tqdm
9
  from sentence_transformers import SentenceTransformer
10
+ import zipfile # Módulo para lidar com arquivos .zip
11
 
12
  # --- CONFIGURAÇÕES ---
13
+ # Diretório onde o Dockerfile clonou os dados do seu Space
14
  DATA_DIR = "/app/dados"
15
+ # Diretório para onde os arquivos serão extraídos
16
+ EXTRACT_DIR = "/app/dados_extraidos"
17
  # ---------------------
18
 
19
+ def setup_data():
20
+ """Procura por arquivos .zip no diretório de dados e os descompacta."""
21
+ print("Procurando por arquivos .zip para descompactar...")
22
+ os.makedirs(EXTRACT_DIR, exist_ok=True)
23
+
24
+ zip_files_found = glob.glob(DATA_DIR + "/**/*.zip", recursive=True)
25
+
26
+ if not zip_files_found:
27
+ print("Nenhum arquivo .zip encontrado. Assumindo que os arquivos já estão extraídos.")
28
+ # Se não houver zips, usamos o diretório de dados original
29
+ return DATA_DIR
30
+
31
+ for zip_filepath in zip_files_found:
32
+ print(f"Descompactando '{zip_filepath}' para '{EXTRACT_DIR}'...")
33
+ try:
34
+ with zipfile.ZipFile(zip_filepath, 'r') as zip_ref:
35
+ zip_ref.extractall(EXTRACT_DIR)
36
+ print(f"✅ Arquivo '{os.path.basename(zip_filepath)}' descompactado com sucesso.")
37
+ except Exception as e:
38
+ print(f"⚠️ Falha ao descompactar '{zip_filepath}': {e}")
39
+
40
+ # Retorna o diretório onde os arquivos foram extraídos
41
+ return EXTRACT_DIR
42
+
43
  def serialize_item_to_text(item_dict):
44
  """Converte um dicionário em uma string de texto."""
45
  parts = []
 
56
 
57
  def main():
58
  """Função principal para carregar dados e gerar embeddings."""
59
+ # Descompacta os dados e obtém o diretório com os arquivos processáveis
60
+ process_dir = setup_data()
61
+
62
  csv.field_size_limit(10_000_000)
63
 
64
+ # Procura recursivamente por todos os arquivos .json e .csv no diretório de extração
65
+ all_files = glob.glob(process_dir + "/**/*.json", recursive=True) + \
66
+ glob.glob(process_dir + "/**/*.csv", recursive=True)
67
 
68
+ print(f"\n🔎 Encontrados {len(all_files)} arquivos para processar após descompactação.")
69
 
70
  if not all_files:
71
+ print("⚠️ Nenhum arquivo .csv ou .json encontrado. Verifique o conteúdo do seu .zip.")
72
  return
73
 
74
  documents = []
 
98
  cache_path = os.environ.get('SENTENCE_TRANSFORMERS_HOME', '/app/cache/torch')
99
 
100
  print("Carregando modelo avançado: intfloat/e5-mistral-7b-instruct")
 
101
  model = SentenceTransformer(
102
  'intfloat/e5-mistral-7b-instruct',
103
  cache_folder=cache_path,
 
122
  if __name__ == "__main__":
123
  main()
124
 
125
+ # =================================================================================