Solution of practical task 1
Task: Ranking of potential candidates by professional responsibilities
The solution of the practical task is performed in two stages. At the first stage it is necessary to use the OCEAN-AI library to obtain predictions (personality traits scores). The second step is to use the methods _candidate_ranking and _priority_skill_calculation from the OCEAN-AI library to solve the presented practical task. Examples of the results of the work and implementation are presented below.
Thus, the OCEAN-AI library provides tools to analyze the personality traits of candidates and their suitability for the position, which can significantly improve the recruitment process and help to make more
FI V2
[2]:
# Импорт необходимых инструментов
import os
import pandas as pd
# Импорт модуля
from oceanai.modules.lab.build import Run
# Создание экземпляра класса
_b5 = Run()
# Настройка ядра
_b5.path_to_save_ = './models' # Директория для сохранения файла
_b5.chunk_size_ = 2000000 # Размер загрузки файла из сети за 1 шаг
corpus = 'fi'
# Формирование аудиомоделей
res_load_model_hc = _b5.load_audio_model_hc()
res_load_model_nn = _b5.load_audio_model_nn()
# Загрузка весов аудиомоделей
url = _b5.weights_for_big5_['audio'][corpus]['hc']['googledisk']
res_load_model_weights_hc = _b5.load_audio_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['audio'][corpus]['nn']['googledisk']
res_load_model_weights_nn = _b5.load_audio_model_weights_nn(url = url, force_reload = False)
# Формирование видеомоделей
res_load_model_hc = _b5.load_video_model_hc(lang='en')
res_load_model_deep_fe = _b5.load_video_model_deep_fe()
res_load_model_nn = _b5.load_video_model_nn()
# Загрузка весов видеомоделей
url = _b5.weights_for_big5_['video'][corpus]['hc']['googledisk']
res_load_model_weights_hc = _b5.load_video_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['video'][corpus]['fe']['googledisk']
res_load_model_weights_deep_fe = _b5.load_video_model_weights_deep_fe(url = url, force_reload = False)
url = _b5.weights_for_big5_['video'][corpus]['nn']['googledisk']
res_load_model_weights_nn = _b5.load_video_model_weights_nn(url = url, force_reload = False)
# Загрузка словаря с экспертными признаками (текстовая модальность)
res_load_text_features = _b5.load_text_features()
# Формирование текстовых моделей
res_setup_bert_model = _b5.setup_bert_encoder(force_reload = False)
res_load_text_model_hc_fi = _b5.load_text_model_hc(corpus=corpus)
res_load_text_model_nn_fi = _b5.load_text_model_nn(corpus=corpus)
# Загрузка весов текстовых моделей
url = _b5.weights_for_big5_['text'][corpus]['hc']['googledisk']
res_load_text_model_weights_hc_fi = _b5.load_text_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['text'][corpus]['nn']['googledisk']
res_load_text_model_weights_nn_fi = _b5.load_text_model_weights_nn(url = url, force_reload = False)
# Формирование модели для мультимодального объединения информации
res_load_avt_model_b5 = _b5.load_avt_model_b5()
# Загрузка весов модели для мультимодального объединения информации
url = _b5.weights_for_big5_['avt'][corpus]['b5']['googledisk']
res_load_avt_model_weights_b5 = _b5.load_avt_model_weights_b5(url = url, force_reload = False)
PATH_TO_DIR = './video_FI/'
PATH_SAVE_VIDEO = './video_FI/test/'
_b5.path_to_save_ = PATH_SAVE_VIDEO
# Загрузка 10 тестовых аудиовидеозаписей из корпуса First Impression V2
# URL: https://chalearnlap.cvc.uab.cat/dataset/24/description/
domain = 'https://download.sberdisk.ru/download/file/'
tets_name_files = [
'429713680?token=FqHdMLSSh7zYSZt&filename=_plk5k7PBEg.003.mp4',
'429713681?token=Hz9b4lQkrLfic33&filename=be0DQawtVkE.002.mp4',
'429713683?token=EgUXS9Xs8xHm5gz&filename=2d6btbaNdfo.000.mp4',
'429713684?token=1U26753kmPYdIgt&filename=300gK3CnzW0.003.mp4',
'429713685?token=LyigAWLTzDNwKJO&filename=300gK3CnzW0.001.mp4',
'429713686?token=EpfRbCKHyuc4HPu&filename=cLaZxEf1nE4.004.mp4',
'429713687?token=FNTkwqBr4jOS95l&filename=g24JGYuT74A.004.mp4',
'429713688?token=qDT95nz7hfm2Nki&filename=JZNMxa3OKHY.000.mp4',
'429713689?token=noLguEGXDpbcKhg&filename=nvlqJbHk_Lc.003.mp4',
'429713679?token=9L7RQ0hgdJlcek6&filename=4vdJGgZpj4k.003.mp4'
]
for curr_files in tets_name_files:
_b5.download_file_from_url(url = domain + curr_files, out = True)
# Получение прогнозов
_b5.path_to_dataset_ = PATH_TO_DIR # Директория набора данных
_b5.ext_ = ['.mp4'] # Расширения искомых файлов
# Полный путь к файлу с верными предсказаниями для подсчета точности
url_accuracy = _b5.true_traits_[corpus]['googledisk']
_b5.get_avt_predictions(url_accuracy = url_accuracy, lang = 'en')
[2024-10-10 17:13:14] Извлечение признаков (экспертных и нейросетевых) из текста …
[2024-10-10 17:13:15] Получение прогнозов и вычисление точности (мультимодальное объединение) …
10 из 10 (100.0%) … GitHub:nbsphinx-math:OCEANAI\docs\source\user_guide:nbsphinx-math:notebooks\video_FI:nbsphinx-math:test_plk5k7PBEg.003.mp4 …
| Path | Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | |
|---|---|---|---|---|---|---|
| Person ID | ||||||
| 1 | 2d6btbaNdfo.000.mp4 | 0.618917 | 0.660694 | 0.477656 | 0.654437 | 0.601256 |
| 2 | 300gK3CnzW0.001.mp4 | 0.461732 | 0.413451 | 0.415706 | 0.498301 | 0.431224 |
| 3 | 300gK3CnzW0.003.mp4 | 0.468002 | 0.448618 | 0.371742 | 0.509602 | 0.453739 |
| 4 | 4vdJGgZpj4k.003.mp4 | 0.585348 | 0.616446 | 0.49443 | 0.605614 | 0.587017 |
| 5 | be0DQawtVkE.002.mp4 | 0.680991 | 0.56602 | 0.553915 | 0.646545 | 0.64246 |
| 6 | cLaZxEf1nE4.004.mp4 | 0.66342 | 0.551018 | 0.557912 | 0.585238 | 0.587174 |
| 7 | g24JGYuT74A.004.mp4 | 0.590237 | 0.399273 | 0.409554 | 0.531861 | 0.507134 |
| 8 | JZNMxa3OKHY.000.mp4 | 0.60577 | 0.523617 | 0.531137 | 0.594406 | 0.57984 |
| 9 | nvlqJbHk_Lc.003.mp4 | 0.511002 | 0.464702 | 0.390882 | 0.443663 | 0.438811 |
| 10 | _plk5k7PBEg.003.mp4 | 0.647606 | 0.610466 | 0.524718 | 0.61428 | 0.606428 |
[2024-10-10 17:13:15] Точность по отдельным персональным качествам личности человека …
| Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | Mean | |
|---|---|---|---|---|---|---|
| Metrics | ||||||
| MAE | 0.0735 | 0.0631 | 0.0914 | 0.0706 | 0.0691 | 0.0735 |
| Accuracy | 0.9265 | 0.9369 | 0.9086 | 0.9294 | 0.9309 | 0.9265 |
[2024-10-10 17:13:15] Средняя средних абсолютных ошибок: 0.0735, средняя точность: 0.9265 …
Лог файлы успешно сохранены …
— Время выполнения: 34.472 сек. —
[2]:
True
Thus, the OCEAN-AI library provides tools to analyze the personality traits of candidates and their suitability for the position, which can significantly improve the recruitment process and help to make more objective and systematic decisions when ranking candidates.
The weight coefficients for 5 professions based on scientific articles are proposed:
Sajjad H. et al. Personality and Career Choices // African Journal of Business Management. - 2012. – Vol. 6 (6) – pp. 2255-2260.
Alkhelil A. H. The Relationship between Personality Traits and Career Choice: A Case Study of Secondary School Students // International Journal of Academic Research in Progressive Education and Development. – 2016. – Vol. 5(2). – pp. 2226-6348.
De Jong N. et al. Personality Traits and Career Role Enactment: Career Role Preferences as a Mediator // Frontiers in Psychology. – 2019. – Vol. 10. – pp. 1720.
The user can set their own weights; the sum of the weights must be equal to 100.
[3]:
# Loading a dataframe with weights
url = 'https://download.sberdisk.ru/download/file/478675798?token=fF5fNZVpthQlEV0&filename=traits_priority_for_professions.csv'
traits_priority_for_professions = pd.read_csv(url)
traits_priority_for_professions.index.name = 'ID'
traits_priority_for_professions.index += 1
traits_priority_for_professions.index = traits_priority_for_professions.index.map(str)
traits_priority_for_professions
[3]:
| Profession | Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | |
|---|---|---|---|---|---|---|
| ID | ||||||
| 1 | Managers/executives | 15 | 35 | 15 | 30 | 5 |
| 2 | Entrepreneurship | 30 | 30 | 5 | 5 | 30 |
| 3 | Social/Non profit making professions | 5 | 5 | 35 | 35 | 20 |
| 4 | Public sector professions | 15 | 50 | 15 | 15 | 5 |
| 5 | Scientists/researchers, and engineers | 50 | 15 | 5 | 15 | 15 |
Ranking of candidates for the position of engineer
[4]:
weights = traits_priority_for_professions.iloc[4].values[1:]
weights = list(map(int, weights))
_b5._candidate_ranking(
weigths_openness = weights[0],
weigths_conscientiousness = weights[1],
weigths_extraversion = weights[2],
weigths_agreeableness = weights[3],
weigths_non_neuroticism = weights[4],
out = False
)
_b5._save_logs(df = _b5.df_files_ranking_, name = 'engineer_candidate_ranking_fi_en', out = True)
# Optional
df = _b5.df_files_ranking_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[4]:
| Path | OPE | CON | EXT | AGR | NNEU | Candidate score | |
|---|---|---|---|---|---|---|---|
| Person ID | |||||||
| 5 | be0DQawtVkE.002.mp4 | 0.681 | 0.566 | 0.554 | 0.647 | 0.642 | 64.644 |
| 10 | _plk5k7PBEg.003.mp4 | 0.648 | 0.610 | 0.525 | 0.614 | 0.606 | 62.472 |
| 1 | 2d6btbaNdfo.000.mp4 | 0.619 | 0.661 | 0.478 | 0.654 | 0.601 | 62.080 |
| 6 | cLaZxEf1nE4.004.mp4 | 0.663 | 0.551 | 0.558 | 0.585 | 0.587 | 61.812 |
| 4 | 4vdJGgZpj4k.003.mp4 | 0.585 | 0.616 | 0.494 | 0.606 | 0.587 | 58.876 |
| 8 | JZNMxa3OKHY.000.mp4 | 0.606 | 0.524 | 0.531 | 0.594 | 0.580 | 58.412 |
| 7 | g24JGYuT74A.004.mp4 | 0.590 | 0.399 | 0.410 | 0.532 | 0.507 | 53.134 |
| 9 | nvlqJbHk_Lc.003.mp4 | 0.511 | 0.465 | 0.391 | 0.444 | 0.439 | 47.712 |
| 3 | 300gK3CnzW0.003.mp4 | 0.468 | 0.449 | 0.372 | 0.510 | 0.454 | 46.438 |
| 2 | 300gK3CnzW0.001.mp4 | 0.462 | 0.413 | 0.416 | 0.498 | 0.431 | 45.310 |
Ranking of candidates for the position of manager
[5]:
weights = traits_priority_for_professions.iloc[0].values[1:]
weights = list(map(int, weights))
_b5._candidate_ranking(
weigths_openness = weights[0],
weigths_conscientiousness = weights[1],
weigths_extraversion = weights[2],
weigths_agreeableness = weights[3],
weigths_non_neuroticism = weights[4],
out = False
)
_b5._save_logs(df = _b5.df_files_ranking_, name = 'executive_candidate_ranking_fi_en', out = True)
# Optional
df = _b5.df_files_ranking_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[5]:
| Path | OPE | CON | EXT | AGR | NNEU | Candidate score | |
|---|---|---|---|---|---|---|---|
| Person ID | |||||||
| 1 | 2d6btbaNdfo.000.mp4 | 0.619 | 0.661 | 0.478 | 0.654 | 0.601 | 62.212 |
| 5 | be0DQawtVkE.002.mp4 | 0.681 | 0.566 | 0.554 | 0.647 | 0.642 | 60.943 |
| 10 | _plk5k7PBEg.003.mp4 | 0.648 | 0.610 | 0.525 | 0.614 | 0.606 | 60.412 |
| 4 | 4vdJGgZpj4k.003.mp4 | 0.585 | 0.616 | 0.494 | 0.606 | 0.587 | 58.876 |
| 6 | cLaZxEf1nE4.004.mp4 | 0.663 | 0.551 | 0.558 | 0.585 | 0.587 | 58.099 |
| 8 | JZNMxa3OKHY.000.mp4 | 0.606 | 0.524 | 0.531 | 0.594 | 0.580 | 56.112 |
| 7 | g24JGYuT74A.004.mp4 | 0.590 | 0.399 | 0.410 | 0.532 | 0.507 | 47.463 |
| 3 | 300gK3CnzW0.003.mp4 | 0.468 | 0.449 | 0.372 | 0.510 | 0.454 | 45.855 |
| 9 | nvlqJbHk_Lc.003.mp4 | 0.511 | 0.465 | 0.391 | 0.444 | 0.439 | 45.297 |
| 2 | 300gK3CnzW0.001.mp4 | 0.462 | 0.413 | 0.416 | 0.498 | 0.431 | 44.737 |
To rank candidates by skills, two correlation coefficients must be set for each personality trait and skill, as well as a threshold for the polarity of the traits. These coefficients should show how a person’s trait score changes when it is above or below a given trait polarity threshold.
As an example, the use of correlation coefficients between five traits and four professional skills presented in the article is suggested:
Wehner C., de Grip A., Pfeifer H. Do recruiters select workers with different personality traits for different tasks? A discrete choice experiment // Labour Economics. - 2022. - vol. 78. - pp. 102186.
There are 4 professional skills presented:
Analytical. The ability to effectively solve new problems that require in-depth analysis.
Interactive. The ability to persuade and compromise with clients and colleagues.
Routine. The ability to perform routine tasks effectively with accuracy and attention to detail.
Non-Routine. The ability to respond to and solve problems that have no set order, demonstrating adaptability and creative problem solving skills.
The users can set their own correlation coefficients and rank candidates by other professional skills.
Ranking candidates by professional skills
[6]:
# Loading a dataframe with correlation coefficients
url = 'https://download.sberdisk.ru/download/file/478678231?token=0qiZwliLtHWWYMv&filename=professional_skills.csv'
df_professional_skills = pd.read_csv(url)
df_professional_skills.index.name = 'ID'
df_professional_skills.index += 1
df_professional_skills.index = df_professional_skills.index.map(str)
df_professional_skills
[6]:
| Trait | Score_level | Analytical | Interactive | Routine | Non-Routine | |
|---|---|---|---|---|---|---|
| ID | ||||||
| 1 | Openness | high | 0.082 | 0.348 | 0.571 | 0.510 |
| 2 | Openness | low | 0.196 | 0.152 | 0.148 | 0.218 |
| 3 | Conscientiousness | high | 0.994 | 1.333 | 1.507 | 1.258 |
| 4 | Conscientiousness | low | 0.241 | 0.188 | 0.191 | 0.267 |
| 5 | Extraversion | high | 0.169 | -0.060 | 0.258 | 0.017 |
| 6 | Extraversion | low | 0.181 | 0.135 | 0.130 | 0.194 |
| 7 | Agreeableness | high | 1.239 | 0.964 | 1.400 | 1.191 |
| 8 | Agreeableness | low | 0.226 | 0.180 | 0.189 | 0.259 |
| 9 | Non-Neuroticism | high | 0.636 | 0.777 | 0.876 | 0.729 |
| 10 | Non-Neuroticism | low | 0.207 | 0.159 | 0.166 | 0.238 |
[7]:
_b5._priority_skill_calculation(
correlation_coefficients = df_professional_skills,
threshold = 0.5,
out = True
)
_b5._save_logs(df = _b5.df_files_priority_skill_, name = 'skill_candidate_ranking_fi_en', out = True)
# Optional
df = _b5.df_files_priority_skill_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[7]:
| Path | OPE | CON | EXT | AGR | NNEU | Analytical | Interactive | Routine | Non-Routine | |
|---|---|---|---|---|---|---|---|---|---|---|
| Person ID | ||||||||||
| 1 | 2d6btbaNdfo.000.mp4 | 0.619 | 0.661 | 0.478 | 0.654 | 0.601 | 0.397 | 0.452 | 0.571 | 0.491 |
| 5 | be0DQawtVkE.002.mp4 | 0.681 | 0.566 | 0.554 | 0.647 | 0.642 | 0.384 | 0.416 | 0.571 | 0.461 |
| 10 | _plk5k7PBEg.003.mp4 | 0.648 | 0.610 | 0.525 | 0.614 | 0.606 | 0.379 | 0.414 | 0.563 | 0.456 |
| 4 | 4vdJGgZpj4k.003.mp4 | 0.585 | 0.616 | 0.494 | 0.606 | 0.587 | 0.375 | 0.426 | 0.538 | 0.464 |
| 6 | cLaZxEf1nE4.004.mp4 | 0.663 | 0.551 | 0.558 | 0.585 | 0.587 | 0.359 | 0.390 | 0.537 | 0.433 |
| 8 | JZNMxa3OKHY.000.mp4 | 0.606 | 0.524 | 0.531 | 0.594 | 0.580 | 0.353 | 0.380 | 0.522 | 0.421 |
| 7 | g24JGYuT74A.004.mp4 | 0.590 | 0.399 | 0.410 | 0.532 | 0.507 | 0.240 | 0.249 | 0.331 | 0.298 |
| 3 | 300gK3CnzW0.003.mp4 | 0.468 | 0.449 | 0.372 | 0.510 | 0.454 | 0.198 | 0.154 | 0.198 | 0.202 |
| 2 | 300gK3CnzW0.001.mp4 | 0.462 | 0.413 | 0.416 | 0.498 | 0.431 | 0.093 | 0.072 | 0.073 | 0.105 |
| 9 | nvlqJbHk_Lc.003.mp4 | 0.511 | 0.465 | 0.391 | 0.444 | 0.439 | 0.083 | 0.094 | 0.118 | 0.136 |
Для ранжирования кандидатов по одному из шестнадцати типов личности MBTI необходимо задать матрицу корреляции между персональными качествами личности человека и четырьмя диспозициями MBTI, установить порог полярности качеств и указать целевой тип личности MBTI.
В качестве примера предлагается использование коэффициентов корреляции, представленных в статье [1]. Описание типов личности MBTI и соотвествующие им успешные профессии представлены в статье [2].
Furnham A. The big five facets and the MBTI: The relationship between the 30 NEO-PI (R) Facets and the four Myers-Briggs Type Indicator (MBTI) scores // Psychology. - 2022. vol. 13(10). - pp. 1504-1516.
Tieger P.D., Barron B., Tieger K. Do what you are: Discover the perfect career for you through the secrets of personality type // Hachette UK. - 2024.
Типы личности MBTI основаны на четырех измерениях личности:
Описание измерения | Измерение |
|---|---|
Как мы взаимодействуем с миром и куда направляем свою энергию |
|
Вид информации, которую мы естественным образом замечаем |
|
Как мы принимаем решения |
|
Предпочитаем ли мы жить более структурированно (принимая решения) или более спонтанно (принимая информацию) |
|
Типы личности MBTI и соотвествующие им успешные профессии:
Тип личности | Описание | Успешные профессии |
|---|---|---|
ISTJ | Этот человек отличается ответственностью, строгостью и педантичностью. Он опирается на объективные факты и склонен к аналитическому мышлению. Приступает к задаче только тогда, когда уверен в своих возможностях и успехе | Инспектор: бухгалтер, аудитор, бюджетный аналитик, финансовый менеджер, разработчик, системный аналитик, библиотекарь и т. д. |
ISFJ | Этот человек склонен к самоанализу и анализу окружающих, легко распознает фальшь и предпочитает сохранять психологическую дистанцию. Он исполнителен, внимателен и готов помогать другим. Его силы и энергия исходят из внутренних ресурсов, и он всегда полагается на собственный опыт | Защитник: медсестра, врач, ветеринар или ветеринарный ассистент, социальный работник, сельскохозяйственный или пищевой ученый, секретарь, водитель и т. д. |
INFJ | О таких людях говорят: «ему можно доверять». Он отличается высокой чувствительностью, уделяет большое внимание межличностным отношениям, умеет давать ценные советы и помогает раскрывать потенциал других. Развитая интуиция не только генерирует множество идей, но и способствует самоорганизации | Советник: психолог, специалист по управлению персоналом, офис-менеджер, специалист по обучению, графический дизайнер и т. д. |
INTJ | Этот человек умеет выделять главное, говорит четко и по существу, придерживается практического подхода. Он стремится постоянно улучшать свою работу и всегда ищет способы сделать задачу еще лучше. Пустые разговоры ему не по душе, поэтому он избегает больших шумных компаний и с трудом заводит новые знакомства | Мастермайнд: аниматор, архитектор, копирайтер, фотограф, тележурналист, видеомонтажер, специалист по бизнес-развитию, исполнительный директор, профессор и т. д. |
ISTP | Этот человек воспринимает мир через ощущения. По природе эмпат, но чаще сосредоточен на себе. Его умение объективно принимать решения и анализировать ситуацию указывает на технический склад ума. Он всегда соблюдает дедлайны, хотя иногда может поступить неожиданно | Создатель: инженер, техник, строитель, инспектор, судебный эксперт, программист, разработчик ПО и т. д. |
ISFP | Этот человек умеет находить радость в однообразии и рутинных делах. Прекрасно ладит с людьми, избегая конфликтов. Ему важно чувствовать свою значимость и оказывать помощь. Такой человек не стремится руководить или менять других, уважает их личные границы и ожидает того же в ответ. По натуре он приземленный практик, на которого всегда можно положиться | Композитор: помощник по маркетингу, танцор, шеф-повар, офис-администратор, художник, дизайнер интерьеров, секретарь, медсестра и т. д. |
INFP | Этот человек - чувствительный лирик, прекрасно разбирающийся в людях и легко вызывающий у них симпатию. Он обладает отличным чувством юмора и уделяет большое внимание своему внешнему виду. Стремится к самопознанию, гармонии с собой и старается быть полезным окружающим | Целитель: писатель, дизайнер мультимедиа, менеджер по работе с клиентами, учитель для детей с особыми потребностями, тренер, редактор, модельер и т. д. |
INTP | Этот человек - эрудит с философским складом ума. Он тщательно анализирует свои решения, стремясь к объективности и беспристрастности. Бурные проявления эмоций ему не свойственны. Однако большое количество данных и их изменчивость могут вызывать у него внутреннее напряжение | Архитектор: технический писатель, веб-разработчик, аналитик информационной безопасности, исследователь, ученый, юрист и т. д. |
ESTP | Этот человек всегда добивается успеха, невзирая на препятствия, которые лишь усиливают его целеустремленность. Он стремится к лидерским позициям и плохо переносит роль подчиненного. Обычно разрабатывает четкий план действий и неуклонно ему следует | Промоутер: специалист по работе с клиентами, актер, личный тренер, бренд-амбассадор, менеджер, предприниматель, креативный директор, полицейский, маркетолог, производитель и т. д. |
ESFP | Этот человек легко выявляет слабые стороны людей, что позволяет ему эффективно манипулировать и управлять. В общении он чаще всего руководствуется собственными интересами и предпочитает жить в настоящем. Часто не завершает начатое, стремясь к быстрым результатам. Однако при этом стремится поддерживать гармоничные отношения с окружающими | Исполнитель: бортпроводник, артист, учитель, менеджер по связям с общественностью, торговый представитель, организатор мероприятий и т. д. |
ENFP | Этот человек - творческая личность и фантазер, обладающий качествами, которые помогают ему успешно взаимодействовать с другими, быть открытым и общительным. Он активно участвует в различных мероприятиях, легко решает возникающие вопросы и демонстрирует гибкость | Чемпион: медицинский работник, продюсер, продавец-консультант, специалист по обслуживанию клиентов, сценарист, ведущий на ТВ/радио и т. д. |
ENTP | Этот человек - изобретательный, инициативный и гибкий. Он генератор идей и первопроходец, который не выносит рутины. Постоянное движение и интуитивное принятие решений всегда сопровождают его в работе | Новатор: инженер, маркетолог, менеджер по социальным сетям, аналитик управления, руководитель цифрового маркетинга, бизнес-консультант, разработчик игр, менеджер по продажам и т. д. |
ESTJ | Это трудолюбивый человек, который воспринимает мир таким, какой он есть. Он склонен тщательно планировать и доводить дела до конца. Заботится о своем ближайшем окружении, проявляет добродушие, но иногда может быть вспыльчивым, резким и упрямым | Супервайзер: управляющий директор, менеджер отеля, финансовый сотрудник, судья, агент по недвижимости, генеральный директор, шеф-повар, менеджер по бизнес-развитию, телемаркетолог и т. д. |
ESFJ | Этот человек умеет оказывать влияние на людей, проявляет заботу и готов жертвовать собой ради других. Он легко устанавливает контакт с любым человеком и способен направить ситуацию в нужное ему русло | Поставщик: специалист по технической поддержке, менеджер по работе с клиентами, профессор колледжа, медицинский исследователь, бухгалтер, фотожурналист и т. д. |
ENFJ | Этот человек отличается эмоциональностью и эмпатией. Его мимика выразительна, а речь — красноречива. Благодаря своей самоорганизованности, он успешно воплощает свои фантазии и идеи в жизнь. Он интуитивно понимает, какое решение следует принять в каждой конкретной ситуации | Учитель: менеджер по связям с общественностью, менеджер по продажам, директор по управлению персоналом, арт-директор, консультант и т. д. |
ENTJ | Этот человек легко увлекается, готов рисковать и полагается на интуицию. Без страха внедряет новые технологии и способен глубоко анализировать как себя, так и окружающий мир. Жизнь для него - это борьба, в которой он чувствует себя уверенно. Открыт для новых возможностей, но при этом нуждается в контроле | Командир: руководитель строительства, администратор службы здравоохранения, финансовый бухгалтер, аудитор, юрист, директор школы, химический инженер, менеджер баз данных и т. д. |
Пользователь может установить свои коэффициенты корреляции и ранжировать кандидатов по другим типам личности.
Ранжирование кандидатов по одному из шестнадцати типов личности по версии MBTI
[8]:
# Загрузка датафрейма с коэффициентами корреляции
url = 'https://download.sberdisk.ru/download/file/493644095?token=EX7hFxNJhMoLumI&filename=df_mbti_correlation.csv'
df_correlation_coefficients = pd.read_csv(url)
df_correlation_coefficients.index.name = 'ID'
df_correlation_coefficients.index += 1
df_correlation_coefficients.index = df_correlation_coefficients.index.map(str)
df_correlation_coefficients
[8]:
| Trait | EI | SN | TF | JP | |
|---|---|---|---|---|---|
| ID | |||||
| 1 | Openness | 0.09 | -0.03 | -0.14 | -0.16 |
| 2 | Conscientiousness | 0.04 | -0.04 | 0.20 | 0.14 |
| 3 | Extraversion | 0.20 | -0.03 | 0.01 | -0.07 |
| 4 | Agreeableness | 0.02 | 0.05 | -0.35 | 0.03 |
| 5 | Non-Neuroticism | 0.08 | 0.00 | 0.16 | 0.00 |
[9]:
_b5._professional_match(
correlation_coefficients = df_correlation_coefficients,
personality_type = "ENFJ",
threshold = 0.5,
out = True
)
_b5._save_logs(df = _b5._df_files_MBTI_job_match, name = 'MBTI_ranking_fi_en', out = True)
# Опционно
df = _b5.df_files_MBTI_job_match_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:6]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[9]:
| Path | OPE | CON | EXT | AGR | NNEU | EI | SN | TF | JP | MBTI | MBTI_Score | Match | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Person ID | |||||||||||||
| 5 | be0DQawtVkE.002.mp4 | 0.681 | 0.566 | 0.554 | 0.647 | 0.642 | 0.259041 | -0.027361 | -0.100093 | -0.049093 | ENFP | 0.289871 | 75.0 |
| 6 | cLaZxEf1nE4.004.mp4 | 0.663 | 0.551 | 0.558 | 0.585 | 0.587 | 0.252010 | -0.029419 | -0.087981 | -0.050501 | ENFP | 0.277057 | 75.0 |
| 10 | _plk5k7PBEg.003.mp4 | 0.648 | 0.610 | 0.525 | 0.614 | 0.606 | 0.248447 | -0.028874 | -0.081294 | -0.036454 | ENFP | 0.268961 | 75.0 |
| 8 | JZNMxa3OKHY.000.mp4 | 0.606 | 0.524 | 0.531 | 0.594 | 0.580 | 0.239967 | -0.025332 | -0.090041 | -0.042964 | ENFP | 0.266504 | 75.0 |
| 3 | 300gK3CnzW0.003.mp4 | 0.468 | 0.449 | 0.372 | 0.510 | 0.454 | -0.160520 | 0.068617 | -0.278880 | 0.053384 | ISFJ | 0.166132 | 50.0 |
| 1 | 2d6btbaNdfo.000.mp4 | 0.619 | 0.661 | 0.478 | 0.654 | 0.601 | 0.047788 | 0.002056 | -0.092138 | 0.046539 | ESFJ | 0.139850 | 75.0 |
| 7 | g24JGYuT74A.004.mp4 | 0.590 | 0.399 | 0.410 | 0.532 | 0.507 | 0.006447 | 0.037143 | -0.271593 | -0.105712 | ESFP | 0.139020 | 50.0 |
| 4 | 4vdJGgZpj4k.003.mp4 | 0.585 | 0.616 | 0.494 | 0.606 | 0.587 | 0.037527 | 0.002895 | -0.081646 | 0.045425 | ESFJ | 0.123449 | 75.0 |
| 9 | nvlqJbHk_Lc.003.mp4 | 0.511 | 0.465 | 0.391 | 0.444 | 0.439 | -0.094752 | -0.007199 | -0.083317 | -0.132767 | INFP | 0.045258 | 50.0 |
| 2 | 300gK3CnzW0.001.mp4 | 0.462 | 0.413 | 0.416 | 0.498 | 0.431 | -0.185699 | 0.017946 | 0.083205 | 0.030144 | ISTJ | 0.007536 | 25.0 |
MuPTA (ru)
[10]:
import os
import pandas as pd
# Импорт модуля
from oceanai.modules.lab.build import Run
# Создание экземпляра класса
_b5 = Run()
corpus = 'mupta'
lang = 'ru'
# Настройка ядра
_b5.path_to_save_ = './models' # Директория для сохранения файла
_b5.chunk_size_ = 2000000 # Размер загрузки файла из сети за 1 шаг
# Формирование аудиомоделей
res_load_model_hc = _b5.load_audio_model_hc()
res_load_model_nn = _b5.load_audio_model_nn()
# Загрузка весов аудиомоделей
url = _b5.weights_for_big5_['audio'][corpus]['hc']['googledisk']
res_load_model_weights_hc = _b5.load_audio_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['audio'][corpus]['nn']['googledisk']
res_load_model_weights_nn = _b5.load_audio_model_weights_nn(url = url, force_reload = False)
# Формирование видеомоделей
res_load_model_hc = _b5.load_video_model_hc(lang=lang)
res_load_model_deep_fe = _b5.load_video_model_deep_fe()
res_load_model_nn = _b5.load_video_model_nn()
# Загрузка весов видеомоделей
url = _b5.weights_for_big5_['video'][corpus]['hc']['googledisk']
res_load_model_weights_hc = _b5.load_video_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['video'][corpus]['fe']['googledisk']
res_load_model_weights_deep_fe = _b5.load_video_model_weights_deep_fe(url = url, force_reload = False)
url = _b5.weights_for_big5_['video'][corpus]['nn']['googledisk']
res_load_model_weights_nn = _b5.load_video_model_weights_nn(url = url, force_reload = False)
# Загрузка словаря с экспертными признаками (текстовая модальность)
res_load_text_features = _b5.load_text_features()
# Формирование текстовых моделей
res_setup_translation_model = _b5.setup_translation_model() # только для русского языка
res_setup_translation_model = _b5.setup_bert_encoder(force_reload = False)
res_load_text_model_hc_fi = _b5.load_text_model_hc(corpus=corpus)
res_load_text_model_nn_fi = _b5.load_text_model_nn(corpus=corpus)
# Загрузка весов текстовых моделей
url = _b5.weights_for_big5_['text'][corpus]['hc']['googledisk']
res_load_text_model_weights_hc_fi = _b5.load_text_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['text'][corpus]['nn']['googledisk']
res_load_text_model_weights_nn_fi = _b5.load_text_model_weights_nn(url = url, force_reload = False)
# Формирование модели для мультимодального объединения информации
res_load_avt_model_b5 = _b5.load_avt_model_b5()
# Загрузка весов модели для мультимодального объединения информации
url = _b5.weights_for_big5_['avt'][corpus]['b5']['googledisk']
res_load_avt_model_weights_b5 = _b5.load_avt_model_weights_b5(url = url, force_reload = False)
PATH_TO_DIR = './video_MuPTA/'
PATH_SAVE_VIDEO = './video_MuPTA/test/'
_b5.path_to_save_ = PATH_SAVE_VIDEO
# Загрузка 10 тестовых аудиовидеозаписей из корпуса MuPTA
# URL: https://hci.nw.ru/en/pages/mupta-corpus
domain = 'https://download.sberdisk.ru/download/file/'
tets_name_files = [
'477995979?token=2cvyk7CS0mHx2MJ&filename=speaker_06_center_83.mov',
'477995980?token=jGPtBPS69uzFU6Y&filename=speaker_01_center_83.mov',
'477995967?token=zCaRbNB6ht5wMPq&filename=speaker_11_center_83.mov',
'477995966?token=B1rbinDYRQKrI3T&filename=speaker_15_center_83.mov',
'477995978?token=dEpVDtZg1EQiEQ9&filename=speaker_07_center_83.mov',
'477995961?token=o1hVjw8G45q9L9Z&filename=speaker_19_center_83.mov',
'477995964?token=5K220Aqf673VHPq&filename=speaker_23_center_83.mov',
'477995965?token=v1LVD2KT1cU7Lpb&filename=speaker_24_center_83.mov',
'477995962?token=tmaSGyyWLA6XCy9&filename=speaker_27_center_83.mov',
'477995963?token=bTpo96qNDPcwGqb&filename=speaker_10_center_83.mov',
]
for curr_files in tets_name_files:
_b5.download_file_from_url(url = domain + curr_files, out = True)
# Получение прогнозов
_b5.path_to_dataset_ = PATH_TO_DIR # Директория набора данных
_b5.ext_ = ['.mov'] # Расширения искомых файлов
# Полный путь к файлу с верными предсказаниями для подсчета точности
url_accuracy = _b5.true_traits_['mupta']['googledisk']
_b5.get_avt_predictions(url_accuracy = url_accuracy, lang = lang)
[2024-10-10 17:24:03] Извлечение признаков (экспертных и нейросетевых) из текста …
[2024-10-10 17:24:04] Получение прогнозов и вычисление точности (мультимодальное объединение) …
10 из 10 (100.0%) … GitHub:nbsphinx-math:OCEANAI\docs\source\user_guide:nbsphinx-math:notebooks\video_MuPTA:nbsphinx-math:test\speaker_27_center_83.mov …
| Path | Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | |
|---|---|---|---|---|---|---|
| Person ID | ||||||
| 1 | speaker_01_center_83.mov | 0.765745 | 0.696637 | 0.656309 | 0.75986 | 0.494141 |
| 2 | speaker_06_center_83.mov | 0.686514 | 0.659488 | 0.611838 | 0.749739 | 0.420672 |
| 3 | speaker_07_center_83.mov | 0.671993 | 0.661216 | 0.571759 | 0.704542 | 0.381026 |
| 4 | speaker_10_center_83.mov | 0.69828 | 0.59893 | 0.571893 | 0.674907 | 0.35082 |
| 5 | speaker_11_center_83.mov | 0.718329 | 0.598986 | 0.573518 | 0.73201 | 0.379845 |
| 6 | speaker_15_center_83.mov | 0.670932 | 0.671055 | 0.602337 | 0.708656 | 0.399527 |
| 7 | speaker_19_center_83.mov | 0.767261 | 0.658167 | 0.653367 | 0.801366 | 0.463443 |
| 8 | speaker_23_center_83.mov | 0.699837 | 0.684907 | 0.616671 | 0.806437 | 0.447853 |
| 9 | speaker_24_center_83.mov | 0.710566 | 0.66299 | 0.610562 | 0.711242 | 0.413696 |
| 10 | speaker_27_center_83.mov | 0.759404 | 0.712562 | 0.658357 | 0.830507 | 0.507612 |
[2024-10-10 17:24:04] Точность по отдельным персональным качествам личности человека …
| Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | Mean | |
|---|---|---|---|---|---|---|
| Metrics | ||||||
| MAE | 0.0706 | 0.0788 | 0.1328 | 0.1071 | 0.1002 | 0.0979 |
| Accuracy | 0.9294 | 0.9212 | 0.8672 | 0.8929 | 0.8998 | 0.9021 |
[2024-10-10 17:24:04] Средняя средних абсолютных ошибок: 0.0979, средняя точность: 0.9021 …
Лог файлы успешно сохранены …
— Время выполнения: 322.244 сек. —
[10]:
True
Thus, the OCEAN-AI library provides tools to analyze the personality traits of candidates and their suitability for the position, which can significantly improve the recruitment process and help to make more objective and systematic decisions when ranking candidates.
The weight coefficients for 5 professions based on scientific articles are proposed:
Sajjad H. et al. Personality and Career Choices // African Journal of Business Management. - 2012. – Vol. 6 (6) – pp. 2255-2260.
Alkhelil A. H. The Relationship between Personality Traits and Career Choice: A Case Study of Secondary School Students // International Journal of Academic Research in Progressive Education and Development. – 2016. – Vol. 5(2). – pp. 2226-6348.
De Jong N. et al. Personality Traits and Career Role Enactment: Career Role Preferences as a Mediator // Frontiers in Psychology. – 2019. – Vol. 10. – pp. 1720.
The user can set their own weights; the sum of the weights must be equal to 100.
[13]:
# Loading a dataframe with weights
url = 'https://download.sberdisk.ru/download/file/478675798?token=fF5fNZVpthQlEV0&filename=traits_priority_for_professions.csv'
traits_priority_for_professions = pd.read_csv(url)
traits_priority_for_professions.index.name = 'ID'
traits_priority_for_professions.index += 1
traits_priority_for_professions.index = traits_priority_for_professions.index.map(str)
traits_priority_for_professions
[13]:
| Profession | Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | |
|---|---|---|---|---|---|---|
| ID | ||||||
| 1 | Managers/executives | 15 | 35 | 15 | 30 | 5 |
| 2 | Entrepreneurship | 30 | 30 | 5 | 5 | 30 |
| 3 | Social/Non profit making professions | 5 | 5 | 35 | 35 | 20 |
| 4 | Public sector professions | 15 | 50 | 15 | 15 | 5 |
| 5 | Scientists/researchers, and engineers | 50 | 15 | 5 | 15 | 15 |
Ranking of candidates for the position of engineer
[14]:
weights = traits_priority_for_professions.iloc[4].values[1:]
weights = list(map(int, weights))
_b5._candidate_ranking(
weigths_openness = weights[0],
weigths_conscientiousness = weights[1],
weigths_extraversion = weights[2],
weigths_agreeableness = weights[3],
weigths_non_neuroticism = weights[4],
out = False
)
_b5._save_logs(df = _b5.df_files_ranking_, name = 'engineer_candidate_ranking_mupta_ru', out = True)
# Optional
df = _b5.df_files_ranking_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[14]:
| Path | OPE | CON | EXT | AGR | NNEU | Candidate score | |
|---|---|---|---|---|---|---|---|
| Person ID | |||||||
| 10 | speaker_27_center_83.mov | 0.759 | 0.713 | 0.658 | 0.831 | 0.508 | 72.022 |
| 1 | speaker_01_center_83.mov | 0.766 | 0.697 | 0.656 | 0.760 | 0.494 | 70.828 |
| 7 | speaker_19_center_83.mov | 0.767 | 0.658 | 0.653 | 0.801 | 0.463 | 70.475 |
| 8 | speaker_23_center_83.mov | 0.700 | 0.685 | 0.617 | 0.806 | 0.448 | 67.163 |
| 9 | speaker_24_center_83.mov | 0.711 | 0.663 | 0.611 | 0.711 | 0.414 | 65.400 |
| 2 | speaker_06_center_83.mov | 0.687 | 0.659 | 0.612 | 0.750 | 0.421 | 64.833 |
| 5 | speaker_11_center_83.mov | 0.718 | 0.599 | 0.574 | 0.732 | 0.380 | 64.447 |
| 6 | speaker_15_center_83.mov | 0.671 | 0.671 | 0.602 | 0.709 | 0.400 | 63.247 |
| 3 | speaker_07_center_83.mov | 0.672 | 0.661 | 0.572 | 0.705 | 0.381 | 62.660 |
| 4 | speaker_10_center_83.mov | 0.698 | 0.599 | 0.572 | 0.675 | 0.351 | 62.143 |
Ranking of candidates for the position of manager
[15]:
weights = traits_priority_for_professions.iloc[0].values[1:]
weights = list(map(int, weights))
_b5._candidate_ranking(
weigths_openness = weights[0],
weigths_conscientiousness = weights[1],
weigths_extraversion = weights[2],
weigths_agreeableness = weights[3],
weigths_non_neuroticism = weights[4],
out = False
)
_b5._save_logs(df = _b5.df_files_ranking_, name = 'executive_candidate_ranking_mupta_ru', out = True)
# Optional
df = _b5.df_files_ranking_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[15]:
| Path | OPE | CON | EXT | AGR | NNEU | Candidate score | |
|---|---|---|---|---|---|---|---|
| Person ID | |||||||
| 10 | speaker_27_center_83.mov | 0.759 | 0.713 | 0.658 | 0.831 | 0.508 | 73.659 |
| 1 | speaker_01_center_83.mov | 0.766 | 0.697 | 0.656 | 0.760 | 0.494 | 70.980 |
| 7 | speaker_19_center_83.mov | 0.767 | 0.658 | 0.653 | 0.801 | 0.463 | 70.703 |
| 8 | speaker_23_center_83.mov | 0.700 | 0.685 | 0.617 | 0.806 | 0.448 | 70.152 |
| 2 | speaker_06_center_83.mov | 0.687 | 0.659 | 0.612 | 0.750 | 0.421 | 67.153 |
| 9 | speaker_24_center_83.mov | 0.711 | 0.663 | 0.611 | 0.711 | 0.414 | 66.427 |
| 6 | speaker_15_center_83.mov | 0.671 | 0.671 | 0.602 | 0.709 | 0.400 | 65.843 |
| 3 | speaker_07_center_83.mov | 0.672 | 0.661 | 0.572 | 0.705 | 0.381 | 64.840 |
| 5 | speaker_11_center_83.mov | 0.718 | 0.599 | 0.574 | 0.732 | 0.380 | 64.202 |
| 4 | speaker_10_center_83.mov | 0.698 | 0.599 | 0.572 | 0.675 | 0.351 | 62.016 |
To rank candidates by skills, two correlation coefficients must be set for each personality trait and skill, as well as a threshold for the polarity of the traits. These coefficients should show how a person’s trait score changes when it is above or below a given trait polarity threshold.
As an example, the use of correlation coefficients between five traits and four professional skills presented in the article is suggested:
Wehner C., de Grip A., Pfeifer H. Do recruiters select workers with different personality traits for different tasks? A discrete choice experiment // Labour Economics. - 2022. - vol. 78. - pp. 102186.
There are 4 professional skills presented:
Analytical. The ability to effectively solve new problems that require in-depth analysis.
Interactive. The ability to persuade and compromise with clients and colleagues.
Routine. The ability to perform routine tasks effectively with accuracy and attention to detail.
Non-Routine. The ability to respond to and solve problems that have no set order, demonstrating adaptability and creative problem solving skills.
The users can set their own correlation coefficients and rank candidates by other professional skills.
Ranking candidates by professional skills
[16]:
# Loading a dataframe with correlation coefficients
url = 'https://download.sberdisk.ru/download/file/478678231?token=0qiZwliLtHWWYMv&filename=professional_skills.csv'
df_professional_skills = pd.read_csv(url)
df_professional_skills.index.name = 'ID'
df_professional_skills.index += 1
df_professional_skills.index = df_professional_skills.index.map(str)
df_professional_skills
[16]:
| Trait | Score_level | Analytical | Interactive | Routine | Non-Routine | |
|---|---|---|---|---|---|---|
| ID | ||||||
| 1 | Openness | high | 0.082 | 0.348 | 0.571 | 0.510 |
| 2 | Openness | low | 0.196 | 0.152 | 0.148 | 0.218 |
| 3 | Conscientiousness | high | 0.994 | 1.333 | 1.507 | 1.258 |
| 4 | Conscientiousness | low | 0.241 | 0.188 | 0.191 | 0.267 |
| 5 | Extraversion | high | 0.169 | -0.060 | 0.258 | 0.017 |
| 6 | Extraversion | low | 0.181 | 0.135 | 0.130 | 0.194 |
| 7 | Agreeableness | high | 1.239 | 0.964 | 1.400 | 1.191 |
| 8 | Agreeableness | low | 0.226 | 0.180 | 0.189 | 0.259 |
| 9 | Non-Neuroticism | high | 0.636 | 0.777 | 0.876 | 0.729 |
| 10 | Non-Neuroticism | low | 0.207 | 0.159 | 0.166 | 0.238 |
[17]:
_b5._priority_skill_calculation(
correlation_coefficients = df_professional_skills,
threshold = 0.5,
out = True
)
_b5._save_logs(df = _b5.df_files_priority_skill_, name = 'skill_candidate_ranking_mupta_ru', out = True)
# Optional
df = _b5.df_files_priority_skill_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[17]:
| Path | OPE | CON | EXT | AGR | NNEU | Analytical | Interactive | Routine | Non-Routine | |
|---|---|---|---|---|---|---|---|---|---|---|
| Person ID | ||||||||||
| 10 | speaker_27_center_83.mov | 0.759 | 0.713 | 0.658 | 0.831 | 0.508 | 0.447 | 0.474 | 0.657 | 0.531 |
| 8 | speaker_23_center_83.mov | 0.700 | 0.685 | 0.617 | 0.806 | 0.448 | 0.387 | 0.394 | 0.559 | 0.459 |
| 7 | speaker_19_center_83.mov | 0.767 | 0.658 | 0.653 | 0.801 | 0.463 | 0.383 | 0.390 | 0.559 | 0.459 |
| 1 | speaker_01_center_83.mov | 0.766 | 0.697 | 0.656 | 0.760 | 0.494 | 0.382 | 0.393 | 0.560 | 0.460 |
| 2 | speaker_06_center_83.mov | 0.687 | 0.659 | 0.612 | 0.750 | 0.421 | 0.366 | 0.374 | 0.533 | 0.437 |
| 9 | speaker_24_center_83.mov | 0.711 | 0.663 | 0.611 | 0.711 | 0.414 | 0.357 | 0.369 | 0.525 | 0.430 |
| 6 | speaker_15_center_83.mov | 0.671 | 0.671 | 0.602 | 0.709 | 0.400 | 0.357 | 0.368 | 0.522 | 0.427 |
| 3 | speaker_07_center_83.mov | 0.672 | 0.661 | 0.572 | 0.705 | 0.381 | 0.352 | 0.364 | 0.515 | 0.423 |
| 5 | speaker_11_center_83.mov | 0.718 | 0.599 | 0.574 | 0.732 | 0.380 | 0.347 | 0.356 | 0.510 | 0.418 |
| 4 | speaker_10_center_83.mov | 0.698 | 0.599 | 0.572 | 0.675 | 0.351 | 0.332 | 0.343 | 0.490 | 0.401 |
Для ранжирования кандидатов по одному из шестнадцати типов личности MBTI необходимо задать матрицу корреляции между персональными качествами личности человека и четырьмя диспозициями MBTI, установить порог полярности качеств и указать целевой тип личности MBTI.
В качестве примера предлагается использование коэффициентов корреляции, представленных в статье [1]. Описание типов личности MBTI и соотвествующие им успешные профессии представлены в статье [2].
Furnham A. The big five facets and the MBTI: The relationship between the 30 NEO-PI (R) Facets and the four Myers-Briggs Type Indicator (MBTI) scores // Psychology. - 2022. vol. 13(10). - pp. 1504-1516.
Tieger P.D., Barron B., Tieger K. Do what you are: Discover the perfect career for you through the secrets of personality type // Hachette UK. - 2024.
Типы личности MBTI основаны на четырех измерениях личности:
Описание измерения | Измерение |
|---|---|
Как мы взаимодействуем с миром и куда направляем свою энергию |
|
Вид информации, которую мы естественным образом замечаем |
|
Как мы принимаем решения |
|
Предпочитаем ли мы жить более структурированно (принимая решения) или более спонтанно (принимая информацию) |
|
Типы личности MBTI и соотвествующие им успешные профессии:
Тип личности | Описание | Успешные профессии |
|---|---|---|
ISTJ | Этот человек отличается ответственностью, строгостью и педантичностью. Он опирается на объективные факты и склонен к аналитическому мышлению. Приступает к задаче только тогда, когда уверен в своих возможностях и успехе | Инспектор: бухгалтер, аудитор, бюджетный аналитик, финансовый менеджер, разработчик, системный аналитик, библиотекарь и т. д. |
ISFJ | Этот человек склонен к самоанализу и анализу окружающих, легко распознает фальшь и предпочитает сохранять психологическую дистанцию. Он исполнителен, внимателен и готов помогать другим. Его силы и энергия исходят из внутренних ресурсов, и он всегда полагается на собственный опыт | Защитник: медсестра, врач, ветеринар или ветеринарный ассистент, социальный работник, сельскохозяйственный или пищевой ученый, секретарь, водитель и т. д. |
INFJ | О таких людях говорят: «ему можно доверять». Он отличается высокой чувствительностью, уделяет большое внимание межличностным отношениям, умеет давать ценные советы и помогает раскрывать потенциал других. Развитая интуиция не только генерирует множество идей, но и способствует самоорганизации | Советник: психолог, специалист по управлению персоналом, офис-менеджер, специалист по обучению, графический дизайнер и т. д. |
INTJ | Этот человек умеет выделять главное, говорит четко и по существу, придерживается практического подхода. Он стремится постоянно улучшать свою работу и всегда ищет способы сделать задачу еще лучше. Пустые разговоры ему не по душе, поэтому он избегает больших шумных компаний и с трудом заводит новые знакомства | Мастермайнд: аниматор, архитектор, копирайтер, фотограф, тележурналист, видеомонтажер, специалист по бизнес-развитию, исполнительный директор, профессор и т. д. |
ISTP | Этот человек воспринимает мир через ощущения. По природе эмпат, но чаще сосредоточен на себе. Его умение объективно принимать решения и анализировать ситуацию указывает на технический склад ума. Он всегда соблюдает дедлайны, хотя иногда может поступить неожиданно | Создатель: инженер, техник, строитель, инспектор, судебный эксперт, программист, разработчик ПО и т. д. |
ISFP | Этот человек умеет находить радость в однообразии и рутинных делах. Прекрасно ладит с людьми, избегая конфликтов. Ему важно чувствовать свою значимость и оказывать помощь. Такой человек не стремится руководить или менять других, уважает их личные границы и ожидает того же в ответ. По натуре он приземленный практик, на которого всегда можно положиться | Композитор: помощник по маркетингу, танцор, шеф-повар, офис-администратор, художник, дизайнер интерьеров, секретарь, медсестра и т. д. |
INFP | Этот человек - чувствительный лирик, прекрасно разбирающийся в людях и легко вызывающий у них симпатию. Он обладает отличным чувством юмора и уделяет большое внимание своему внешнему виду. Стремится к самопознанию, гармонии с собой и старается быть полезным окружающим | Целитель: писатель, дизайнер мультимедиа, менеджер по работе с клиентами, учитель для детей с особыми потребностями, тренер, редактор, модельер и т. д. |
INTP | Этот человек - эрудит с философским складом ума. Он тщательно анализирует свои решения, стремясь к объективности и беспристрастности. Бурные проявления эмоций ему не свойственны. Однако большое количество данных и их изменчивость могут вызывать у него внутреннее напряжение | Архитектор: технический писатель, веб-разработчик, аналитик информационной безопасности, исследователь, ученый, юрист и т. д. |
ESTP | Этот человек всегда добивается успеха, невзирая на препятствия, которые лишь усиливают его целеустремленность. Он стремится к лидерским позициям и плохо переносит роль подчиненного. Обычно разрабатывает четкий план действий и неуклонно ему следует | Промоутер: специалист по работе с клиентами, актер, личный тренер, бренд-амбассадор, менеджер, предприниматель, креативный директор, полицейский, маркетолог, производитель и т. д. |
ESFP | Этот человек легко выявляет слабые стороны людей, что позволяет ему эффективно манипулировать и управлять. В общении он чаще всего руководствуется собственными интересами и предпочитает жить в настоящем. Часто не завершает начатое, стремясь к быстрым результатам. Однако при этом стремится поддерживать гармоничные отношения с окружающими | Исполнитель: бортпроводник, артист, учитель, менеджер по связям с общественностью, торговый представитель, организатор мероприятий и т. д. |
ENFP | Этот человек - творческая личность и фантазер, обладающий качествами, которые помогают ему успешно взаимодействовать с другими, быть открытым и общительным. Он активно участвует в различных мероприятиях, легко решает возникающие вопросы и демонстрирует гибкость | Чемпион: медицинский работник, продюсер, продавец-консультант, специалист по обслуживанию клиентов, сценарист, ведущий на ТВ/радио и т. д. |
ENTP | Этот человек - изобретательный, инициативный и гибкий. Он генератор идей и первопроходец, который не выносит рутины. Постоянное движение и интуитивное принятие решений всегда сопровождают его в работе | Новатор: инженер, маркетолог, менеджер по социальным сетям, аналитик управления, руководитель цифрового маркетинга, бизнес-консультант, разработчик игр, менеджер по продажам и т. д. |
ESTJ | Это трудолюбивый человек, который воспринимает мир таким, какой он есть. Он склонен тщательно планировать и доводить дела до конца. Заботится о своем ближайшем окружении, проявляет добродушие, но иногда может быть вспыльчивым, резким и упрямым | Супервайзер: управляющий директор, менеджер отеля, финансовый сотрудник, судья, агент по недвижимости, генеральный директор, шеф-повар, менеджер по бизнес-развитию, телемаркетолог и т. д. |
ESFJ | Этот человек умеет оказывать влияние на людей, проявляет заботу и готов жертвовать собой ради других. Он легко устанавливает контакт с любым человеком и способен направить ситуацию в нужное ему русло | Поставщик: специалист по технической поддержке, менеджер по работе с клиентами, профессор колледжа, медицинский исследователь, бухгалтер, фотожурналист и т. д. |
ENFJ | Этот человек отличается эмоциональностью и эмпатией. Его мимика выразительна, а речь — красноречива. Благодаря своей самоорганизованности, он успешно воплощает свои фантазии и идеи в жизнь. Он интуитивно понимает, какое решение следует принять в каждой конкретной ситуации | Учитель: менеджер по связям с общественностью, менеджер по продажам, директор по управлению персоналом, арт-директор, консультант и т. д. |
ENTJ | Этот человек легко увлекается, готов рисковать и полагается на интуицию. Без страха внедряет новые технологии и способен глубоко анализировать как себя, так и окружающий мир. Жизнь для него - это борьба, в которой он чувствует себя уверенно. Открыт для новых возможностей, но при этом нуждается в контроле | Командир: руководитель строительства, администратор службы здравоохранения, финансовый бухгалтер, аудитор, юрист, директор школы, химический инженер, менеджер баз данных и т. д. |
Пользователь может установить свои коэффициенты корреляции и ранжировать кандидатов по другим типам личности.
[18]:
# Загрузка датафрейма с коэффициентами корреляции
url = 'https://download.sberdisk.ru/download/file/493644095?token=EX7hFxNJhMoLumI&filename=df_mbti_correlation.csv'
df_correlation_coefficients = pd.read_csv(url)
df_correlation_coefficients.index.name = 'ID'
df_correlation_coefficients.index += 1
df_correlation_coefficients.index = df_correlation_coefficients.index.map(str)
df_correlation_coefficients
[18]:
| Trait | EI | SN | TF | JP | |
|---|---|---|---|---|---|
| ID | |||||
| 1 | Openness | 0.09 | -0.03 | -0.14 | -0.16 |
| 2 | Conscientiousness | 0.04 | -0.04 | 0.20 | 0.14 |
| 3 | Extraversion | 0.20 | -0.03 | 0.01 | -0.07 |
| 4 | Agreeableness | 0.02 | 0.05 | -0.35 | 0.03 |
| 5 | Non-Neuroticism | 0.08 | 0.00 | 0.16 | 0.00 |
[19]:
_b5._professional_match(
correlation_coefficients = df_correlation_coefficients,
personality_type = "ENFJ",
threshold = 0.5,
out = True
)
_b5._save_logs(df = _b5._df_files_MBTI_job_match, name = 'MBTI_ranking_mupta_ru', out = True)
# Опционно
df = _b5.df_files_MBTI_job_match_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:6]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[19]:
| Path | OPE | CON | EXT | AGR | NNEU | EI | SN | TF | JP | MBTI | MBTI_Score | Match | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Person ID | |||||||||||||
| 7 | speaker_19_center_83.mov | 0.767 | 0.658 | 0.653 | 0.801 | 0.463 | 0.205006 | -0.028877 | -0.323879 | -0.052313 | ENFP | 0.418321 | 75.0 |
| 1 | speaker_01_center_83.mov | 0.766 | 0.697 | 0.656 | 0.760 | 0.494 | 0.203710 | -0.032534 | -0.306328 | -0.048136 | ENFP | 0.406929 | 75.0 |
| 8 | speaker_23_center_83.mov | 0.700 | 0.685 | 0.617 | 0.806 | 0.448 | 0.194016 | -0.026570 | -0.308738 | -0.035061 | ENFP | 0.396993 | 75.0 |
| 2 | speaker_06_center_83.mov | 0.687 | 0.659 | 0.612 | 0.750 | 0.421 | 0.191874 | -0.027843 | -0.287812 | -0.037850 | ENFP | 0.380647 | 75.0 |
| 5 | speaker_11_center_83.mov | 0.718 | 0.599 | 0.574 | 0.732 | 0.380 | 0.187565 | -0.026114 | -0.292012 | -0.049261 | ENFP | 0.379269 | 75.0 |
| 9 | speaker_24_center_83.mov | 0.711 | 0.663 | 0.611 | 0.711 | 0.414 | 0.193712 | -0.030591 | -0.275902 | -0.042274 | ENFP | 0.375154 | 75.0 |
| 6 | speaker_15_center_83.mov | 0.671 | 0.671 | 0.602 | 0.709 | 0.400 | 0.189904 | -0.029607 | -0.265650 | -0.034305 | ENFP | 0.363871 | 75.0 |
| 10 | speaker_27_center_83.mov | 0.759 | 0.713 | 0.658 | 0.831 | 0.508 | 0.285739 | -0.029510 | -0.166680 | -0.042916 | ENFP | 0.361447 | 75.0 |
| 4 | speaker_10_center_83.mov | 0.698 | 0.599 | 0.572 | 0.675 | 0.351 | 0.186613 | -0.028317 | -0.264603 | -0.047660 | ENFP | 0.359650 | 75.0 |
| 3 | speaker_07_center_83.mov | 0.672 | 0.661 | 0.572 | 0.705 | 0.381 | 0.184889 | -0.028534 | -0.263672 | -0.033835 | ENFP | 0.357821 | 75.0 |
MuPTA (en)
[21]:
import os
import pandas as pd
# Импорт модуля
from oceanai.modules.lab.build import Run
# Создание экземпляра класса
_b5 = Run()
corpus = 'fi'
lang = 'en'
# Настройка ядра
_b5.path_to_save_ = './models' # Директория для сохранения файла
_b5.chunk_size_ = 2000000 # Размер загрузки файла из сети за 1 шаг
# Формирование аудиомоделей
res_load_model_hc = _b5.load_audio_model_hc()
res_load_model_nn = _b5.load_audio_model_nn()
# Загрузка весов аудиомоделей
url = _b5.weights_for_big5_['audio'][corpus]['hc']['googledisk']
res_load_model_weights_hc = _b5.load_audio_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['audio'][corpus]['nn']['googledisk']
res_load_model_weights_nn = _b5.load_audio_model_weights_nn(url = url, force_reload = False)
# Формирование видеомоделей
res_load_model_hc = _b5.load_video_model_hc(lang=lang)
res_load_model_deep_fe = _b5.load_video_model_deep_fe()
res_load_model_nn = _b5.load_video_model_nn()
# Загрузка весов видеомоделей
url = _b5.weights_for_big5_['video'][corpus]['hc']['googledisk']
res_load_model_weights_hc = _b5.load_video_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['video'][corpus]['fe']['googledisk']
res_load_model_weights_deep_fe = _b5.load_video_model_weights_deep_fe(url = url, force_reload = False)
url = _b5.weights_for_big5_['video'][corpus]['nn']['googledisk']
res_load_model_weights_nn = _b5.load_video_model_weights_nn(url = url, force_reload = False)
# Загрузка словаря с экспертными признаками (текстовая модальность)
res_load_text_features = _b5.load_text_features()
# Формирование текстовых моделей
res_setup_translation_model = _b5.setup_bert_encoder(force_reload = False)
res_load_text_model_hc_fi = _b5.load_text_model_hc(corpus=corpus)
res_load_text_model_nn_fi = _b5.load_text_model_nn(corpus=corpus)
# Загрузка весов текстовых моделей
url = _b5.weights_for_big5_['text'][corpus]['hc']['googledisk']
res_load_text_model_weights_hc_fi = _b5.load_text_model_weights_hc(url = url, force_reload = False)
url = _b5.weights_for_big5_['text'][corpus]['nn']['googledisk']
res_load_text_model_weights_nn_fi = _b5.load_text_model_weights_nn(url = url, force_reload = False)
# Формирование модели для мультимодального объединения информации
res_load_avt_model_b5 = _b5.load_avt_model_b5()
# Загрузка весов модели для мультимодального объединения информации
url = _b5.weights_for_big5_['avt'][corpus]['b5']['googledisk']
res_load_avt_model_weights_b5 = _b5.load_avt_model_weights_b5(url = url, force_reload = False)
PATH_TO_DIR = './video_MuPTA/'
PATH_SAVE_VIDEO = './video_MuPTA/test/'
_b5.path_to_save_ = PATH_SAVE_VIDEO
# Загрузка 10 тестовых аудиовидеозаписей из корпуса MuPTA
# URL: https://hci.nw.ru/en/pages/mupta-corpus
domain = 'https://download.sberdisk.ru/download/file/'
tets_name_files = [
'477995979?token=2cvyk7CS0mHx2MJ&filename=speaker_06_center_83.mov',
'477995980?token=jGPtBPS69uzFU6Y&filename=speaker_01_center_83.mov',
'477995967?token=zCaRbNB6ht5wMPq&filename=speaker_11_center_83.mov',
'477995966?token=B1rbinDYRQKrI3T&filename=speaker_15_center_83.mov',
'477995978?token=dEpVDtZg1EQiEQ9&filename=speaker_07_center_83.mov',
'477995961?token=o1hVjw8G45q9L9Z&filename=speaker_19_center_83.mov',
'477995964?token=5K220Aqf673VHPq&filename=speaker_23_center_83.mov',
'477995965?token=v1LVD2KT1cU7Lpb&filename=speaker_24_center_83.mov',
'477995962?token=tmaSGyyWLA6XCy9&filename=speaker_27_center_83.mov',
'477995963?token=bTpo96qNDPcwGqb&filename=speaker_10_center_83.mov',
]
for curr_files in tets_name_files:
_b5.download_file_from_url(url = domain + curr_files, out = True)
# Получение прогнозов
_b5.path_to_dataset_ = PATH_TO_DIR # Директория набора данных
_b5.ext_ = ['.mov'] # Расширения искомых файлов
# Полный путь к файлу с верными предсказаниями для подсчета точности
url_accuracy = _b5.true_traits_['mupta']['googledisk']
_b5.get_avt_predictions(url_accuracy = url_accuracy, lang = lang)
[2024-10-10 17:40:54] Извлечение признаков (экспертных и нейросетевых) из текста …
[2024-10-10 17:40:55] Получение прогнозов и вычисление точности (мультимодальное объединение) …
10 из 10 (100.0%) … GitHub:nbsphinx-math:OCEANAI\docs\source\user_guide:nbsphinx-math:notebooks\video_MuPTA:nbsphinx-math:test\speaker_27_center_83.mov …
| Path | Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | |
|---|---|---|---|---|---|---|
| Person ID | ||||||
| 1 | speaker_01_center_83.mov | 0.59561 | 0.542967 | 0.440668 | 0.589769 | 0.515306 |
| 2 | speaker_06_center_83.mov | 0.661347 | 0.673973 | 0.603208 | 0.64543 | 0.6431 |
| 3 | speaker_07_center_83.mov | 0.439868 | 0.465049 | 0.284547 | 0.422551 | 0.396058 |
| 4 | speaker_10_center_83.mov | 0.47715 | 0.502563 | 0.373686 | 0.441372 | 0.424637 |
| 5 | speaker_11_center_83.mov | 0.403292 | 0.344359 | 0.317304 | 0.422228 | 0.384346 |
| 6 | speaker_15_center_83.mov | 0.581837 | 0.562177 | 0.504623 | 0.602169 | 0.522254 |
| 7 | speaker_19_center_83.mov | 0.510444 | 0.448468 | 0.425599 | 0.451861 | 0.447891 |
| 8 | speaker_23_center_83.mov | 0.500526 | 0.541376 | 0.308529 | 0.441178 | 0.452412 |
| 9 | speaker_24_center_83.mov | 0.427677 | 0.511355 | 0.301078 | 0.434281 | 0.442301 |
| 10 | speaker_27_center_83.mov | 0.566414 | 0.659169 | 0.434059 | 0.59122 | 0.579172 |
[2024-10-10 17:40:55] Точность по отдельным персональным качествам личности человека …
| Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | Mean | |
|---|---|---|---|---|---|---|
| Metrics | ||||||
| MAE | 0.1632 | 0.1621 | 0.176 | 0.2589 | 0.1122 | 0.1745 |
| Accuracy | 0.8368 | 0.8379 | 0.824 | 0.7411 | 0.8878 | 0.8255 |
[2024-10-10 17:40:55] Средняя средних абсолютных ошибок: 0.1745, средняя точность: 0.8255 …
Лог файлы успешно сохранены …
— Время выполнения: 316.051 сек. —
[21]:
True
Thus, the OCEAN-AI library provides tools to analyze the personality traits of candidates and their suitability for the position, which can significantly improve the recruitment process and help to make more objective and systematic decisions when ranking candidates.
The weight coefficients for 5 professions based on scientific articles are proposed:
Sajjad H. et al. Personality and Career Choices // African Journal of Business Management. - 2012. – Vol. 6 (6) – pp. 2255-2260.
Alkhelil A. H. The Relationship between Personality Traits and Career Choice: A Case Study of Secondary School Students // International Journal of Academic Research in Progressive Education and Development. – 2016. – Vol. 5(2). – pp. 2226-6348.
De Jong N. et al. Personality Traits and Career Role Enactment: Career Role Preferences as a Mediator // Frontiers in Psychology. – 2019. – Vol. 10. – pp. 1720.
The user can set their own weights; the sum of the weights must be equal to 100.
[22]:
# Loading a dataframe with weights
url = 'https://download.sberdisk.ru/download/file/478675798?token=fF5fNZVpthQlEV0&filename=traits_priority_for_professions.csv'
traits_priority_for_professions = pd.read_csv(url)
traits_priority_for_professions.index.name = 'ID'
traits_priority_for_professions.index += 1
traits_priority_for_professions.index = traits_priority_for_professions.index.map(str)
traits_priority_for_professions
[22]:
| Profession | Openness | Conscientiousness | Extraversion | Agreeableness | Non-Neuroticism | |
|---|---|---|---|---|---|---|
| ID | ||||||
| 1 | Managers/executives | 15 | 35 | 15 | 30 | 5 |
| 2 | Entrepreneurship | 30 | 30 | 5 | 5 | 30 |
| 3 | Social/Non profit making professions | 5 | 5 | 35 | 35 | 20 |
| 4 | Public sector professions | 15 | 50 | 15 | 15 | 5 |
| 5 | Scientists/researchers, and engineers | 50 | 15 | 5 | 15 | 15 |
Ranking of candidates for the position of engineer
[23]:
weights = traits_priority_for_professions.iloc[4].values[1:]
weights = list(map(int, weights))
_b5._candidate_ranking(
weigths_openness = weights[0],
weigths_conscientiousness = weights[1],
weigths_extraversion = weights[2],
weigths_agreeableness = weights[3],
weigths_non_neuroticism = weights[4],
out = False
)
_b5._save_logs(df = _b5.df_files_ranking_, name = 'engineer_candidate_ranking_mupta_en', out = True)
# Optional
df = _b5.df_files_ranking_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[23]:
| Path | OPE | CON | EXT | AGR | NNEU | Candidate score | |
|---|---|---|---|---|---|---|---|
| Person ID | |||||||
| 2 | speaker_06_center_83.mov | 0.661 | 0.674 | 0.603 | 0.645 | 0.643 | 65.521 |
| 10 | speaker_27_center_83.mov | 0.566 | 0.659 | 0.434 | 0.591 | 0.579 | 57.934 |
| 6 | speaker_15_center_83.mov | 0.582 | 0.562 | 0.505 | 0.602 | 0.522 | 56.914 |
| 1 | speaker_01_center_83.mov | 0.596 | 0.543 | 0.441 | 0.590 | 0.515 | 56.704 |
| 8 | speaker_23_center_83.mov | 0.501 | 0.541 | 0.309 | 0.441 | 0.452 | 48.093 |
| 7 | speaker_19_center_83.mov | 0.510 | 0.448 | 0.426 | 0.452 | 0.448 | 47.873 |
| 4 | speaker_10_center_83.mov | 0.477 | 0.503 | 0.374 | 0.441 | 0.425 | 46.254 |
| 9 | speaker_24_center_83.mov | 0.428 | 0.511 | 0.301 | 0.434 | 0.442 | 43.708 |
| 3 | speaker_07_center_83.mov | 0.440 | 0.465 | 0.285 | 0.423 | 0.396 | 42.671 |
| 5 | speaker_11_center_83.mov | 0.403 | 0.344 | 0.317 | 0.422 | 0.384 | 39.015 |
Ranking of candidates for the position of manager
[24]:
weights = traits_priority_for_professions.iloc[0].values[1:]
weights = list(map(int, weights))
_b5._candidate_ranking(
weigths_openness = weights[0],
weigths_conscientiousness = weights[1],
weigths_extraversion = weights[2],
weigths_agreeableness = weights[3],
weigths_non_neuroticism = weights[4],
out = False
)
_b5._save_logs(df = _b5.df_files_ranking_, name = 'executive_candidate_ranking_mupta_en', out = True)
# Optional
df = _b5.df_files_ranking_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[24]:
| Path | OPE | CON | EXT | AGR | NNEU | Candidate score | |
|---|---|---|---|---|---|---|---|
| Person ID | |||||||
| 2 | speaker_06_center_83.mov | 0.661 | 0.674 | 0.603 | 0.645 | 0.643 | 65.136 |
| 10 | speaker_27_center_83.mov | 0.566 | 0.659 | 0.434 | 0.591 | 0.579 | 58.710 |
| 6 | speaker_15_center_83.mov | 0.582 | 0.562 | 0.505 | 0.602 | 0.522 | 56.649 |
| 1 | speaker_01_center_83.mov | 0.596 | 0.543 | 0.441 | 0.590 | 0.515 | 54.818 |
| 8 | speaker_23_center_83.mov | 0.501 | 0.541 | 0.309 | 0.441 | 0.452 | 46.581 |
| 4 | speaker_10_center_83.mov | 0.477 | 0.503 | 0.374 | 0.441 | 0.425 | 45.717 |
| 7 | speaker_19_center_83.mov | 0.510 | 0.448 | 0.426 | 0.452 | 0.448 | 45.532 |
| 9 | speaker_24_center_83.mov | 0.428 | 0.511 | 0.301 | 0.434 | 0.442 | 44.069 |
| 3 | speaker_07_center_83.mov | 0.440 | 0.465 | 0.285 | 0.423 | 0.396 | 41.800 |
| 5 | speaker_11_center_83.mov | 0.403 | 0.344 | 0.317 | 0.422 | 0.384 | 37.450 |
To rank candidates by skills, two correlation coefficients must be set for each personality trait and skill, as well as a threshold for the polarity of the traits. These coefficients should show how a person’s trait score changes when it is above or below a given trait polarity threshold.
As an example, the use of correlation coefficients between five traits and four professional skills presented in the article is suggested:
Wehner C., de Grip A., Pfeifer H. Do recruiters select workers with different personality traits for different tasks? A discrete choice experiment // Labour Economics. - 2022. - vol. 78. - pp. 102186.
There are 4 professional skills presented:
Analytical. The ability to effectively solve new problems that require in-depth analysis.
Interactive. The ability to persuade and compromise with clients and colleagues.
Routine. The ability to perform routine tasks effectively with accuracy and attention to detail.
Non-Routine. The ability to respond to and solve problems that have no set order, demonstrating adaptability and creative problem solving skills.
The users can set their own correlation coefficients and rank candidates by other professional skills.
Ranking candidates by professional skills
[25]:
# Loading a dataframe with correlation coefficients
url = 'https://download.sberdisk.ru/download/file/478678231?token=0qiZwliLtHWWYMv&filename=professional_skills.csv'
df_professional_skills = pd.read_csv(url)
df_professional_skills.index.name = 'ID'
df_professional_skills.index += 1
df_professional_skills.index = df_professional_skills.index.map(str)
df_professional_skills
[25]:
| Trait | Score_level | Analytical | Interactive | Routine | Non-Routine | |
|---|---|---|---|---|---|---|
| ID | ||||||
| 1 | Openness | high | 0.082 | 0.348 | 0.571 | 0.510 |
| 2 | Openness | low | 0.196 | 0.152 | 0.148 | 0.218 |
| 3 | Conscientiousness | high | 0.994 | 1.333 | 1.507 | 1.258 |
| 4 | Conscientiousness | low | 0.241 | 0.188 | 0.191 | 0.267 |
| 5 | Extraversion | high | 0.169 | -0.060 | 0.258 | 0.017 |
| 6 | Extraversion | low | 0.181 | 0.135 | 0.130 | 0.194 |
| 7 | Agreeableness | high | 1.239 | 0.964 | 1.400 | 1.191 |
| 8 | Agreeableness | low | 0.226 | 0.180 | 0.189 | 0.259 |
| 9 | Non-Neuroticism | high | 0.636 | 0.777 | 0.876 | 0.729 |
| 10 | Non-Neuroticism | low | 0.207 | 0.159 | 0.166 | 0.238 |
[26]:
_b5._priority_skill_calculation(
correlation_coefficients = df_professional_skills,
threshold = 0.5,
out = True
)
_b5._save_logs(df = _b5.df_files_priority_skill_, name = 'skill_candidate_ranking_mupta_en', out = True)
# Optional
df = _b5.df_files_priority_skill_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[26]:
| Path | OPE | CON | EXT | AGR | NNEU | Analytical | Interactive | Routine | Non-Routine | |
|---|---|---|---|---|---|---|---|---|---|---|
| Person ID | ||||||||||
| 2 | speaker_06_center_83.mov | 0.661 | 0.674 | 0.603 | 0.645 | 0.643 | 0.407 | 0.443 | 0.603 | 0.487 |
| 10 | speaker_27_center_83.mov | 0.566 | 0.659 | 0.434 | 0.591 | 0.579 | 0.376 | 0.431 | 0.542 | 0.466 |
| 6 | speaker_15_center_83.mov | 0.582 | 0.562 | 0.505 | 0.602 | 0.522 | 0.354 | 0.382 | 0.522 | 0.422 |
| 1 | speaker_01_center_83.mov | 0.596 | 0.543 | 0.441 | 0.590 | 0.515 | 0.345 | 0.392 | 0.499 | 0.430 |
| 4 | speaker_10_center_83.mov | 0.477 | 0.503 | 0.374 | 0.441 | 0.425 | 0.170 | 0.188 | 0.206 | 0.205 |
| 9 | speaker_24_center_83.mov | 0.428 | 0.511 | 0.301 | 0.434 | 0.442 | 0.167 | 0.187 | 0.206 | 0.203 |
| 8 | speaker_23_center_83.mov | 0.501 | 0.541 | 0.309 | 0.441 | 0.452 | 0.166 | 0.218 | 0.260 | 0.244 |
| 3 | speaker_07_center_83.mov | 0.440 | 0.465 | 0.285 | 0.423 | 0.396 | 0.085 | 0.066 | 0.067 | 0.096 |
| 7 | speaker_19_center_83.mov | 0.510 | 0.448 | 0.426 | 0.452 | 0.448 | 0.084 | 0.094 | 0.118 | 0.137 |
| 5 | speaker_11_center_83.mov | 0.403 | 0.344 | 0.317 | 0.422 | 0.384 | 0.079 | 0.061 | 0.062 | 0.088 |
Для ранжирования кандидатов по одному из шестнадцати типов личности MBTI необходимо задать матрицу корреляции между персональными качествами личности человека и четырьмя диспозициями MBTI, установить порог полярности качеств и указать целевой тип личности MBTI.
В качестве примера предлагается использование коэффициентов корреляции, представленных в статье [1]. Описание типов личности MBTI и соотвествующие им успешные профессии представлены в статье [2].
Furnham A. The big five facets and the MBTI: The relationship between the 30 NEO-PI (R) Facets and the four Myers-Briggs Type Indicator (MBTI) scores // Psychology. - 2022. vol. 13(10). - pp. 1504-1516.
Tieger P.D., Barron B., Tieger K. Do what you are: Discover the perfect career for you through the secrets of personality type // Hachette UK. - 2024.
Типы личности MBTI основаны на четырех измерениях личности:
Описание измерения | Измерение |
|---|---|
Как мы взаимодействуем с миром и куда направляем свою энергию |
|
Вид информации, которую мы естественным образом замечаем |
|
Как мы принимаем решения |
|
Предпочитаем ли мы жить более структурированно (принимая решения) или более спонтанно (принимая информацию) |
|
Типы личности MBTI и соотвествующие им успешные профессии:
Тип личности | Описание | Успешные профессии |
|---|---|---|
ISTJ | Этот человек отличается ответственностью, строгостью и педантичностью. Он опирается на объективные факты и склонен к аналитическому мышлению. Приступает к задаче только тогда, когда уверен в своих возможностях и успехе | Инспектор: бухгалтер, аудитор, бюджетный аналитик, финансовый менеджер, разработчик, системный аналитик, библиотекарь и т. д. |
ISFJ | Этот человек склонен к самоанализу и анализу окружающих, легко распознает фальшь и предпочитает сохранять психологическую дистанцию. Он исполнителен, внимателен и готов помогать другим. Его силы и энергия исходят из внутренних ресурсов, и он всегда полагается на собственный опыт | Защитник: медсестра, врач, ветеринар или ветеринарный ассистент, социальный работник, сельскохозяйственный или пищевой ученый, секретарь, водитель и т. д. |
INFJ | О таких людях говорят: «ему можно доверять». Он отличается высокой чувствительностью, уделяет большое внимание межличностным отношениям, умеет давать ценные советы и помогает раскрывать потенциал других. Развитая интуиция не только генерирует множество идей, но и способствует самоорганизации | Советник: психолог, специалист по управлению персоналом, офис-менеджер, специалист по обучению, графический дизайнер и т. д. |
INTJ | Этот человек умеет выделять главное, говорит четко и по существу, придерживается практического подхода. Он стремится постоянно улучшать свою работу и всегда ищет способы сделать задачу еще лучше. Пустые разговоры ему не по душе, поэтому он избегает больших шумных компаний и с трудом заводит новые знакомства | Мастермайнд: аниматор, архитектор, копирайтер, фотограф, тележурналист, видеомонтажер, специалист по бизнес-развитию, исполнительный директор, профессор и т. д. |
ISTP | Этот человек воспринимает мир через ощущения. По природе эмпат, но чаще сосредоточен на себе. Его умение объективно принимать решения и анализировать ситуацию указывает на технический склад ума. Он всегда соблюдает дедлайны, хотя иногда может поступить неожиданно | Создатель: инженер, техник, строитель, инспектор, судебный эксперт, программист, разработчик ПО и т. д. |
ISFP | Этот человек умеет находить радость в однообразии и рутинных делах. Прекрасно ладит с людьми, избегая конфликтов. Ему важно чувствовать свою значимость и оказывать помощь. Такой человек не стремится руководить или менять других, уважает их личные границы и ожидает того же в ответ. По натуре он приземленный практик, на которого всегда можно положиться | Композитор: помощник по маркетингу, танцор, шеф-повар, офис-администратор, художник, дизайнер интерьеров, секретарь, медсестра и т. д. |
INFP | Этот человек - чувствительный лирик, прекрасно разбирающийся в людях и легко вызывающий у них симпатию. Он обладает отличным чувством юмора и уделяет большое внимание своему внешнему виду. Стремится к самопознанию, гармонии с собой и старается быть полезным окружающим | Целитель: писатель, дизайнер мультимедиа, менеджер по работе с клиентами, учитель для детей с особыми потребностями, тренер, редактор, модельер и т. д. |
INTP | Этот человек - эрудит с философским складом ума. Он тщательно анализирует свои решения, стремясь к объективности и беспристрастности. Бурные проявления эмоций ему не свойственны. Однако большое количество данных и их изменчивость могут вызывать у него внутреннее напряжение | Архитектор: технический писатель, веб-разработчик, аналитик информационной безопасности, исследователь, ученый, юрист и т. д. |
ESTP | Этот человек всегда добивается успеха, невзирая на препятствия, которые лишь усиливают его целеустремленность. Он стремится к лидерским позициям и плохо переносит роль подчиненного. Обычно разрабатывает четкий план действий и неуклонно ему следует | Промоутер: специалист по работе с клиентами, актер, личный тренер, бренд-амбассадор, менеджер, предприниматель, креативный директор, полицейский, маркетолог, производитель и т. д. |
ESFP | Этот человек легко выявляет слабые стороны людей, что позволяет ему эффективно манипулировать и управлять. В общении он чаще всего руководствуется собственными интересами и предпочитает жить в настоящем. Часто не завершает начатое, стремясь к быстрым результатам. Однако при этом стремится поддерживать гармоничные отношения с окружающими | Исполнитель: бортпроводник, артист, учитель, менеджер по связям с общественностью, торговый представитель, организатор мероприятий и т. д. |
ENFP | Этот человек - творческая личность и фантазер, обладающий качествами, которые помогают ему успешно взаимодействовать с другими, быть открытым и общительным. Он активно участвует в различных мероприятиях, легко решает возникающие вопросы и демонстрирует гибкость | Чемпион: медицинский работник, продюсер, продавец-консультант, специалист по обслуживанию клиентов, сценарист, ведущий на ТВ/радио и т. д. |
ENTP | Этот человек - изобретательный, инициативный и гибкий. Он генератор идей и первопроходец, который не выносит рутины. Постоянное движение и интуитивное принятие решений всегда сопровождают его в работе | Новатор: инженер, маркетолог, менеджер по социальным сетям, аналитик управления, руководитель цифрового маркетинга, бизнес-консультант, разработчик игр, менеджер по продажам и т. д. |
ESTJ | Это трудолюбивый человек, который воспринимает мир таким, какой он есть. Он склонен тщательно планировать и доводить дела до конца. Заботится о своем ближайшем окружении, проявляет добродушие, но иногда может быть вспыльчивым, резким и упрямым | Супервайзер: управляющий директор, менеджер отеля, финансовый сотрудник, судья, агент по недвижимости, генеральный директор, шеф-повар, менеджер по бизнес-развитию, телемаркетолог и т. д. |
ESFJ | Этот человек умеет оказывать влияние на людей, проявляет заботу и готов жертвовать собой ради других. Он легко устанавливает контакт с любым человеком и способен направить ситуацию в нужное ему русло | Поставщик: специалист по технической поддержке, менеджер по работе с клиентами, профессор колледжа, медицинский исследователь, бухгалтер, фотожурналист и т. д. |
ENFJ | Этот человек отличается эмоциональностью и эмпатией. Его мимика выразительна, а речь — красноречива. Благодаря своей самоорганизованности, он успешно воплощает свои фантазии и идеи в жизнь. Он интуитивно понимает, какое решение следует принять в каждой конкретной ситуации | Учитель: менеджер по связям с общественностью, менеджер по продажам, директор по управлению персоналом, арт-директор, консультант и т. д. |
ENTJ | Этот человек легко увлекается, готов рисковать и полагается на интуицию. Без страха внедряет новые технологии и способен глубоко анализировать как себя, так и окружающий мир. Жизнь для него - это борьба, в которой он чувствует себя уверенно. Открыт для новых возможностей, но при этом нуждается в контроле | Командир: руководитель строительства, администратор службы здравоохранения, финансовый бухгалтер, аудитор, юрист, директор школы, химический инженер, менеджер баз данных и т. д. |
Пользователь может установить свои коэффициенты корреляции и ранжировать кандидатов по другим типам личности.
[27]:
# Загрузка датафрейма с коэффициентами корреляции
url = 'https://download.sberdisk.ru/download/file/493644095?token=EX7hFxNJhMoLumI&filename=df_mbti_correlation.csv'
df_correlation_coefficients = pd.read_csv(url)
df_correlation_coefficients.index.name = 'ID'
df_correlation_coefficients.index += 1
df_correlation_coefficients.index = df_correlation_coefficients.index.map(str)
df_correlation_coefficients
[27]:
| Trait | EI | SN | TF | JP | |
|---|---|---|---|---|---|
| ID | |||||
| 1 | Openness | 0.09 | -0.03 | -0.14 | -0.16 |
| 2 | Conscientiousness | 0.04 | -0.04 | 0.20 | 0.14 |
| 3 | Extraversion | 0.20 | -0.03 | 0.01 | -0.07 |
| 4 | Agreeableness | 0.02 | 0.05 | -0.35 | 0.03 |
| 5 | Non-Neuroticism | 0.08 | 0.00 | 0.16 | 0.00 |
[30]:
_b5._professional_match(
correlation_coefficients = df_correlation_coefficients,
personality_type = "ENFJ",
threshold = 0.5,
out = True
)
_b5._save_logs(df = _b5._df_files_MBTI_job_match, name = 'MBTI_ranking_mupta_en', out = True)
# Опционно
df = _b5.df_files_MBTI_job_match_.rename(columns = {'Openness':'OPE', 'Conscientiousness':'CON', 'Extraversion': 'EXT', 'Agreeableness': 'AGR', 'Non-Neuroticism': 'NNEU'})
columns_to_round = df.columns[1:6]
df[columns_to_round] = df[columns_to_round].apply(lambda x: [round(i, 3) for i in x])
df
[30]:
| Path | OPE | CON | EXT | AGR | NNEU | EI | SN | TF | JP | MBTI | MBTI_Score | Match | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Person ID | |||||||||||||
| 2 | speaker_06_center_83.mov | 0.661 | 0.674 | 0.603 | 0.645 | 0.643 | 0.271478 | -0.032624 | -0.074766 | -0.034321 | ENFP | 0.284152 | 75.0 |
| 6 | speaker_15_center_83.mov | 0.582 | 0.562 | 0.505 | 0.602 | 0.522 | 0.229601 | -0.024972 | -0.091174 | -0.031648 | ENFP | 0.259311 | 75.0 |
| 10 | speaker_27_center_83.mov | 0.566 | 0.659 | 0.434 | 0.591 | 0.579 | 0.048690 | -0.000776 | -0.066064 | 0.049778 | ENFJ | 0.165309 | 100.0 |
| 1 | speaker_01_center_83.mov | 0.596 | 0.543 | 0.441 | 0.590 | 0.515 | 0.040210 | 0.003122 | -0.103169 | 0.029258 | ESFJ | 0.129477 | 75.0 |
| 4 | speaker_10_center_83.mov | 0.477 | 0.503 | 0.374 | 0.441 | 0.425 | -0.140376 | -0.016646 | 0.250115 | 0.159620 | INTJ | 0.088133 | 50.0 |
| 9 | speaker_24_center_83.mov | 0.428 | 0.511 | 0.301 | 0.434 | 0.442 | -0.122322 | -0.020306 | 0.240365 | 0.148065 | INTJ | 0.084185 | 50.0 |
| 7 | speaker_19_center_83.mov | 0.510 | 0.448 | 0.426 | 0.452 | 0.448 | -0.101987 | -0.007200 | -0.078923 | -0.128220 | INFP | 0.043061 | 50.0 |
| 8 | speaker_23_center_83.mov | 0.501 | 0.541 | 0.309 | 0.441 | 0.452 | -0.040020 | -0.049474 | 0.117143 | 0.004070 | INTJ | 0.026772 | 50.0 |
| 5 | speaker_11_center_83.mov | 0.403 | 0.344 | 0.317 | 0.422 | 0.384 | -0.152724 | 0.014281 | 0.070700 | 0.025861 | ISTJ | 0.006465 | 25.0 |
| 3 | speaker_07_center_83.mov | 0.440 | 0.465 | 0.285 | 0.423 | 0.396 | -0.155235 | 0.019207 | 0.050250 | 0.012514 | ISTJ | 0.003128 | 25.0 |