CoolFace
Datasetpublic

rafmacalaba/data-use-mentions-extended

Data-use mentions (NER / span extraction) Data mentions extracted from World Bank Policy Research Working Papers, validated by a context-only LLM judge, and formatted for span-extraction (GLiNER / GLiNER2) and token-classification (LFM2.5-encoder) fine-tuning. Labels Three entity types (the judge's specificity axis): NAMED_DATA — a proper name, title, or acronym of a specific data source DESCRIPTIVE_DATA — a source described in words but not named VAGUE_DATA —… See the full description on the dataset page: https://huggingface.co/datasets/rafmacalaba/data-use-mentions-extended.

sourceHugging Facecc-by-4.0updated 1mo agoView on Hugging Face
0likes110downloads
Dataset Card

Data-use mentions (NER / span extraction)

Data mentions extracted from World Bank Policy Research Working Papers, validated by a context-only LLM judge, and formatted for span-extraction (GLiNER / GLiNER2) and token-classification (LFM2.5-encoder) fine-tuning.

Labels

Three entity types (the judge's specificity axis):

  • NAMED_DATA — a proper name, title, or acronym of a specific data source
  • DESCRIPTIVE_DATA — a source described in words but not named
  • VAGUE_DATA — generic data wording with no identifiable source

O (BIO) = background, including hard negatives.

Negative strategy

  • Hard negatives (invalid mentions inside positive chunks) are left untagged — present in the text, no span, so the model learns not to extract them.
  • Negative-only chunks (all mentions invalid) are added at a controlled ratio per split.

Re-chunking (why windows are <= 384 tokens)

The upstream input_text is a full page of the source paper, which routinely exceeds GLiNER/GLiNER2's 384-token context window. Training directly on full pages would truncate them and silently drop mention spans beyond token 384. Every page is therefore split into sliding windows of at most max_tokens (default 384) with overlap tokens of overlap (default 50); spans crossing a window boundary surface whole in the overlapping neighbour.

Configs

  • gliner{"tokenized_text": [...], "ner": [[start, end, label], ...]} (word-level spans)
  • bio{"tokens": [...], "ner_tags": ["O", "B-NAMED_DATA", ...]}
  • gliner2{"input": "...", "output": {"entities": {...}, "entity_descriptions": {...}}} (GLiNER2 flat-NER, span strings + descriptions)

Splits

Document-disjoint train / val / holdout (70% / 15% / 15%). See split_stats.json.

Usage

python
from datasets import load_dataset
gliner  = load_dataset("rafmacalaba/data-use-mentions-extended", "gliner")
bio     = load_dataset("rafmacalaba/data-use-mentions-extended", "bio")
gliner2 = load_dataset("rafmacalaba/data-use-mentions-extended", "gliner2")

Files

  • gliner_{train,val,holdout}.jsonl, bio_{train,val,holdout}.jsonl, gliner2_{train,val,holdout}.jsonl
  • labels.json (label lists), split_stats.json (per-split counts)