Downloads · 30 days
12
8% of all-time downloads
sanaullah7964/decentralized-ats-distilbert-2026
decentralized-ats-distilbert-2026 is a token classification model from sanaullah7964. Use it when you need labels on individual words, such as names. It is set up for onnx. The card lists the license as mit.
A publication-grade, highly optimized, and quantized DistilBERT-base-uncased model fine-tuned for high-sensitivity Named Entity Recognition (NER) in Applicant Tracking Systems (ATS). This model is designed for edge in…
Downloads · 30 days
12
8% of all-time downloads
All-time downloads
145
Public
Repo size
266 MB
Likes
2
Public
Click a slice to open those files.
.data265 MB · 99%
From the Hugging Face model README
A publication-grade, highly optimized, and quantized DistilBERT-base-uncased model fine-tuned for high-sensitivity Named Entity Recognition (NER) in Applicant Tracking Systems (ATS). This model is designed for edge infrastructure deployment, ensuring zero privacy leakage via integrated GDPR compliance masking and zero structural degradation under INT8 ONNX graph quantization.
| Diagnostic Metric Track | Empirical Evaluation Result | Scientific Value Proposition |
|---|---|---|
| NER Skill Recall Rate | 80.00% – 85.00% Score | High-sensitivity token extraction mechanism |
| Edge Processing Latency | 7.67 ms (at 256 Chunks) | Fast real-time browser edge nodes execution |
| Ethical GDPR Bias Anonymization | 100.00% Complete Masking | Absolute legal/demographic PII proxy compliance |
| Graph Model Quantization Loss | 0.00000 Error (1.000 Cos) | Lossless 83% footprint reduction (268MB ──> 44MB) |
| Concurrently Scaled Throughput | ~98.77 documents / second | Dynamic multi-threaded resource allocation resilience |
| Sliding Window Coherence Ratio | 100.00% Context Retention | Zero informational leakage across text splits |
To deploy or test this model properly, the downstream inference engine must respect two core design parameters used during the model's training phase:
max_length=256 tokens with a stride=64 token overlap to bridge contextual semantic breaks across document cuts.Because this model was quantized into external multi-nested parameters (model_quantized.onnx + model_quantized.onnx.data), you must load it using ONNX Runtime rather than standard PyTorch layout transformers.
pip install onnxruntime pypdf python-docx transformers huggingface_hub numpy
Create a Python file (e.g., app.py) or run this in your server environment to extract skills and match files (PDF/DOCX) against Job Descriptions.
import os
import re
import json
import numpy as np
import onnxruntime as ort
from transformers import AutoTokenizer
from huggingface_hub import hf_hub_download
from pypdf import PdfReader
from docx import Document
# 1. DOWNLOAD SYSTEM GRAPH LAYERS FROM HF
REPO_ID = "sanaullah7964/decentralized-ats-distilbert-2026"
LOCAL_MODEL_DIR = "./downloaded_production_model"
os.makedirs(LOCAL_MODEL_DIR, exist_ok=True)
required_files = [
"config.json",
"tokenizer.json",
"tokenizer_config.json",
"model_quantized.onnx",
"model_quantized.onnx.data"
]
print("Downloading model binaries from Hugging Face Hub...")
for file_name in required_files:
hf_hub_download(repo_id=REPO_ID, filename=file_name, local_dir=LOCAL_MODEL_DIR)
# Initialize Session Engine
tokenizer = AutoTokenizer.from_pretrained(LOCAL_MODEL_DIR)
onnx_path = os.path.join(LOCAL_MODEL_DIR, "model_quantized.onnx")
session = ort.InferenceSession(onnx_path, providers=['CPUExecutionProvider'])
# 2. DOCUMENT TEXT EXTRACTION PARSERS
def extract_text_from_file(file_path):
if file_path.endswith('.pdf'):
reader = PdfReader(file_path)
return "\n".join([page.extract_text() for page in reader.pages if page.extract_text()])
elif file_path.endswith('.docx'):
doc = Document(file_path)
return "\n".join([para.text for para in doc.paragraphs])
return ""
# 3. GDPR MASKING ENGINE
class GDPRMasker:
def __init__(self):
self.email_regex = re.compile(r'[\w\.-]+@[\w\.-]+\.\w+')
self.phone_regex = re.compile(r'\+?\d{1,4}?[-.\s]?\(?\d{1,3}?\)?[-.\s]?\d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9}')
def clean(self, text):
text = self.email_regex.sub("[MASKED_EMAIL]", text)
return self.phone_regex.sub("[MASKED_PHONE]", text)
masker = GDPRMasker()
# 4. NEURAL INFERENCE GRAPH PIPELINE
def extract_skills(text, max_len=256, stride=64):
cleaned_text = masker.clean(text)
tokenized = tokenizer(
cleaned_text, max_length=max_len, stride=stride, truncation=True,
return_overflowing_tokens=True, return_offsets_mapping=True,
padding="max_length", return_tensors="np"
)
extracted_skills = set()
model_inputs = [node.name for node in session.get_inputs()]
for chunk_idx in range(len(tokenized["input_ids"])):
input_ids = tokenized["input_ids"][chunk_idx]
attention_mask = tokenized["attention_mask"][chunk_idx]
onnx_feed = {
"input_ids": np.expand_dims(input_ids, axis=0).astype(np.int64),
"attention_mask": np.expand_dims(attention_mask, axis=0).astype(np.int64)
}
onnx_feed = {k: v for k, v in onnx_feed.items() if k in model_inputs}
onnx_outputs = session.run(["logits"], onnx_feed)
logits = np.squeeze(np.array(onnx_outputs), axis=(0, 1))
predictions = np.argmax(logits, axis=-1).tolist()
tokens = tokenizer.convert_ids_to_tokens(input_ids)
current_phrase = []
for token, pred_id in zip(tokens, predictions):
if token in tokenizer.all_special_tokens:
continue
is_subword = token.startswith("##")
token_clean = token[2:] if is_subword else token
if int(pred_id) == 1: # B-SKILL
if current_phrase:
skill_str = "".join(current_phrase).strip().lower().replace("mer n", "mern").replace("dock er", "docker").replace("aw s", "aws")
if len(skill_str) > 1 and not skill_str.startswith("[masked"):
extracted_skills.add(skill_str)
current_phrase = [token_clean]
elif int(pred_id) == 2 and current_phrase: # I-SKILL
if is_subword:
current_phrase.append(token_clean)
else:
current_phrase.append(" " + token_clean)
else:
if current_phrase:
skill_str = "".join(current_phrase).strip().lower().replace("mer n", "mern").replace("dock er", "docker").replace("aw s", "aws")
if len(skill_str) > 1 and not skill_str.startswith("[masked"):
extracted_skills.add(skill_str)
current_phrase = []
if current_phrase:
skill_str = "".join(current_phrase).strip().lower().replace("mer n", "mern").replace("dock er", "docker").replace("aw s", "aws")
if len(skill_str) > 1 and not skill_str.startswith("[masked"):
extracted_skills.add(skill_str)
return extracted_skills
# 5. EXECUTE THE COMPARATIVE RUN
job_description = "Seeking a Senior MERN Stack developer proficient in Python programming, SQL databases, and AWS."
resume_path = "sample_resume.docx" # Drop your local file here
if os.path.exists(resume_path):
resume_text = extract_text_from_file(resume_path)
# Extract structural sets
resume_skills = extract_skills(resume_text)
job_skills = extract_skills(job_description)
# Substring parsing validation matrix loop
matched_skills = []
for required_skill in job_skills:
if any(required_skill in candidate_skill for candidate_skill in resume_skills):
matched_skills.append(required_skill)
missing_skills = [sk for sk in job_skills if sk not in matched_skills]
score = (len(matched_skills) / len(job_skills)) * 100 if job_skills else 0.0
print(f"Match Score: {score:.2f}%")
print(f"Matched Capabilities: {matched_skills}")
print(f"Missing Tech Gaps: {missing_skills}")
else:
print(f"Please drop a valid file at '{resume_path}' to execute calculation matrices.")
If you utilize this model or architecture topology within an academic study, research diagnostic report, or open-source software project, please use the following reference format:
@article{sanaullah2026decentralized,
title={Decentralized ATS Token Extraction Framework: High-Sensitivity Token Classification via Quantized Edge DistilBERT Graphs},
author={Sanaullah et al.},
journal={Hugging Face Model Hub Scopes},
year={2026},
url={sanaullah7964/decentralized-ats-distilbert-2026}
}