CoolFace
Datasetpublic

maayan890/miluim-career-bridge

Miluim Career Bridge - Dataset Synthetic Hebrew-context job-ad pairs translating Israeli reserve-service (miluim) experience into civilian job language, across 8 categories. Generated with Qwen/Qwen2.5-1.5B-Instruct (see notebooks/01_generation.ipynb for the full pipeline). ⚠️ Note: the Hub split shown above (train) is a technical wrapper around the single parquet file. The dataset's actual train/test division is the split column inside the data (9536 train / 1000 test) - filter… See the full description on the dataset page: https://huggingface.co/datasets/maayan890/miluim-career-bridge.

sourceHugging Faceupdated 22d agoView on Hugging Face
0likes169downloads
Dataset Card

Miluim Career Bridge - Dataset

Synthetic Hebrew-context job-ad pairs translating Israeli reserve-service (miluim) experience into civilian job language, across 8 categories. Generated with Qwen/Qwen2.5-1.5B-Instruct (see notebooks/01_generation.ipynb for the full pipeline).

⚠️ Note: the Hub split shown above (train) is a technical wrapper around the single parquet file. The dataset's actual train/test division is the `split` column inside the data (9536 train / 1000 test) - filter on that column, not on the Hub split.

Numbers

Rows10,536
Categories8 / 8
Train / test rows9,536 / 1,000
Rows rejected during generation3,261
Acceptance rate0.0
Generation modelQwen/Qwen2.5-1.5B-Instruct

Categories

  • —Operations & Logistics
  • —Team Leadership
  • —Technical & Maintenance
  • —Communications & IT
  • —Training & Instruction
  • —Administration & HR
  • —Security & Risk Management
  • —Medical & Emergency Response

Schema

columntypenotes
idstringr000000 style, unique
categorystringone of the 8 categories above
service_rolestringreserve-service description, service register
job_titlestringcivilian job title
job_adstringcivilian job-ad snippet, workplace register
focus / seniority / servicecontext / employertonestringprompt-grid provenance
servicewords / adwordsintword counts, bounds (15, 70) / (20, 90)
splitstringtrain or test - the real modeling split
promptid / temperature / genmodel / created_at-generation provenance

Rejection funnel

reasoncount
militarytermin_ad946
tooshortjob_ad757
civiliantermin_service568
copied_example381
forbidden_term350
tooshortjob_title96
tooshortservice_role75
missing_category52
jsonparseerror24
near_duplicate10
category_mismatch1
duplicate1

EDA findings

Full analysis in notebooks/02_eda.ipynb. Headlines:

  • —Length bounds - 0 out-of-bounds rows in the final dataset on any of the three validated fields (servicerole, jobtitle, job_ad); the generation-time validator already enforces this, this is an independent recheck.
  • —Vocabulary split (service register vs. civilian register) - mean word-overlap between service_role and job_ad is 0.251 (0 = fully disjoint vocab, 1 = identical). 0 military-term leaks into jobad, 0 civilian-term leaks into servicerole - both zero on the full dataset.
  • —Category balance - ranges from 884 (Medical & Emergency Response) to 1555 (Technical & Maintenance) rows. The gap traces to acceptance rate, not to sampling: categories are requested round-robin (equal attempts each), but rows whose natural vocabulary sits closer to FORBIDDEN_TERMS get rejected more often - e.g. medical/emergency phrasing more easily reads as injury-adjacent than logistics or IT phrasing does.
  • —Known check-ordering caveat - validate() in 01 checks word-count bounds before term-violation checks, so a record failing both gets logged only as too_short_*. 153 of 928 (16.5%) too_short_* rejections would also have failed a term check - underestimates true term-violation rejections by that amount in the funnel above. Does not affect any row in the accepted dataset.

Usage

python
import pandas as pd
df = pd.read_parquet("hf://datasets/maayan890/miluim-career-bridge/data/dataset.parquet")
train, test = df[df.split == "train"], df[df.split == "test"]