Решение практической задачи 1

Задача: ранжирование потенциальных кандидатов по профессиональным обязанностям

Решение практической задачи выполняется в два этапа. На первом этапе необходимо использовать библиотеку OCEAN-AI для получения гипотез предсказаний (оценок персональных качеств личности человека). На втором этапе следует использовать методы _candidate_ranking и _priority_skill_calculation из библиотеки OCEAN-AI для решения представленной практической задачи. Примеры результатов работы и реализации представлены ниже.

Таким образом, библиотека OCEAN-AI предоставляет инструменты для анализа персональных качеств личности кандидатов и их соответствия требованиям должности, что может значительно улучшить процесс подбора персонала и помочь в принятии более объективных и систематизированных решений при ранжировании кандидатов.

5d509235c8ef4c12878f2e6efa6d3bea

233c9a74ffff4aab915fc728b39529f1


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

Для выполнения ранжирования кандидатов необходимо знать весовые коэффициенты, определяющие приоритетность персональных качеств личности в зависимости от профессии.

Предлагаются весовые коэффициенты для 5 профессий, вычисленные на основе научных статей:

  1. Sajjad H. et al. Personality and Career Choices // African Journal of Business Management. - 2012. – Vol. 6 (6) – pp. 2255-2260.

  2. 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.

  3. 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.

Пользователь может установить свои весовые коэффициенты; сумма весов должна быть равна 100.

[3]:
# Загрузка датафрейма с весовыми коэффициентами
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

Ранжирование кандидатов на должность инженера-проектировщика

[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)

# Опционно
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

Ранжирование кандидатов на должность менеджера

[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)

# Опционно
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

Для ранжирования кандидатов по профессиональным навыкам необходимо задать по два коэффициента корреляции для каждого персонального качества личности человека и навыка, а также порога полярности качеств. Эти коэффициенты должны показывать, как измениться оценка качества человека если она больше или меньше заданного порога полярности качеств.

В качестве примера предлагается использование коэффициентов корреляции между двумя людьми в четырьмя профессиональными навыками, представленных в статье:

  1. 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.

Представлены 4 профессиональных навыка:

  1. Analytical (Аналитические навыки). Умение эффективно решать новые задачи, требующие глубокого анализа.

  2. Interactive (Навыки межличностного общения). Умение убеждать и достигать компромиссов с заказчиками и коллегами.

  3. Routine (Способность выполнять рутинную работу). Умение эффективно управлять рутинными задачами, соблюдая точность и внимание к деталям.

  4. Non-Routine (Способность выполнять нестандартную работу). Умение реагировать и решать проблемы, не имеющие установленного порядка, проявляя адаптивность и креативные навыки в решении задач.

Пользователь может установить свои коэффициенты корреляции и ранжировать кандидатов по другим профессиональным навыкам.

Ранжирование кандидатов по профессиональным навыкам

[6]:
# Загрузка датафрейма с коэффициентами корреляции
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)

# Опционно
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].

  1. 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.

  2. 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 основаны на четырех измерениях личности:

Описание измерения

Измерение

Как мы взаимодействуем с миром и куда направляем свою энергию

  1. Экстраверсия - Интроверсия (I)

Вид информации, которую мы естественным образом замечаем

  1. Сенсорика - Интуиция (N)

Как мы принимаем решения

  1. Логика - Чувства (F)

Предпочитаем ли мы жить более структурированно (принимая решения) или более спонтанно (принимая информацию)

  1. Оценка - Восприятие (P)

Типы личности 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

Для выполнения ранжирования кандидатов необходимо знать весовые коэффициенты, определяющие приоритетность персональных качеств личности в зависимости от профессии.

Предлагаются весовые коэффициенты для 5 профессий, вычисленные на основе научных статей:

  1. Sajjad H. et al. Personality and Career Choices // African Journal of Business Management. - 2012. – Vol. 6 (6) – pp. 2255-2260.

  2. 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.

  3. 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.

Пользователь может установить свои весовые коэффициенты; сумма весов должна быть равна 100.

[13]:
# Загрузка датафрейма с весовыми коэффициентами
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

Ранжирование кандидатов на должность инженера-проектировщика

[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)

# Опционно
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

Ранжирование кандидатов на должность менеджера

[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)

# Опционно
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

