rafmacalaba commited on
Commit
e9ffddd
·
verified ·
1 Parent(s): 027ed52

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +84 -0
README.md ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ pipeline_tag: token-classification
4
+ tags:
5
+ - ner
6
+ - gliner2
7
+ - data-use
8
+ ---
9
+
10
+ # gliner2_agents_v3
11
+
12
+ Fine-tune of `fastino/gliner2-large-v1` (GLiNER2, span architecture) for data-use mention extraction
13
+ (dataset / survey / census / registry mentions in economics research papers).
14
+
15
+ ## Annotation workflow
16
+
17
+ Labels were produced with a locally run LLM through the passage-annotation harness, with human-in-the-loop passage review and adjudication under the project doctrine. Holdout F1 is therefore agreement with the annotating agent, not owner accuracy.
18
+ - dataset: `rafmacalaba/datause-agents-v3` (config `gliner2`)
19
+ - holdout: 2,108 passages, 1,916 spans
20
+ - origins scored: fcv_pads_east_africa, prwp, reliefweb, umar_pads
21
+
22
+ ## Labels
23
+ - `NAMED_DATA` — a proper name, title, or acronym of a specific data source
24
+ - `DESCRIPTIVE_DATA` — a source described in words but not named
25
+ - `VAGUE_DATA` — generic data wording with no identifiable source
26
+
27
+ ## Training
28
+ - base model: `fastino/gliner2-large-v1`
29
+ - dataset: `rafmacalaba/datause-agents-v3` (gliner2 config)
30
+ - epochs: 5
31
+ - encoder LR: 1e-05
32
+ - task LR: 0.0005
33
+ - batch size: 8
34
+ - precision: bf16
35
+
36
+ ## Evaluation (holdout, label-agnostic)
37
+
38
+ 2 gold mention(s) in the holdout sit inside a run the word splitter glues into one token (a URL, `EM-DAT_`), so no GLiNER2-family model can address them as a span; they are removed from every split before training and scoring. Listed in `holdout_metrics.json`.
39
+
40
+ | thr | tp | fp | fn | precision | recall | f0.5 | f1 |
41
+ | --- | --- | --- | --- | --- | --- | --- | --- |
42
+ | 0.10 | 1752 | 1279 | 161 | 0.5780 | 0.9158 | 0.6241 | 0.7087 |
43
+ | 0.20 | 1673 | 909 | 240 | 0.6479 | 0.8745 | 0.6834 | 0.7444 |
44
+ | 0.30 | 1582 | 682 | 331 | 0.6988 | 0.8270 | 0.7211 | 0.7575 |
45
+ | 0.40 | 1466 | 479 | 447 | 0.7537 | 0.7663 | 0.7562 | 0.7600 |
46
+ | 0.50 | 1330 | 302 | 583 | 0.8150 | 0.6952 | 0.7878 | 0.7504 |
47
+ | 0.60 | 1122 | 196 | 791 | 0.8513 | 0.5865 | 0.7808 | 0.6945 |
48
+ | 0.70 | 925 | 125 | 988 | 0.8810 | 0.4835 | 0.7566 | 0.6244 |
49
+ | 0.80 | 703 | 59 | 1210 | 0.9226 | 0.3675 | 0.7085 | 0.5256 |
50
+ | 0.90 | 345 | 18 | 1568 | 0.9504 | 0.1803 | 0.5126 | 0.3032 |
51
+
52
+ **Best F0.5**: 0.7878 (thr=0.5)
53
+ **Best F1**: 0.7600 (thr=0.4)
54
+
55
+ ## Where it fails (holdout, score threshold 0.50)
56
+
57
+ Entity-level counts at the reported threshold, matched with the same Jaccard >= 0.5
58
+ rule as the table above — these are the spans those numbers were computed from.
59
+
60
+ | tp | fp | fn | redundant (same entity found twice) |
61
+ | ---: | ---: | ---: | ---: |
62
+ | 1330 | 302 | 583 | 222 |
63
+
64
+ **False positives**, by closeness to a gold span: near_miss 6 · partial 40 · spurious 293
65
+
66
+ **Misses**, by span length: 1-2 tokens 196 · 3-5 tokens 283 · 6+ tokens 104
67
+
68
+ **Misses, by cause**: 161 never emitted at all (proposal / abstention — no threshold moves these) · 422 emitted but scored below the cutoff (calibration).
69
+
70
+ **Label errors on matched spans**: 176 of 1330 — boundary right, class wrong.
71
+
72
+ **Suppression**: 941 passages carry no gold span at all; the model still emitted 168 spans on 518 of them.
73
+
74
+ | label | gold clusters | recalled | recall |
75
+ | --- | ---: | ---: | ---: |
76
+ | DESCRIPTIVE_DATA | 548 | 244 | 0.4453 |
77
+ | NAMED_DATA | 1355 | 1084 | 0.8000 |
78
+ | VAGUE_DATA | 10 | 2 | 0.2000 |
79
+
80
+ Per-passage detail is in `holdout_predictions.jsonl` — one record per holdout passage
81
+ with the passage text, every prediction with its score and label (`kept` marks the
82
+ ones above the threshold above), and which of them matched. Re-derive any threshold
83
+ from it; gold and predictions are both span text plus character offsets.
84
+