Prediction of Personality Type via Video Résumé and Job Recommendations Considering OCEAN, MBTI, and the Dark Triad Indicators
This project aims to predict an individual's personality type based on the OCEAN model using multiple domains. The solution is transparent and ensures high-speed operation — approximately 1 second per video (note that the model is quantized). Additionally, a list of professions has been compiled, mapped to personality types based on OCEAN, MBTI, and the Dark Triad.
-
The model processes three types of data (text, audio, video), allowing for precise analysis of personality characteristics based on the OCEAN system and converting them into MBTI. This approach ensures:
- Deep contextual understanding,
- High noise resilience,
- Enhanced emotional interpretation,
- Decision transparency.
-
Using empirical data and the distribution of OCEAN across each MBTI type, accurate conversion is implemented:
- A list of professions was compiled and processed.
- Professions were mapped to OCEAN and MBTI personality types.
- For MBTI — threshold values correlated with OCEAN were used,
- For the "Dark Triad" — coefficients for each OCEAN trait to build a profile for each characteristic.
-
High processing speed (~1 second per video) due to an optimized quantized model. Suitable for handling large datasets, critical for quick selection and ranking.
-
We use BM25 search for textual vacancy analysis and personalize the ranking using OCEAN assessment. This allows finding the most relevant vacancies for each candidate.
- OCEAN-to-MBTI and Dark Triad Transformation: Scientifically grounded and accurate transformation enables expanded analysis options.
- Multimodal Approach: Analysis of video, audio, and text ensures maximum assessment accuracy.
- Two-Stage Job Ranking: Technology that enhances recommendation relevance.
- Python, PyTorch, OpenCV, Librosa, Whisper, Streamlit
- SQLite, SQLAlchemy
- Transformers, FaceNet, MTCNN, Catboost, Sber LightAutoML
The project stands out for its precise integration of three modalities, the ability to translate the OCEAN system into MBTI and the Dark Triad, and a high level of interpretability for all participants (employers and candidates).
- A personal dashboard for video uploads.
- Receiving textual feedback.
- Viewing job recommendations with a ranked vacancy list.
- Additional feature: earning on the platform.
- Admin panel for uploading multiple videos.
- Specifying desired profession and personality type.
- Receiving a ranked list of candidates.
- Translation of results into MBTI types.
- Conversion to other personality assessment systems.
- Textual explanation of user strengths and weaknesses.
model/ — personality type prediction model. professions/ — mapping of professions. translation/ — tools for translating between OCEAN, MBTI, and other systems. app_with_model.py - application with model prediction (long initialization, memory requirements). app.py — main application.
Instructions for installing and launching the project will be provided in subsequent sections.
FFmpeg is a powerful tool for processing multimedia files. It enables numerous audio and video operations.
ffmpeg-python is a Python library providing a convenient interface to use FFmpeg's capabilities within Python code. It allows easy integration of media processing functions into applications.
-
Install Homebrew (if not already installed):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh) -
Install FFmpeg:
brew install ffmpeg
-
Check the installation:
ffmpeg -version
-
Download FFmpeg: Go to the FFmpeg official website and select the Windows version. It is recommended to use the build from gyan.dev or another reliable source.
-
Unpack the archive: After downloading the archive (usually in the format .zip), unpack it.
-
Add FFmpeg to the PATH:
- Press
Win + R, type sysdm.cpl and press Enter. - Go to the Advanced tab and click on Environment Variables.
- In the "System Variables" section, find the Path variable, select it and click "Edit".
- Click "Create" and add the path to the bin folder inside the FFmpeg directory, for example: C:ffmpegbin.
- Click "OK" to save the changes.
- Press
-
Check the installation: Open the command prompt (CMD) and type:
ffmpeg -version
If the installation is successful, you will see information about the FFmpeg version.
To install FFmpeg on Linux, use your distribution's package manager.:
bash sudo apt-get install ffmpeg
After installing FFmpeg, you can install the ffmpeg-python library via pip:
bash pip install ffmpeg-python
Done. Now you can use the app.
Note: FFmpeg is needed to run Streamlit, don't forget about it!
- Docker — Make sure that Docker is installed on your device. If Docker is not installed, download it from the official website: Docker.
-
Clone the repository:
git clone https://github.com/nZiben/video_cv_matching.git cd video_cv_matching -
Build a Docker image:
docker build -t video_cv_matching_image . -
Launch the Docker container:
docker run -p 8501:8501 video_cv_matching_image
-
Open the app:
- Go to the browser and open http://localhost:8501 to see the application interface.
- Open a new terminal.
- Enter the command to find out the ID of the running container.:
docker ps
- Use the
docker stopcommand to stop the container:Replace thedocker stop <CONTAINER_ID>
<CONTAINER_ID>with the ID of your container.
To restart a previously stopped container:
-
Find his
CONTAINER IDor name using:docker ps -a
-
Then use the command:
docker start <CONTAINER_ID or name>
If you need to make changes to the image and reassemble the container:
-
Rebuild the image:
docker build -t video_cv_matching_image . -
Restart the container:
docker run -p 8501:8501 video_cv_matching_image
-Dependency Update: If you change dependencies, don't forget to update requirements.txt before reassembling the image.
- Using Docker Compose: If the project requires multiple services, you can add the
docker-compose' file.ymlfor easier startup.