Instructions to use CaseLoop/rights-navigator with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use CaseLoop/rights-navigator with Transformers:
# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokenizer = AutoTokenizer.from_pretrained("CaseLoop/rights-navigator") model = AutoModelForSeq2SeqLM.from_pretrained("CaseLoop/rights-navigator", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Download pdf_simplifier_module/src/inference.py from CaseLoop/rights-navigator: direct link, hf CLI and curl.
- Browser
- Download file 1.78 kB
-
https://huggingface.co/CaseLoop/rights-navigator/resolve/main/pdf_simplifier_module/src/inference.py
- Command line
-
hf download hf://CaseLoop/rights-navigator/pdf_simplifier_module/src/inference.py
-
curl -L -o inference.py https://huggingface.co/CaseLoop/rights-navigator/resolve/main/pdf_simplifier_module/src/inference.py
1.78 kB
| from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
| from src.pdf_extractor import extract_pdf_chunks | |
| import torch | |
| class DocumentSimplifier: | |
| def __init__(self, model_path: str = "./models/saved_simplifier"): | |
| self.tokenizer = AutoTokenizer.from_pretrained(model_path) | |
| self.model = AutoModelForSeq2SeqLM.from_pretrained(model_path) | |
| self.model.eval() | |
| def simplify_pdf(self, pdf_path: str) -> str: | |
| chunks = extract_pdf_chunks(pdf_path) | |
| if not chunks: | |
| return "No extractable text found in this PDF. It might be a pure scanned image without an OCR layer." | |
| simplified_paragraphs = [] | |
| print(f"\nProcessing {len(chunks)} text section(s)...") | |
| for idx, chunk in enumerate(chunks, 1): | |
| prompt = f"simplify bureaucratic text into simple language: {chunk}" | |
| inputs = self.tokenizer(prompt, return_tensors="pt", max_length=512, truncation=True) | |
| with torch.no_grad(): | |
| output_tokens = self.model.generate( | |
| **inputs, | |
| max_length=120, | |
| min_length=20, | |
| num_beams=4, | |
| no_repeat_ngram_size=3, # Blocks 3-word repeating loops | |
| repetition_penalty=2.5, # Strongly penalizes token reuse | |
| length_penalty=1.0, | |
| early_stopping=True | |
| ) | |
| summary = self.tokenizer.decode(output_tokens[0], skip_special_tokens=True) | |
| simplified_paragraphs.append(f"• {summary}") | |
| print(f" └── Completed section {idx}/{len(chunks)}") | |
| return "\n\n".join(simplified_paragraphs) |