rishanthrajendhran commited on
Commit
b1fa184
·
verified ·
1 Parent(s): 0dbb35d

Card: link the idealens package and GitHub repo; full card

Browse files
Files changed (1) hide show
  1. README.md +63 -14
README.md CHANGED
@@ -1,24 +1,73 @@
1
  ---
2
  license: apache-2.0
3
- tags: [ai-detection, text-classification]
 
 
 
 
 
 
 
 
4
  extra_gated_prompt: "Access is granted individually. Please say who you are and what you intend to use the weights for."
5
  ---
6
 
7
- # ideadet-modernbert-1m-roles
8
 
9
- Idea-level AI-text detector. Answers **whose ideas a document contains**, not who typed the
10
- sentences: a document whose ideas are a person's is labelled human however much of the surface
11
- an AI produced.
12
 
13
- - **Backbone:** modernbert
14
- - **Training corpus:** 1m
15
- - **Reads at inference:** the outline's role labels only, with the content removed
 
 
 
 
 
16
 
17
- Stored `y=1` means HUMAN. The score is `softmax(logits)[:, 0]` = P(human), and the detector
18
- fires when that falls below a calibrated threshold. Thresholds are quantiles of the score
19
- distribution over held-out human documents and are **not** included here; a cut from one
20
- model or input form is meaningless against another's scores.
21
 
22
- Weights are float32, exactly as used to produce the reported numbers.
23
 
24
- Fuller documentation and evaluation results to follow.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: apache-2.0
3
+ base_model: answerdotai/ModernBERT-large
4
+ library_name: transformers
5
+ language:
6
+ - en
7
+ tags:
8
+ - ai-text-detection
9
+ - idea-provenance
10
+ datasets:
11
+ - rishanthrajendhran/WildOutlines
12
  extra_gated_prompt: "Access is granted individually. Please say who you are and what you intend to use the weights for."
13
  ---
14
 
15
+ # IdeaLens-ModernBERT-L-RolesOnly
16
 
17
+ IdeaLens-ModernBERT-L-RolesOnly is an idea-level detector: it judges **whose ideas a document contains**, not who wrote its words, so a document whose ideas are a person's counts as human however much of its prose an AI wrote. It is one of the detectors released with [IdeaLens](https://huggingface.co/rishanthrajendhran/IdeaLens) and trained on the same data.
 
 
18
 
19
+ | | |
20
+ |---|---|
21
+ | Model | ModernBERT-large with a sequence-classification head |
22
+ | Reads | only the outline's sequence of role labels, one `[Role]` per line, with the content removed |
23
+ | Training data | [WildOutlines](https://huggingface.co/datasets/rishanthrajendhran/WildOutlines), train split |
24
+ | Output | P(human); a document is flagged as AI when P(human) is below a cut |
25
+ | Default cut | 0.05082 (global, 1% false-positive rate) |
26
+ | Hardware | any GPU; a CPU works for small jobs |
27
 
28
+ ## Usage
 
 
 
29
 
30
+ The [idealens](https://github.com/RishanthRajendhran/IdeaLens) package ([PyPI](https://pypi.org/project/idealens/)) runs the whole pipeline: it assigns each document one of the eight formats, extracts the outline with the prompt, role vocabulary and worked examples the detectors were trained with, and scores it with this model and the thresholds in this repo.
31
 
32
+ ```bash
33
+ pip install "idealens[hf]"
34
+ idealens run docs.jsonl -o scores.jsonl --model IdeaLens-ModernBERT-L-RolesOnly
35
+ ```
36
+
37
+ Input is JSONL with a `text` field per document. To score outlines you already have, use `idealens score outlines.jsonl -o scores.jsonl --model IdeaLens-ModernBERT-L-RolesOnly`. Score outlines as extracted; the paraphrasing step is only for training data.
38
+
39
+ In Python:
40
+
41
+ ```python
42
+ import idealens as il
43
+
44
+ with il.Detector("IdeaLens-ModernBERT-L-RolesOnly") as det:
45
+ records = il.run(texts, det) # classify, extract and score
46
+ print(records[0]["p_human"], records[0]["verdict"]["ai"])
47
+ ```
48
+
49
+ ## Thresholds
50
+
51
+ `thresholds.json` holds this model's cuts at 0.1%, 0.5%, 1%, 2% and 5% false-positive rates, fitted on the 80,000 human
52
+ documents of WildOutlines' `calibration` split: one global cut per rate, plus per-format and per-topic cuts. The package applies them. A cut
53
+ fitted for one model does not transfer to another model's scores. For documents unlike English web text, fit cuts on
54
+ human documents from your own domain with `idealens calibrate`.
55
+
56
+ ## Related
57
+
58
+ - [IdeaLens](https://huggingface.co/rishanthrajendhran/IdeaLens): the main idea-level detector, with full documentation
59
+ - [ProseLens](https://huggingface.co/rishanthrajendhran/ProseLens): its prose-level counterpart
60
+ - [idealens](https://github.com/RishanthRajendhran/IdeaLens): the Python package that runs these models
61
+ - [WildOutlines](https://huggingface.co/datasets/rishanthrajendhran/WildOutlines): the training corpus
62
+
63
+ ## Citation
64
+
65
+ ```bibtex
66
+ @article{idealens2026,
67
+ title = {IdeaLens: Detecting AI Ideas in Long-form Writing},
68
+ author = {Anonymous},
69
+ journal = {arXiv preprint arXiv:TBD},
70
+ year = {2026},
71
+ url = {https://arxiv.org/abs/TBD}
72
+ }
73
+ ```