beeROOT_instancia_7 / examples /create_chunks.py
Carlex22's picture
Upload 2 files
05ebfc6 verified
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Helper: Criar chunks de dados para beeRoot
"""
import json
import tarfile
import os
from pathlib import Path
def create_chunk(documents, chunk_id, output_dir="chunks_dados"):
"""
Cria um chunk .tar.gz a partir de documentos
Args:
documents: Lista de dicts com 'Id' e 'ementa'
chunk_id: Número do chunk (1, 2, 3...)
output_dir: Diretório de saída
"""
# Limita a 500 docs por chunk
documents = documents[:500]
# Nomes
chunk_name = f"chunk_dados_{chunk_id:06d}"
jsonl_path = f"{chunk_name}.jsonl"
tar_path = f"{output_dir}/{chunk_name}.tar.gz"
# Cria output dir
Path(output_dir).mkdir(exist_ok=True)
# Cria JSONL
with open(jsonl_path, 'w', encoding='utf-8') as f:
for doc in documents:
# Valida campos obrigatórios
if 'Id' not in doc or 'ementa' not in doc:
print(f"⚠️ Documento sem Id ou ementa: {doc}")
continue
f.write(json.dumps(doc, ensure_ascii=False) + '\n')
# Compacta
with tarfile.open(tar_path, 'w:gz') as tar:
tar.add(jsonl_path, arcname='jurisprudencias.jsonl')
# Remove temp
os.remove(jsonl_path)
print(f"✅ Criado: {tar_path} ({len(documents)} docs)")
return tar_path
# Exemplo de uso
if __name__ == '__main__':
# Seus documentos
docs = [
{"Id": "001", "ementa": "Decisão sobre FGTS..."},
{"Id": "002", "ementa": "Recurso sobre aposentadoria..."},
# ... até 500 documentos
]
# Cria chunk
create_chunk(docs, chunk_id=1, output_dir="meus_chunks")
# Para múltiplos chunks
all_docs = [...] # Sua lista completa
chunk_size = 500
for i in range(0, len(all_docs), chunk_size):
chunk_docs = all_docs[i:i+chunk_size]
chunk_id = (i // chunk_size) + 1
create_chunk(chunk_docs, chunk_id)