Text Classification
Model2Vec
English
poster-sentry
document-classification
scientific-posters
multimodal
poster-detection
machine-actionable
FAIR-data
posters-science
quality-control
Instructions to use fairdataihub/poster-sentry with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Model2Vec
How to use fairdataihub/poster-sentry with Model2Vec:
from model2vec import StaticModel model = StaticModel.from_pretrained("fairdataihub/poster-sentry") embeddings = model.encode(["It's dangerous to go alone!", "It's a secret to everybody."]) print(embeddings.shape) - Notebooks
- Google Colab
- Kaggle
License-screened retrain (v1.3.0): new head trained on the 3,298-document corpus; card numbers updated
Browse files- README.md +28 -27
- models/poster_sentry_head.npz +1 -1
README.md
CHANGED
|
@@ -35,11 +35,12 @@ Developed by the [**FAIR Data Innovations Hub**](https://fairdataihub.org/) at t
|
|
| 35 |
|
| 36 |
| Version | Date | Notes |
|
| 37 |
|---------|------|-------|
|
|
|
|
| 38 |
| **1.2.0** | 2026-09-01 | Stacked head: the 512-d text embedding is scored by a stage-one logistic regression whose poster probability becomes a single text-score feature for the final classifier over [text_score + 15 visual + 15 structural] = 31 features. Held-out accuracy 92.9%. Head weights now store a zero first column so softmax reproduces sklearn's sigmoid exactly; earlier heads doubled the logit, which sharpened reported confidences (decisions at 0.5 were unaffected). Flat heads remain loadable by the package. |
|
| 39 |
| **1.1.0** | 2026-08-28 | Feature extraction moved off the AGPL-licensed PyMuPDF to pdfplumber (text and structure) and pypdfium2 (page rendering), both permissively licensed, so the whole stack is MIT-compatible. The head was retrained on the re-extracted features; held-out accuracy is 89.2%. |
|
| 40 |
| **1.0.0** | 2026-08-18 | Head trained on the human-validated corpus: 3,381 documents labeled by a three-reviewer survey (Krippendorff's alpha 0.79) with blinded adjudication of the 439 contested documents. |
|
| 41 |
|
| 42 |
-
Earlier unversioned weights (April 2026) were trained on heuristically labeled data and are superseded
|
| 43 |
|
| 44 |
## Related Models & Tools
|
| 45 |
|
|
@@ -48,7 +49,7 @@ Earlier unversioned weights (April 2026) were trained on heuristically labeled d
|
|
| 48 |
| **PosterSentry** | Multimodal poster classifier (this model) | [fairdataihub/poster-sentry](https://huggingface.co/fairdataihub/poster-sentry) |
|
| 49 |
| **poster-sentry** | Installable classifier package | [GitHub](https://github.com/fairdataihub/poster-sentry) |
|
| 50 |
| **poster-sentry-training** | Training code and replication | [GitHub](https://github.com/fairdataihub/poster-sentry-training) |
|
| 51 |
-
| **poster-sentry-training-data** | Human-validated training dataset (3,
|
| 52 |
| **poster-sentry-evaluation-paper-code** | Reproducible analysis for the paper | [GitHub](https://github.com/fairdataihub/poster-sentry-evaluation-paper-code) |
|
| 53 |
| **Llama-3.1-8B-Poster-Extraction** | Poster → structured JSON extraction | [fairdataihub/Llama-3.1-8B-Poster-Extraction](https://huggingface.co/fairdataihub/Llama-3.1-8B-Poster-Extraction) |
|
| 54 |
| **poster2json** | Python library for poster extraction | [PyPI](https://pypi.org/project/poster2json/) · [Docs](https://fairdataihub.github.io/poster2json/) · [GitHub](https://github.com/fairdataihub/poster2json) |
|
|
@@ -101,16 +102,16 @@ Evaluated against human-validated labels (three-reviewer survey with blinded adj
|
|
| 101 |
|
| 102 |
| Metric | Value |
|
| 103 |
|--------|-------|
|
| 104 |
-
| **Held-out accuracy** (
|
| 105 |
-
| Macro F1 (held-out) | 0.
|
| 106 |
-
| Precision / Recall / F1 (poster) | 0.
|
| 107 |
-
| Precision / Recall / F1 (non-poster) | 0.
|
| 108 |
-
| Nested out-of-fold accuracy (all 3,
|
| 109 |
-
| Panel reliability with the model as a fourth rater | alpha 0.
|
| 110 |
-
| Calibration (out-of-fold) | Brier 0.
|
| 111 |
| Classifier speed | under one second per file on a CPU (PDF parsing is the bottleneck) |
|
| 112 |
|
| 113 |
-
Errors concentrate where the human panel itself divided: out-of-fold agreement is 96.
|
| 114 |
|
| 115 |
### Top Features by Importance
|
| 116 |
|
|
@@ -118,29 +119,29 @@ Standardized logistic regression coefficients of the trained head (positive push
|
|
| 118 |
|
| 119 |
| Rank | Feature | Coefficient | Signal |
|
| 120 |
|------|---------|------------|--------|
|
| 121 |
-
| 1 | `page_count` | -3.
|
| 122 |
-
| 2 | `size_per_page_kb` | +2.
|
| 123 |
-
| 3 | `line_count` | +
|
| 124 |
-
| 4 | `file_size_kb` | -1.
|
| 125 |
-
| 5 | `mean_g` | +1.
|
| 126 |
-
| 6 | `
|
| 127 |
-
| 7 | `
|
| 128 |
-
| 8 | `edge_density` | +0.
|
| 129 |
-
| 9 | `
|
| 130 |
-
| 10 | `
|
| 131 |
-
|
| 132 |
-
Every coefficient of the final classifier is a named feature; the whole text channel enters as the single `text_score` (+0.
|
| 133 |
|
| 134 |
## Training Data
|
| 135 |
|
| 136 |
-
Trained on **3,
|
| 137 |
|
| 138 |
| Class | Count | Label provenance |
|
| 139 |
|-------|-------|------------------|
|
| 140 |
-
| **Poster** | 1,
|
| 141 |
-
| **Non-poster** | 1,
|
| 142 |
|
| 143 |
-
Three reviewers independently rated
|
| 144 |
|
| 145 |
Training data: [fairdataihub/poster-sentry-training-data](https://huggingface.co/datasets/fairdataihub/poster-sentry-training-data)
|
| 146 |
|
|
@@ -211,7 +212,7 @@ Training completes in ~40 minutes on CPU (PDF rendering is the bottleneck, not t
|
|
| 211 |
title = {PosterSentry: Multimodal Scientific Poster Classifier},
|
| 212 |
author = {O'Neill, Jamey and Portillo, Dorian and Zeinali, Nahid and Soundarajan, Sanjay and Blake, Gerard and Sarin, Parth and Buttrick, Adam and Patel, Bhavesh},
|
| 213 |
year = {2026},
|
| 214 |
-
version = {1.
|
| 215 |
url = {https://huggingface.co/fairdataihub/poster-sentry},
|
| 216 |
note = {Part of the posters.science initiative}
|
| 217 |
}
|
|
|
|
| 35 |
|
| 36 |
| Version | Date | Notes |
|
| 37 |
|---------|------|-------|
|
| 38 |
+
| **1.3.0** | 2026-09-21 | License-screened retrain: 84 documents whose source-repository licenses do not permit redistribution were removed, and the head was retrained on the resulting 3,298-document corpus. Held-out accuracy 93.1%. |
|
| 39 |
| **1.2.0** | 2026-09-01 | Stacked head: the 512-d text embedding is scored by a stage-one logistic regression whose poster probability becomes a single text-score feature for the final classifier over [text_score + 15 visual + 15 structural] = 31 features. Held-out accuracy 92.9%. Head weights now store a zero first column so softmax reproduces sklearn's sigmoid exactly; earlier heads doubled the logit, which sharpened reported confidences (decisions at 0.5 were unaffected). Flat heads remain loadable by the package. |
|
| 40 |
| **1.1.0** | 2026-08-28 | Feature extraction moved off the AGPL-licensed PyMuPDF to pdfplumber (text and structure) and pypdfium2 (page rendering), both permissively licensed, so the whole stack is MIT-compatible. The head was retrained on the re-extracted features; held-out accuracy is 89.2%. |
|
| 41 |
| **1.0.0** | 2026-08-18 | Head trained on the human-validated corpus: 3,381 documents labeled by a three-reviewer survey (Krippendorff's alpha 0.79) with blinded adjudication of the 439 contested documents. |
|
| 42 |
|
| 43 |
+
Earlier unversioned weights (April 2026) were trained on heuristically labeled data and are superseded.
|
| 44 |
|
| 45 |
## Related Models & Tools
|
| 46 |
|
|
|
|
| 49 |
| **PosterSentry** | Multimodal poster classifier (this model) | [fairdataihub/poster-sentry](https://huggingface.co/fairdataihub/poster-sentry) |
|
| 50 |
| **poster-sentry** | Installable classifier package | [GitHub](https://github.com/fairdataihub/poster-sentry) |
|
| 51 |
| **poster-sentry-training** | Training code and replication | [GitHub](https://github.com/fairdataihub/poster-sentry-training) |
|
| 52 |
+
| **poster-sentry-training-data** | Human-validated training dataset (3,298 samples) | [HuggingFace](https://huggingface.co/datasets/fairdataihub/poster-sentry-training-data) |
|
| 53 |
| **poster-sentry-evaluation-paper-code** | Reproducible analysis for the paper | [GitHub](https://github.com/fairdataihub/poster-sentry-evaluation-paper-code) |
|
| 54 |
| **Llama-3.1-8B-Poster-Extraction** | Poster → structured JSON extraction | [fairdataihub/Llama-3.1-8B-Poster-Extraction](https://huggingface.co/fairdataihub/Llama-3.1-8B-Poster-Extraction) |
|
| 55 |
| **poster2json** | Python library for poster extraction | [PyPI](https://pypi.org/project/poster2json/) · [Docs](https://fairdataihub.github.io/poster2json/) · [GitHub](https://github.com/fairdataihub/poster2json) |
|
|
|
|
| 102 |
|
| 103 |
| Metric | Value |
|
| 104 |
|--------|-------|
|
| 105 |
+
| **Held-out accuracy** (495 documents) | **93.1%** (95% CI 90.6 to 95.0) |
|
| 106 |
+
| Macro F1 (held-out) | 0.931 |
|
| 107 |
+
| Precision / Recall / F1 (poster) | 0.918 / 0.948 / 0.933 |
|
| 108 |
+
| Precision / Recall / F1 (non-poster) | 0.946 / 0.915 / 0.930 |
|
| 109 |
+
| Nested out-of-fold accuracy (all 3,298 documents, 5-fold) | 93.9% |
|
| 110 |
+
| Panel reliability with the model as a fourth rater | alpha 0.792 -> 0.795 (unchanged) |
|
| 111 |
+
| Calibration (out-of-fold) | Brier 0.046, ECE 0.016 |
|
| 112 |
| Classifier speed | under one second per file on a CPU (PDF parsing is the bottleneck) |
|
| 113 |
|
| 114 |
+
Errors concentrate where the human panel itself divided: out-of-fold agreement is 96.4% on documents the panel rated unanimously and 77.3% on documents decided two to one.
|
| 115 |
|
| 116 |
### Top Features by Importance
|
| 117 |
|
|
|
|
| 119 |
|
| 120 |
| Rank | Feature | Coefficient | Signal |
|
| 121 |
|------|---------|------------|--------|
|
| 122 |
+
| 1 | `page_count` | -3.26 | More pages pushes away from poster |
|
| 123 |
+
| 2 | `size_per_page_kb` | +2.42 | Dense, high-resolution single pages |
|
| 124 |
+
| 3 | `line_count` | +1.94 | Posters pack many short text lines |
|
| 125 |
+
| 4 | `file_size_kb` | -1.70 | Multi-page documents are bigger overall |
|
| 126 |
+
| 5 | `mean_g` | +1.10 | Colorful, non-white pages |
|
| 127 |
+
| 6 | `is_landscape` | +1.00 | Many posters are landscape |
|
| 128 |
+
| 7 | `white_space_ratio` | -0.95 | Sparse, white pages push toward non-poster |
|
| 129 |
+
| 8 | `edge_density` | +0.86 | Visually busy layouts |
|
| 130 |
+
| 9 | `page_width_pt` | +0.80 | Posters are physically wide |
|
| 131 |
+
| 10 | `img_width` | +0.79 | Large rendered width |
|
| 132 |
+
|
| 133 |
+
Every coefficient of the final classifier is a named feature; the whole text channel enters as the single `text_score` (+0.68, rank 13 of 31), whose value concentrates on the documents where geometry misleads.
|
| 134 |
|
| 135 |
## Training Data
|
| 136 |
|
| 137 |
+
Trained on **3,298 documents with human-validated labels**, zero synthetic data:
|
| 138 |
|
| 139 |
| Class | Count | Label provenance |
|
| 140 |
|-------|-------|------------------|
|
| 141 |
+
| **Poster** | 1,651 | Three-reviewer survey; unanimous panel label or blinded adjudication |
|
| 142 |
+
| **Non-poster** | 1,647 | Three-reviewer survey; unanimous panel label or blinded adjudication |
|
| 143 |
|
| 144 |
+
Three reviewers independently rated 3,486 candidate documents that passed license screening (inter-rater Krippendorff's alpha 0.79); the 430 documents without a unanimous panel were settled in a blinded adjudication review. After removing 181 near-duplicate documents and 7 with unavailable PDFs, the remaining 3,298 form the training corpus. Applied to the full corpus of 30,139 readable repository PDFs labeled as posters, PosterSentry classifies 80.5% as posters: roughly one in five records labeled as posters is something else.
|
| 145 |
|
| 146 |
Training data: [fairdataihub/poster-sentry-training-data](https://huggingface.co/datasets/fairdataihub/poster-sentry-training-data)
|
| 147 |
|
|
|
|
| 212 |
title = {PosterSentry: Multimodal Scientific Poster Classifier},
|
| 213 |
author = {O'Neill, Jamey and Portillo, Dorian and Zeinali, Nahid and Soundarajan, Sanjay and Blake, Gerard and Sarin, Parth and Buttrick, Adam and Patel, Bhavesh},
|
| 214 |
year = {2026},
|
| 215 |
+
version = {1.3.0},
|
| 216 |
url = {https://huggingface.co/fairdataihub/poster-sentry},
|
| 217 |
note = {Part of the posters.science initiative}
|
| 218 |
}
|
models/poster_sentry_head.npz
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 20002
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d23af6c5235bff4e1521261fc615933c119880c6cd13f46fa53d30af69d832d7
|
| 3 |
size 20002
|