--- title: Actuarial Skills Classifier emoji: 🎯 colorFrom: purple colorTo: blue sdk: gradio sdk_version: 4.44.0 app_file: app.py pinned: true license: apache-2.0 tags: - actuarial - multilabel-classification - sentence-classification - modernbert - skills-extraction - career-planning - job-analysis datasets: - actuarial-jobs language: - en metrics: - f1 - precision - recall --- # 🎯 Actuarial Skills Classifier **Discover the actuarial and programming skills you needβ€”instantly.** This Hugging Face Space uses **multilabel sentence classification** trained on **7,000+ real actuarial job postings** to instantly map your text to employer-demanded skills. Simply describe a task, role, or career goal, and watch relevant actuarial competencies and coding techniques appear. ## πŸš€ Quick Start Try these examples: - *"pricing motor portfolio with GLM and Python"* - *"life insurance reserving and IFRS 17 implementation"* - *"building predictive models for mortality forecasting"* ## ✨ Features ### 🎯 **Skills Analysis** - **Instant Mapping**: Type any description and get relevant skills in seconds - **Confidence Scores**: Each skill shows match percentage (0-100%) - **Smart Categories**: Skills organized by type (Programming, Actuarial, Tools, etc.) - **Learning Roadmap**: Personalized priority-based development plan ### πŸ“¦ **Batch Processing** - Upload CSV or TXT files with multiple descriptions - Analyze up to 100 job postings simultaneously - Identify common skills across multiple roles - Export results for further analysis ### πŸ” **Skills Database** - Browse all 7,000+ learned skills - Search and filter by keywords - Understand market demand for specific competencies ### πŸ“š **Comprehensive Guide** - Detailed usage instructions - Interpretation guidelines - Career planning tips - Example use cases ## πŸŽ“ Use Cases ### **Students & Early Career Professionals** Discover what skills you need to learn for your target role: ``` Input: "I want to become a pricing actuary in motor insurance" Output: GLM modeling, Python, R, Motor insurance, Pricing techniques, Statistical analysis, Excel, SQL, Risk assessment... ``` ### **Career Transition** Identify transferable skills and gaps when changing specializations: ``` Input: "Moving from life insurance reserving to P&C pricing" Output: [Shows overlap + new skills needed for transition] ``` ### **Job Analysis** Paste any actuarial job description to extract all required skills: ``` Input: [Full job posting text] Output: Complete skill breakdown with confidence scores ``` ### **Learning Path Planning** Get a structured roadmap for skill development: ``` Input: "Building machine learning models for insurance pricing" Output: High Priority β†’ Medium Priority β†’ Nice to Have skills ``` ### **Hiring & Recruitment** Analyze what skills are commonly required together in the market: ``` Input: [Multiple job descriptions via batch upload] Output: Most frequent skill combinations and trends ``` ## πŸ“Š Model Details ### Architecture - **Base Model**: [answerdotai/ModernBERT-base](https://huggingface.co/answerdotai/ModernBERT-base) - **Task**: Multi-label sequence classification - **Fine-tuning**: Trained on 7,000+ actuarial job postings - **Labels**: 100+ unique skills spanning actuarial domains, programming, tools, and soft skills ### Training Data Our model was trained on a diverse dataset of real actuarial job postings covering: - **Industries**: Life, P&C, Health, Pensions, Reinsurance - **Regions**: Global actuarial markets - **Experience Levels**: Entry-level to executive positions - **Time Period**: Current market requirements (2023-2025) ### Performance Metrics | Metric | Score | |--------|-------| | F1 Macro | 0.XXX | | F1 Micro | 0.XXX | | Precision | 0.XXX | | Recall | 0.XXX | *(Replace with actual metrics from your training)* ### Skills Coverage The model recognizes skills across multiple categories: **πŸ”€ Programming Languages** - Python, R, SQL, VBA, SAS, C++, Java, JavaScript, Scala **πŸ“Š Actuarial Domains** - Pricing, Reserving, Capital Modeling, Valuation - Life, P&C, Health, Pensions, Reinsurance - Risk Management, Product Development **πŸ€– Technical Skills** - Machine Learning, Deep Learning, GLM, GAM - Statistical Modeling, Data Science, Analytics - NLP, Computer Vision, Time Series **πŸ› οΈ Tools & Software** - Excel, Prophet, ResQ, MoSes, AXIS - PowerBI, Tableau, Qlik - Git, Docker, Apache Spark - TensorFlow, PyTorch, scikit-learn **πŸ’Ό Business Skills** - Communication, Presentation, Leadership - Stakeholder Management, Strategy - Project Management, Team Collaboration **πŸ“œ Certifications** - ASA, FSA, ACAS, FCAS - CERA, CFA, FRM - Regional qualifications (FIA, DAV, etc.) ## 🎯 How It Works ### 1. Input Processing ``` Your text β†’ Tokenization (ModernBERT tokenizer) β†’ Max 512/1024/2048 tokens ``` ### 2. Model Inference ``` Tokenized input β†’ ModernBERT encoder β†’ Multi-label classification head β†’ Sigmoid activation β†’ Probability scores for each skill ``` ### 3. Threshold Application ``` Raw probabilities β†’ Filter by confidence threshold (default 0.5) β†’ Rank by score β†’ Return top K skills ``` ### 4. Post-Processing ``` Predicted skills β†’ Categorization β†’ Learning roadmap generation β†’ Formatted output for display ``` ## πŸ’‘ Tips for Best Results ### βœ… DO: - **Be specific** about domains: "motor insurance pricing" vs. "insurance" - **Mention tools/languages**: "Python GLM model" vs. "statistical model" - **Include context**: "IFRS 17 implementation" vs. "accounting" - **Use industry terms**: "reserving", "capital modeling", "mortality tables" - **Write 2-3 sentences** for richer context ### ❌ AVOID: - Very short phrases (under 10 words) - Generic descriptions: "data analysis job" - Non-actuarial contexts - Overly broad terms without specifics ### 🎚️ Adjusting Parameters **Confidence Threshold:** - **0.3-0.4**: Comprehensive (more skills, some less relevant) - **0.5** (default): Balanced (good mix of precision and recall) - **0.6-0.7**: Precise (fewer skills, highly relevant only) - **0.8+**: Very strict (only very strong matches) **Top K Skills:** - **5-10**: Focus on core skills only - **10-20** (recommended): Comprehensive overview - **0 (unlimited)**: See everything above threshold ## πŸ”§ Technical Implementation ### Requirements ```txt transformers>=4.44.0 torch>=2.0.0 gradio>=4.0.0 pandas numpy ``` ### Local Usage ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch model_name = "your-username/modernbert-actuarial-skills-classifier" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) text = "pricing motor insurance with GLM and Python" inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512) with torch.no_grad(): outputs = model(**inputs) probs = torch.sigmoid(outputs.logits) # Get predictions above threshold threshold = 0.5 predicted_indices = torch.where(probs[0] > threshold)[0] predicted_skills = [model.config.id2label[idx.item()] for idx in predicted_indices] print("Predicted Skills:", predicted_skills) ``` ### API Usage ```python from huggingface_hub import InferenceClient client = InferenceClient() result = client.text_classification( "pricing motor portfolio with GLM and Python", model="your-username/modernbert-actuarial-skills-classifier" ) print(result) ``` ### Batch Processing ```python texts = [ "life insurance reserving with IFRS 17", "P&C pricing using machine learning", "pension scheme valuation" ] inputs = tokenizer(texts, return_tensors="pt", padding=True, truncation=True) with torch.no_grad(): outputs = model(**inputs) probs = torch.sigmoid(outputs.logits) # Process each prediction for i, text_probs in enumerate(probs): print(f"\nText {i+1}: {texts[i]}") top_k = torch.topk(text_probs, k=5) for score, idx in zip(top_k.values, top_k.indices): print(f" {model.config.id2label[idx.item()]}: {score:.2%}") ``` ## πŸ“ˆ Model Training Details ### Data Preparation 1. **Collection**: 7,000+ actuarial job postings from multiple sources 2. **Cleaning**: Anonymization, deduplication, quality filtering 3. **Labeling**: Expert-annotated skill tags (100+ unique labels) 4. **Splitting**: 60% train, 20% validation, 20% test ### Training Configuration ```python - Base Model: answerdotai/ModernBERT-base - Max Sequence Length: [512/1024/2048] tokens - Batch Size: [8/16/32] (depends on GPU) - Learning Rate: 2e-5 - Epochs: 3 - Optimizer: AdamW - Loss Function: BCEWithLogitsLoss (multi-label) - Hardware: [GPU type used] ``` ### Fine-tuning Process 1. **Tokenization**: ModernBERT tokenizer with dynamic padding 2. **Classification Head**: Multi-label binary classifier 3. **Training**: Cross-entropy loss with label smoothing 4. **Evaluation**: F1-macro, F1-micro, Hamming loss 5. **Optimization**: Gradient accumulation, mixed precision (FP16) ## 🎨 Customization ### Adding New Skills To retrain with additional skills: 1. Prepare labeled data in same format 2. Update label mappings 3. Fine-tune with new data 4. Validate on held-out test set ### Adjusting for Other Domains This architecture can be adapted for other professional domains: - Software engineering skills - Medical specializations - Finance & banking competencies - Legal practice areas ## 🀝 Contributing Ways to improve this tool: - Report issues or bugs - Suggest new features - Share feedback on accuracy - Contribute training data - Propose UI/UX improvements ## πŸ“„ License This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details. ## πŸ™ Acknowledgments - **ModernBERT Team**: For the excellent base model - **Hugging Face**: For hosting infrastructure and tools - **Actuarial Community**: For feedback and validation - **Training Data**: Sourced from public job boards and postings ## πŸ“ž Contact & Support - **Model Repository**: [Link to your HuggingFace model] - **Issues**: Use GitHub Issues or HF Discussions - **Email**: [Your contact email] - **LinkedIn**: [Your LinkedIn profile] ## πŸ”— Related Resources ### For Actuarial Students - [Society of Actuaries](https://www.soa.org/) - [Casualty Actuarial Society](https://www.casact.org/) - [Institute and Faculty of Actuaries](https://www.actuaries.org.uk/) ### For Learning Skills - **Python**: [Real Python](https://realpython.com/), [DataCamp](https://www.datacamp.com/) - **R**: [R for Data Science](https://r4ds.had.co.nz/) - **Actuarial Science**: [Coaching Actuaries](https://www.coachingactuaries.com/) - **Machine Learning**: [Fast.ai](https://www.fast.ai/), [Coursera](https://www.coursera.org/) ### Technical Documentation - [Transformers Documentation](https://huggingface.co/docs/transformers) - [ModernBERT Paper](https://arxiv.org/abs/[paper-id]) - [Multi-label Classification Guide](https://huggingface.co/docs/transformers/tasks/sequence_classification) ## πŸ“Š Statistics - **Total Skills**: 100+ unique labels - **Training Samples**: 7,000+ job postings - **Model Size**: ~140M parameters - **Inference Speed**: <1 second per prediction - **Languages Supported**: English (with potential for multilingual expansion) ## πŸš€ Future Enhancements - [ ] Skill clustering and visualization - [ ] Trend analysis over time - [ ] Salary correlation insights - [ ] Course recommendations per skill - [ ] Multi-language support - [ ] Mobile app version - [ ] API endpoint for integration - [ ] Chrome extension for job sites ## πŸ“ Citation If you use this model or tool in your research or application, please cite: ```bibtex @misc{actuarial-skills-classifier, author = {Your Name}, title = {Actuarial Skills Classifier: Multi-label Classification for Career Planning}, year = {2025}, publisher = {HuggingFace}, journal = {HuggingFace Spaces}, howpublished = {\url{https://huggingface.co/spaces/your-username/actuarial-skills-classifier}} } ``` ---
**Built with ❀️ for the actuarial community** [πŸš€ Try the Demo](https://huggingface.co/spaces/your-username/actuarial-skills-classifier) | [πŸ“– Documentation](https://huggingface.co/your-username/modernbert-actuarial-skills-classifier) | [πŸ’¬ Discussions](https://huggingface.co/spaces/your-username/actuarial-skills-classifier/discussions)