Для ранжирования кандидатов по профессиональным навыкам необходимо задать по два коэффициента корреляции для каждого персонального качества личности человека и навыка, а также порога полярности качеств. Эти коэффициенты должны показывать, как измениться оценка качества человека если она больше или меньше заданного порога полярности качеств.

В качестве примера предлагается использование коэффициентов корреляции между двумя людьми в четырьмя профессиональными навыками, представленных в статье:

  1. 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.

Представлены 4 профессиональных навыка:

  1. Analytical (Аналитические навыки). Умение эффективно решать новые задачи, требующие глубокого анализа.

  2. Interactive (Навыки межличностного общения). Умение убеждать и достигать компромиссов с заказчиками и коллегами.

  3. Routine (Способность выполнять рутинную работу). Умение эффективно управлять рутинными задачами, соблюдая точность и внимание к деталям.

  4. Non-Routine (Способность выполнять нестандартную работу). Умение реагировать и решать проблемы, не имеющие установленного порядка, проявляя адаптивность и креативные навыки в решении задач.

Пользователь может установить свои коэффициенты корреляции и ранжировать кандидатов по другим профессиональным навыкам.

Ранжирование кандидатов по профессиональным навыкам

[16]:
# Загрузка датафрейма с коэффициентами корреляции
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)

# Опционно
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].

  1. 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.

  2. 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 основаны на четырех измерениях личности:

Описание измерения

Измерение

Как мы взаимодействуем с миром и куда направляем свою энергию

  1. Экстраверсия - Интроверсия (I)

Вид информации, которую мы естественным образом замечаем

  1. Сенсорика - Интуиция (N)

Как мы принимаем решения

  1. Логика - Чувства (F)

Предпочитаем ли мы жить более структурированно (принимая решения) или более спонтанно (принимая информацию)

  1. Оценка - Восприятие (P)

Типы личности 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

Для выполнения ранжирования кандидатов необходимо знать весовые коэффициенты, определяющие приоритетность персональных качеств личности в зависимости от профессии.

Предлагаются весовые коэффициенты для 5 профессий, вычисленные на основе научных статей:

  1. Sajjad H. et al. Personality and Career Choices // African Journal of Business Management. - 2012. – Vol. 6 (6) – pp. 2255-2260.

  2. 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.

  3. 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.

Пользователь может установить свои весовые коэффициенты; сумма весов должна быть равна 100.

[22]:
# Загрузка датафрейма с весовыми коэффициентами
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

Ранжирование кандидатов на должность инженера-проектировщика

[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)

# Опционно
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

Ранжирование кандидатов на должность менеджера

[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)

# Опционно
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

Для ранжирования кандидатов по профессиональным навыкам необходимо задать по два коэффициента корреляции для каждого персонального качества личности человека и навыка, а также порога полярности качеств. Эти коэффициенты должны показывать, как измениться оценка качества человека если она больше или меньше заданного порога полярности качеств.

В качестве примера предлагается использование коэффициентов корреляции между двумя людьми в четырьмя профессиональными навыками, представленных в статье:

  1. 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.

Представлены 4 профессиональных навыка:

  1. Analytical (Аналитические навыки). Умение эффективно решать новые задачи, требующие глубокого анализа.

  2. Interactive (Навыки межличностного общения). Умение убеждать и достигать компромиссов с заказчиками и коллегами.

  3. Routine (Способность выполнять рутинную работу). Умение эффективно управлять рутинными задачами, соблюдая точность и внимание к деталям.

  4. Non-Routine (Способность выполнять нестандартную работу). Умение реагировать и решать проблемы, не имеющие установленного порядка, проявляя адаптивность и креативные навыки в решении задач.

Пользователь может установить свои коэффициенты корреляции и ранжировать кандидатов по другим профессиональным навыкам.

Ранжирование кандидатов по профессиональным навыкам

[25]:
# Загрузка датафрейма с коэффициентами корреляции
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)

# Опционно
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].

  1. 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.

  2. 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 основаны на четырех измерениях личности:

Описание измерения

Измерение

Как мы взаимодействуем с миром и куда направляем свою энергию

  1. Экстраверсия - Интроверсия (I)

Вид информации, которую мы естественным образом замечаем

  1. Сенсорика - Интуиция (N)

Как мы принимаем решения

  1. Логика - Чувства (F)

Предпочитаем ли мы жить более структурированно (принимая решения) или более спонтанно (принимая информацию)

  1. Оценка - Восприятие (P)

Типы личности 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