| from collections import Counter | |
| from cleaner import BNSSTextCleaner | |
| from db.parsers.bnss.bnss_parser import ( | |
| BNSSParser | |
| ) | |
| from db.parsers.bnss.chunker import ( | |
| LegalChunker, | |
| chunks_to_dicts | |
| ) | |
| from db.parsers.bnss.ingest import ( | |
| LegalIngestionPipeline | |
| ) | |
| # ===================================================== | |
| # CONFIG | |
| # ===================================================== | |
| DOCUMENT_NAME = "BNSS" | |
| COLLECTION_NAME = "bnss" | |
| PDF_PATH = "../../pdfs/bnss.txt" | |
| # ===================================================== | |
| # LOAD | |
| # ===================================================== | |
| with open( | |
| PDF_PATH, | |
| "r", | |
| encoding="utf8" | |
| ) as f: | |
| text = f.read() | |
| # ===================================================== | |
| # CLEAN | |
| # ===================================================== | |
| cleaner = BNSSTextCleaner() | |
| text = cleaner.clean( | |
| text | |
| ) | |
| # ===================================================== | |
| # PARSE | |
| # ===================================================== | |
| parser = BNSSParser() | |
| document = parser.parse( | |
| text | |
| ) | |
| # ===================================================== | |
| # CHUNK | |
| # ===================================================== | |
| chunker = LegalChunker( | |
| document_name=DOCUMENT_NAME | |
| ) | |
| chunks = chunks_to_dicts( | |
| chunker.chunk_document( | |
| document | |
| ) | |
| ) | |
| # ===================================================== | |
| # STATS | |
| # ===================================================== | |
| print( | |
| "\n========== CHUNK STATS ==========\n" | |
| ) | |
| print( | |
| f"Total Chunks: {len(chunks)}" | |
| ) | |
| levels = Counter( | |
| chunk["level"] | |
| for chunk in chunks | |
| ) | |
| for level, count in sorted( | |
| levels.items() | |
| ): | |
| print( | |
| f"{level}: {count}" | |
| ) | |
| # ===================================================== | |
| # INGEST | |
| # ===================================================== | |
| pipeline = LegalIngestionPipeline( | |
| collection_name= | |
| COLLECTION_NAME | |
| ) | |
| pipeline.ingest( | |
| chunks= | |
| chunks, | |
| batch_size= | |
| 64, | |
| recreate_collection= | |
| True | |
| ) | |
| print( | |
| f"\n{DOCUMENT_NAME} successfully indexed." | |
| ) |