File size: 3,330 Bytes
a928595
7044586
 
 
 
a928595
7044586
a928595
 
 
 
 
7044586
 
d60989a
7044586
 
 
d60989a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e84a893
 
d60989a
 
e84a893
 
 
 
d60989a
7044586
d60989a
 
 
 
 
7044586
d60989a
7044586
d60989a
7044586
a928595
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
---
title: Resume Screener and Skill Extractor
emoji: 📄
colorFrom: blue
colorTo: green
sdk: streamlit
sdk_version: 1.31.0
app_file: app.py
pinned: false
license: mit
---

# Resume Screener and Skill Extractor

A Hugging Face Space application for efficiently screening resumes against job descriptions using a hybrid ranking approach that combines semantic similarity with keyword-based scoring.

## Features

- **Hybrid Resume Ranking**: Combines semantic similarity (via NV-Embed-v2) with keyword-based BM25 scoring
- **Skill Extraction**: Automatically identifies relevant skills from resumes based on job requirements
- **Fast Search**: Uses FAISS for efficient similarity search with large resume collections
- **Multi-format Support**: Processes PDFs, DOCX, TXT, and CSV files
- **Explanation Generation**: Provides explanations for why each resume was ranked highly
- **Visualization**: Displays comparative scores and key matches for easy analysis
- **Batch Processing**: Supports uploading multiple resumes simultaneously

## How It Works

1. **Input**: Provide a job description and upload resumes (PDF, DOCX, TXT, or CSV format)
2. **Processing**: The system creates embeddings for both the job description and resumes using the NV-Embed-v2 model
3. **Ranking**: Calculates a hybrid score based on:
   - Semantic similarity (cosine similarity between embeddings)
   - Keyword relevance (BM25 scoring)
4. **Results**: Returns the top 10 most suitable resumes with:
   - Overall score and individual component scores
   - Matched skills and key phrases
   - Explanations for why each resume was ranked highly

## Technical Details

### Models Used
- **NV-Embed-v2**: State-of-the-art embedding model for semantic similarity
- **QwQ-32B**: Used for generating explanations (simulated in the current version)

### Libraries
- **FAISS**: Facebook AI Similarity Search for fast vector similarity search
- **rank_bm25**: Implementation of the BM25 algorithm for keyword-based scoring
- **Streamlit**: For the user interface
- **Hugging Face Transformers**: For accessing and using the models

## Configuration Options

The sidebar provides several configuration options:
- **Model Selection**: Choose which embedding model to use
- **Ranking Weights**: Adjust the balance between semantic similarity and keyword matching
- **Results Count**: Set how many top results to display
- **FAISS Usage**: Toggle the use of FAISS for faster searching with large resume collections

## Getting Started

### Online Usage
1. Visit the Hugging Face Space at [URL]
2. Enter a job description
3. Upload resumes (PDF, DOCX, TXT, or CSV)
4. Click "Find Top Candidates"
5. Review the results

### Local Installation

```bash
git clone https://huggingface.co/spaces/[username]/Resume_Screener_and_Skill_Extractor
cd Resume_Screener_and_Skill_Extractor
pip install -r requirements.txt
streamlit run app.py
```

## Future Enhancements

- Integration with Hugging Face datasets for loading resumes directly
- Enhanced skill extraction using more sophisticated NLP techniques
- Real-time explanation generation using QwQ-32B
- Support for additional file formats and languages
- Customizable scoring algorithms and weights

## License

MIT License

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference