Solution of practical task 3

Task: Forming effective work teams

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 _colleague_ranking method from the OCEAN-AI library to solve the presented practical task using the example of finding suitable colleagues for the target colleague. 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 colleagues’ personalities and can help to form effective work groups, improve communication, and reduce team conflicts.

3890d5386ee349d89513ce1c8290c544

88a9feacd0704769b3810feaa2977e07


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_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_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 21:44:08] Извлечение признаков (экспертных и нейросетевых) из текста …

[2024-10-10 21:44:08] Получение прогнозов и вычисление точности (мультимодальное объединение) …

    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 21:44:08] Точность по отдельным персональным качествам личности человека …

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 21:44:08] Средняя средних абсолютных ошибок: 0.0735, средняя точность: 0.9265 …

Лог файлы успешно сохранены …

— Время выполнения: 35.328 сек. —

[2]:
True

To find the suitable colleague, you need to know two correlation coefficients for each of a personality traits. These coefficients should show how the trait score of one person changes when it is higher or lower than the same trait score of another person.

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

  1. Kuroda S., Yamamoto I. Good boss, bad boss, workers’ mental health and productivity: Evidence from Japan // Japan & The World Economy. – 2018. – vol. 48. – pp. 106-118.

The user can set their own correlation coefficients.

[3]:
# Loading dataframe with correlation coefficients
url = 'https://download.sberdisk.ru/download/file/478675819?token=LuB7L1QsEY0UuSs&filename=colleague_ranking.csv'
df_correlation_coefficients = pd.read_csv(url)
df_correlation_coefficients = pd.DataFrame(
    df_correlation_coefficients.drop(['ID'], axis = 1)
)

df_correlation_coefficients.index.name = 'ID'
df_correlation_coefficients.index += 1
df_correlation_coefficients.index = df_correlation_coefficients.index.map(str)

df_correlation_coefficients
[3]:
Score_comparison Openness Conscientiousness Extraversion Agreeableness Non-Neuroticism
ID
1 higher -0.0602 0.0471 -0.1070 -0.0832 0.190
2 lower -0.1720 -0.1050 0.0772 0.0703 -0.229

Finding a suitable senior colleague

[4]:
# List of personality traits scores of the target person
target_scores = [0.527886, 0.522337, 0.458468, 0.51761, 0.444649]

_b5._colleague_ranking(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = target_scores,
    colleague = 'major',
    equal_coefficients = 0.5,
    out = False
)

_b5._save_logs(df = _b5.df_files_colleague_, name = 'major_colleague_ranking_fi_en', out = True)

# Optional
df = _b5.df_files_colleague_.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 Match
Person ID
3 300gK3CnzW0.003.mp4 0.468 0.449 0.372 0.510 0.454 0.023
7 g24JGYuT74A.004.mp4 0.590 0.399 0.410 0.532 0.507 0.006
1 2d6btbaNdfo.000.mp4 0.619 0.661 0.478 0.654 0.601 0.002
4 4vdJGgZpj4k.003.mp4 0.585 0.616 0.494 0.606 0.587 0.002
10 _plk5k7PBEg.003.mp4 0.648 0.610 0.525 0.614 0.606 -0.002
5 be0DQawtVkE.002.mp4 0.681 0.566 0.554 0.647 0.642 -0.005
8 JZNMxa3OKHY.000.mp4 0.606 0.524 0.531 0.594 0.580 -0.008
6 cLaZxEf1nE4.004.mp4 0.663 0.551 0.558 0.585 0.587 -0.011
2 300gK3CnzW0.001.mp4 0.462 0.413 0.416 0.498 0.431 -0.154
9 nvlqJbHk_Lc.003.mp4 0.511 0.465 0.391 0.444 0.439 -0.176

Finding a suitable junior colleague

[5]:
# List of personality traits scores of the target person
target_scores = [0.527886, 0.522337, 0.458468, 0.51761, 0.444649]

_b5._colleague_ranking(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = target_scores,
    colleague = 'minor',
    equal_coefficients = 0.5,
    out = False
)

_b5._save_logs(df = _b5.df_files_colleague_, name = 'minor_colleague_ranking_fi_en', out = True)

# Optional
df = _b5.df_files_colleague_.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 Match
Person ID
9 nvlqJbHk_Lc.003.mp4 0.511 0.465 0.391 0.444 0.439 -0.004
2 300gK3CnzW0.001.mp4 0.462 0.413 0.416 0.498 0.431 -0.012
3 300gK3CnzW0.003.mp4 0.468 0.449 0.372 0.510 0.454 -0.193
7 g24JGYuT74A.004.mp4 0.590 0.399 0.410 0.532 0.507 -0.205
8 JZNMxa3OKHY.000.mp4 0.606 0.524 0.531 0.594 0.580 -0.209
4 4vdJGgZpj4k.003.mp4 0.585 0.616 0.494 0.606 0.587 -0.219
6 cLaZxEf1nE4.004.mp4 0.663 0.551 0.558 0.585 0.587 -0.222
10 _plk5k7PBEg.003.mp4 0.648 0.610 0.525 0.614 0.606 -0.231
1 2d6btbaNdfo.000.mp4 0.619 0.661 0.478 0.654 0.601 -0.231
5 be0DQawtVkE.002.mp4 0.681 0.566 0.554 0.647 0.642 -0.236

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

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

  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.

The user can set their own correlation coefficients.

[6]:
# Загрузка датафрейма с коэффициентами корреляции
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
[6]:
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
[7]:
_b5._colleague_personality_type_match(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = [0.34, 0.56, 0.42, 0.57, 0.56],
    threshold = 0.5,
    out = True
)

_b5._save_logs(df = _b5.df_files_MBTI_colleague_match_, name = 'MBTI_colleague_personality_type_match_en', out = True)

# Optional
df = _b5.df_files_MBTI_colleague_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
[7]:
Path OPE CON EXT AGR NNEU EI SN TF JP MBTI Match
Person ID
2 300gK3CnzW0.001.mp4 0.462 0.413 0.416 0.498 0.431 -0.185699 0.017946 0.083205 0.030144 ISTJ 100.0
3 300gK3CnzW0.003.mp4 0.468 0.449 0.372 0.510 0.454 -0.160520 0.068617 -0.278880 0.053384 ISFJ 75.0
1 2d6btbaNdfo.000.mp4 0.619 0.661 0.478 0.654 0.601 0.047788 0.002056 -0.092138 0.046539 ESFJ 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 50.0
7 g24JGYuT74A.004.mp4 0.590 0.399 0.410 0.532 0.507 0.006447 0.037143 -0.271593 -0.105712 ESFP 25.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 25.0
5 be0DQawtVkE.002.mp4 0.681 0.566 0.554 0.647 0.642 0.259041 -0.027361 -0.100093 -0.049093 ENFP 0.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.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.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.0

Для определения степени выраженности персональных растройств необходимо знать коэффициенты корреляции между персональными качествами личности человека и типами личности 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. Furnham A. MBTI and aberrant personality traits: dark-side trait correlates of the Myers Briggs type inventory // Psychology. - 2022. - vol. 13(5). - pp 805-815.

Среди персональных расстройста рассматриваются следующие: 1) Параноидное (Paranoid) — Недоверие и подозрительность по отношению к другим; мотивы интерпретируются как злонамеренные. 2) Шизоидное (Schizoid) — Эмоциональная холодность и отстранённость от социальных отношений; безразличие к похвалам и критике. 3) Шизотипическое (Schizotypal) — Странные убеждения или магическое мышление; поведение или речь, которые кажутся странными, эксцентричными или необычными. 4) Антисоциальное (Antisocial) — Пренебрежение к истине; импульсивность и неспособность планировать будущее; нарушение социальных норм. 5) Пограничное (Borderline) — Неуместная злость; нестабильные и интенсивные отношения, которые чередуются между идеализацией и обесцениванием. 6) Истерическое (Histrionic) — Чрезмерная эмоциональность и стремление к вниманию; драматизация, театральное поведение и преувеличенное выражение эмоций. 7) Нарциссическое (Narcissistic) — Высокомерные и надменные манеры или установки, преувеличенное чувство собственной значимости и права на особое отношение. 8) Избегающее (Avoidant) — Социальное избегание; чувство неполноценности и повышенная чувствительность к критике или отказу. 9) Зависимое (Dependent) — Трудности в принятии повседневных решений без чрезмерных советов и уверений; трудности в выражении несогласия из-за страха потери поддержки или одобрения. 10) Обсессивно-компульсивное личностное расстройство (OCPD) — Чрезмерная озабоченность порядком, перфекционизмом, контролем и деталями; стремление к соблюдению правил, часто в ущерб гибкости и эффективности.

The user can set their own correlation coefficients.

[8]:
url = 'https://download.sberdisk.ru/download/file/493644095?token=EX7hFxNJhMoLumI&filename=df_mbti_correlation.csv'
df_correlation_coefficients_mbti = pd.read_csv(url)

df_correlation_coefficients_mbti.index.name = 'ID'
df_correlation_coefficients_mbti.index += 1
df_correlation_coefficients_mbti.index = df_correlation_coefficients_mbti.index.map(str)

url = 'https://download.sberdisk.ru/download/file/493644096?token=T309xfzRosPj3v9&filename=df_disorder_correlation.csv'
df_correlation_coefficients_disorders = pd.read_csv(url)

df_correlation_coefficients_disorders.index.name = 'ID'
df_correlation_coefficients_disorders.index += 1
df_correlation_coefficients_disorders.index = df_correlation_coefficients_disorders.index.map(str)
[9]:
_b5._colleague_personality_desorders(
    correlation_coefficients_mbti = df_correlation_coefficients_mbti,
    correlation_coefficients_disorders = df_correlation_coefficients_disorders,
    personality_desorder_number = 3,
    threshold = 0.5,
    out = True
)

_b5._save_logs(df = _b5.df_files_MBTI_disorders_, name = 'MBTI_colleague_personality_type_match_fi_en', out = True)

# Optional
df = _b5.df_files_MBTI_disorders_.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 MBTI Disorder 1 Disorder 2 Disorder 3
Person ID
1 2d6btbaNdfo.000.mp4 0.619 0.661 0.478 0.654 0.601 ESFJ Narcissistic (0.034) Paranoid (0.033) Dependent (0.028)
2 300gK3CnzW0.001.mp4 0.462 0.413 0.416 0.498 0.431 ISTJ Schizoid (0.039) Avoidant (0.022) Dependent (0.012)
3 300gK3CnzW0.003.mp4 0.468 0.449 0.372 0.510 0.454 ISFJ Dependent (0.089) Narcissistic (0.087) Paranoid (0.082)
4 4vdJGgZpj4k.003.mp4 0.585 0.616 0.494 0.606 0.587 ESFJ Narcissistic (0.03) Paranoid (0.029) Dependent (0.025)
5 be0DQawtVkE.002.mp4 0.681 0.566 0.554 0.647 0.642 ENFP Paranoid (0.067) Narcissistic (0.064) Histrionic (0.062)
6 cLaZxEf1nE4.004.mp4 0.663 0.551 0.558 0.585 0.587 ENFP Paranoid (0.063) Histrionic (0.06) Narcissistic (0.06)
7 g24JGYuT74A.004.mp4 0.590 0.399 0.410 0.532 0.507 ESFP Narcissistic (0.09) Paranoid (0.085) Dependent (0.074)
8 JZNMxa3OKHY.000.mp4 0.606 0.524 0.531 0.594 0.580 ENFP Paranoid (0.061) Narcissistic (0.058) Histrionic (0.057)
9 nvlqJbHk_Lc.003.mp4 0.511 0.465 0.391 0.444 0.439 INFP Avoidant (0.036) Schizoid (0.035) Narcissistic (0.031)
10 _plk5k7PBEg.003.mp4 0.648 0.610 0.525 0.614 0.606 ENFP Paranoid (0.06) Histrionic (0.057) Narcissistic (0.056)

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 21:54:06] Извлечение признаков (экспертных и нейросетевых) из текста …

[2024-10-10 21:54:07] Получение прогнозов и вычисление точности (мультимодальное объединение) …

    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 21:54:07] Точность по отдельным персональным качествам личности человека …

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 21:54:07] Средняя средних абсолютных ошибок: 0.0979, средняя точность: 0.9021 …

Лог файлы успешно сохранены …

— Время выполнения: 311.791 сек. —

[10]:
True

To find the suitable colleague, you need to know two correlation coefficients for each of a personality traits. These coefficients should show how the trait score of one person changes when it is higher or lower than the same trait score of another person.

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

  1. Kuroda S., Yamamoto I. Good boss, bad boss, workers’ mental health and productivity: Evidence from Japan // Japan & The World Economy. – 2018. – vol. 48. – pp. 106-118.

The user can set their own correlation coefficients.

[11]:
# Loading dataframe with correlation coefficients
url = 'https://download.sberdisk.ru/download/file/478675819?token=LuB7L1QsEY0UuSs&filename=colleague_ranking.csv'
df_correlation_coefficients = pd.read_csv(url)
df_correlation_coefficients = pd.DataFrame(
    df_correlation_coefficients.drop(['ID'], axis = 1)
)

df_correlation_coefficients.index.name = 'ID'
df_correlation_coefficients.index += 1
df_correlation_coefficients.index = df_correlation_coefficients.index.map(str)

df_correlation_coefficients
[11]:
Score_comparison Openness Conscientiousness Extraversion Agreeableness Non-Neuroticism
ID
1 higher -0.0602 0.0471 -0.1070 -0.0832 0.190
2 lower -0.1720 -0.1050 0.0772 0.0703 -0.229

Finding a suitable senior colleague

[12]:
# List of personality traits scores of the target person
target_scores = [0.527886, 0.522337, 0.458468, 0.51761, 0.444649]

_b5._colleague_ranking(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = target_scores,
    colleague = 'major',
    equal_coefficients = 0.5,
    out = False
)

_b5._save_logs(df = _b5.df_files_colleague_, name = 'major_colleague_ranking_mupta_ru', out = True)

# Optional
df = _b5.df_files_colleague_.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
[12]:
Path OPE CON EXT AGR NNEU Match
Person ID
1 speaker_01_center_83.mov 0.766 0.697 0.656 0.760 0.494 -0.053
10 speaker_27_center_83.mov 0.759 0.713 0.658 0.831 0.508 -0.055
8 speaker_23_center_83.mov 0.700 0.685 0.617 0.806 0.448 -0.058
7 speaker_19_center_83.mov 0.767 0.658 0.653 0.801 0.463 -0.064
4 speaker_10_center_83.mov 0.698 0.599 0.572 0.675 0.351 -0.211
3 speaker_07_center_83.mov 0.672 0.661 0.572 0.705 0.381 -0.216
6 speaker_15_center_83.mov 0.671 0.671 0.602 0.709 0.400 -0.224
5 speaker_11_center_83.mov 0.718 0.599 0.574 0.732 0.380 -0.224
9 speaker_24_center_83.mov 0.711 0.663 0.611 0.711 0.414 -0.231
2 speaker_06_center_83.mov 0.687 0.659 0.612 0.750 0.421 -0.234

Finding a suitable junior colleague

[13]:
# List of personality traits scores of the target person
target_scores = [0.527886, 0.522337, 0.458468, 0.51761, 0.444649]

_b5._colleague_ranking(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = target_scores,
    colleague = 'minor',
    equal_coefficients = 0.5,
    out = False
)

_b5._save_logs(df = _b5.df_files_colleague_, name = 'minor_colleague_ranking_mupta_ru', out = True)

# Optional
df = _b5.df_files_colleague_.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
[13]:
Path OPE CON EXT AGR NNEU Match
Person ID
2 speaker_06_center_83.mov 0.687 0.659 0.612 0.750 0.421 -0.007
6 speaker_15_center_83.mov 0.671 0.671 0.602 0.709 0.400 -0.014
9 speaker_24_center_83.mov 0.711 0.663 0.611 0.711 0.414 -0.016
5 speaker_11_center_83.mov 0.718 0.599 0.574 0.732 0.380 -0.019
3 speaker_07_center_83.mov 0.672 0.661 0.572 0.705 0.381 -0.019
4 speaker_10_center_83.mov 0.698 0.599 0.572 0.675 0.351 -0.025
8 speaker_23_center_83.mov 0.700 0.685 0.617 0.806 0.448 -0.191
7 speaker_19_center_83.mov 0.767 0.658 0.653 0.801 0.463 -0.200
10 speaker_27_center_83.mov 0.759 0.713 0.658 0.831 0.508 -0.212
1 speaker_01_center_83.mov 0.766 0.697 0.656 0.760 0.494 -0.214

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

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

  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.

The user can set their own correlation coefficients.

[14]:
# Загрузка датафрейма с коэффициентами корреляции
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
[14]:
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
[15]:
_b5._colleague_personality_type_match(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = [0.34, 0.56, 0.42, 0.57, 0.56],
    threshold = 0.5,
    out = False
)

_b5._save_logs(df = _b5.df_files_MBTI_colleague_match_, name = 'MBTI_colleague_personality_type_match_ru', out = True)

# Optional
df = _b5.df_files_MBTI_colleague_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
[15]:
Path OPE CON EXT AGR NNEU EI SN TF JP MBTI Match
Person ID
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.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.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.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.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.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.0
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.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.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.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.0

Для определения степени выраженности персональных растройств необходимо знать коэффициенты корреляции между персональными качествами личности человека и типами личности 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. Furnham A. MBTI and aberrant personality traits: dark-side trait correlates of the Myers Briggs type inventory // Psychology. - 2022. - vol. 13(5). - pp 805-815.

Среди персональных расстройста рассматриваются следующие: 1) Параноидное (Paranoid) — Недоверие и подозрительность по отношению к другим; мотивы интерпретируются как злонамеренные. 2) Шизоидное (Schizoid) — Эмоциональная холодность и отстранённость от социальных отношений; безразличие к похвалам и критике. 3) Шизотипическое (Schizotypal) — Странные убеждения или магическое мышление; поведение или речь, которые кажутся странными, эксцентричными или необычными. 4) Антисоциальное (Antisocial) — Пренебрежение к истине; импульсивность и неспособность планировать будущее; нарушение социальных норм. 5) Пограничное (Borderline) — Неуместная злость; нестабильные и интенсивные отношения, которые чередуются между идеализацией и обесцениванием. 6) Истерическое (Histrionic) — Чрезмерная эмоциональность и стремление к вниманию; драматизация, театральное поведение и преувеличенное выражение эмоций. 7) Нарциссическое (Narcissistic) — Высокомерные и надменные манеры или установки, преувеличенное чувство собственной значимости и права на особое отношение. 8) Избегающее (Avoidant) — Социальное избегание; чувство неполноценности и повышенная чувствительность к критике или отказу. 9) Зависимое (Dependent) — Трудности в принятии повседневных решений без чрезмерных советов и уверений; трудности в выражении несогласия из-за страха потери поддержки или одобрения. 10) Обсессивно-компульсивное личностное расстройство (OCPD) — Чрезмерная озабоченность порядком, перфекционизмом, контролем и деталями; стремление к соблюдению правил, часто в ущерб гибкости и эффективности.

The user can set their own correlation coefficients.

[16]:
url = 'https://download.sberdisk.ru/download/file/493644095?token=EX7hFxNJhMoLumI&filename=df_mbti_correlation.csv'
df_correlation_coefficients_mbti = pd.read_csv(url)

df_correlation_coefficients_mbti.index.name = 'ID'
df_correlation_coefficients_mbti.index += 1
df_correlation_coefficients_mbti.index = df_correlation_coefficients_mbti.index.map(str)

url = 'https://download.sberdisk.ru/download/file/493644096?token=T309xfzRosPj3v9&filename=df_disorder_correlation.csv'
df_correlation_coefficients_disorders = pd.read_csv(url)

df_correlation_coefficients_disorders.index.name = 'ID'
df_correlation_coefficients_disorders.index += 1
df_correlation_coefficients_disorders.index = df_correlation_coefficients_disorders.index.map(str)
[17]:
_b5._colleague_personality_desorders(
    correlation_coefficients_mbti = df_correlation_coefficients_mbti,
    correlation_coefficients_disorders = df_correlation_coefficients_disorders,
    personality_desorder_number = 3,
    threshold = 0.5,
    out = True
)

_b5._save_logs(df = _b5.df_files_MBTI_disorders_, name = 'MBTI_colleague_personality_type_match_fi_en', out = True)

# Optional
df = _b5.df_files_MBTI_disorders_.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
[17]:
Path OPE CON EXT AGR NNEU MBTI Disorder 1 Disorder 2 Disorder 3
Person ID
1 speaker_01_center_83.mov 0.766 0.697 0.656 0.760 0.494 ENFP Narcissistic (0.121) Paranoid (0.119) Dependent (0.083)
2 speaker_06_center_83.mov 0.687 0.659 0.612 0.750 0.421 ENFP Narcissistic (0.114) Paranoid (0.112) Dependent (0.078)
3 speaker_07_center_83.mov 0.672 0.661 0.572 0.705 0.381 ENFP Narcissistic (0.105) Paranoid (0.104) Dependent (0.071)
4 speaker_10_center_83.mov 0.698 0.599 0.572 0.675 0.351 ENFP Narcissistic (0.106) Paranoid (0.105) Dependent (0.071)
5 speaker_11_center_83.mov 0.718 0.599 0.574 0.732 0.380 ENFP Narcissistic (0.115) Paranoid (0.113) Dependent (0.079)
6 speaker_15_center_83.mov 0.671 0.671 0.602 0.709 0.400 ENFP Narcissistic (0.107) Paranoid (0.105) Dependent (0.072)
7 speaker_19_center_83.mov 0.767 0.658 0.653 0.801 0.463 ENFP Narcissistic (0.127) Paranoid (0.125) Dependent (0.087)
8 speaker_23_center_83.mov 0.700 0.685 0.617 0.806 0.448 ENFP Narcissistic (0.12) Paranoid (0.118) Dependent (0.083)
9 speaker_24_center_83.mov 0.711 0.663 0.611 0.711 0.414 ENFP Narcissistic (0.11) Paranoid (0.109) Dependent (0.074)
10 speaker_27_center_83.mov 0.759 0.713 0.658 0.831 0.508 ENFP Paranoid (0.09) Narcissistic (0.088) Histrionic (0.073)

MuPTA (en)

[18]:
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_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)

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 22:04:06] Извлечение признаков (экспертных и нейросетевых) из текста …

[2024-10-10 22:04:06] Получение прогнозов и вычисление точности (мультимодальное объединение) …

    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 22:04:06] Точность по отдельным персональным качествам личности человека …

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 22:04:06] Средняя средних абсолютных ошибок: 0.1745, средняя точность: 0.8255 …

Лог файлы успешно сохранены …

— Время выполнения: 302.368 сек. —

[18]:
True

To find the suitable colleague, you need to know two correlation coefficients for each of a personality traits. These coefficients should show how the trait score of one person changes when it is higher or lower than the same trait score of another person.

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

  1. Kuroda S., Yamamoto I. Good boss, bad boss, workers’ mental health and productivity: Evidence from Japan // Japan & The World Economy. – 2018. – vol. 48. – pp. 106-118.

The user can set their own correlation coefficients.

[19]:
# Loading dataframe with correlation coefficients
url = 'https://download.sberdisk.ru/download/file/478675819?token=LuB7L1QsEY0UuSs&filename=colleague_ranking.csv'
df_correlation_coefficients = pd.read_csv(url)
df_correlation_coefficients = pd.DataFrame(
    df_correlation_coefficients.drop(['ID'], axis = 1)
)

df_correlation_coefficients.index.name = 'ID'
df_correlation_coefficients.index += 1
df_correlation_coefficients.index = df_correlation_coefficients.index.map(str)

df_correlation_coefficients
[19]:
Score_comparison Openness Conscientiousness Extraversion Agreeableness Non-Neuroticism
ID
1 higher -0.0602 0.0471 -0.1070 -0.0832 0.190
2 lower -0.1720 -0.1050 0.0772 0.0703 -0.229

Finding a suitable senior colleague

[20]:
# List of personality traits scores of the target person
target_scores = [0.527886, 0.522337, 0.458468, 0.51761, 0.444649]

_b5._colleague_ranking(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = target_scores,
    colleague = 'major',
    equal_coefficients = 0.5,
    out = False
)

_b5._save_logs(df = _b5.df_files_colleague_, name = 'major_colleague_ranking_mupta_en', out = True)

# Optional
df = _b5.df_files_colleague_.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
[20]:
Path OPE CON EXT AGR NNEU Match
Person ID
10 speaker_27_center_83.mov 0.566 0.659 0.434 0.591 0.579 0.091
8 speaker_23_center_83.mov 0.501 0.541 0.309 0.441 0.452 0.080
1 speaker_01_center_83.mov 0.596 0.543 0.441 0.590 0.515 0.073
7 speaker_19_center_83.mov 0.510 0.448 0.426 0.452 0.448 0.015
2 speaker_06_center_83.mov 0.661 0.674 0.603 0.645 0.643 -0.004
6 speaker_15_center_83.mov 0.582 0.562 0.505 0.602 0.522 -0.013
5 speaker_11_center_83.mov 0.403 0.344 0.317 0.422 0.384 -0.139
3 speaker_07_center_83.mov 0.440 0.465 0.285 0.423 0.396 -0.164
4 speaker_10_center_83.mov 0.477 0.503 0.374 0.441 0.425 -0.172
9 speaker_24_center_83.mov 0.428 0.511 0.301 0.434 0.442 -0.175

Finding a suitable junior colleague

[21]:
# List of personality traits scores of the target person
target_scores = [0.527886, 0.522337, 0.458468, 0.51761, 0.444649]

_b5._colleague_ranking(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = target_scores,
    colleague = 'minor',
    equal_coefficients = 0.5,
    out = False
)

_b5._save_logs(df = _b5.df_files_colleague_, name = 'minor_colleague_ranking_mupta_en', out = True)

# Optional
df = _b5.df_files_colleague_.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
[21]:
Path OPE CON EXT AGR NNEU Match
Person ID
9 speaker_24_center_83.mov 0.428 0.511 0.301 0.434 0.442 0.014
3 speaker_07_center_83.mov 0.440 0.465 0.285 0.423 0.396 0.005
4 speaker_10_center_83.mov 0.477 0.503 0.374 0.441 0.425 -0.001
5 speaker_11_center_83.mov 0.403 0.344 0.317 0.422 0.384 -0.004
7 speaker_19_center_83.mov 0.510 0.448 0.426 0.452 0.448 -0.195
6 speaker_15_center_83.mov 0.582 0.562 0.505 0.602 0.522 -0.198
2 speaker_06_center_83.mov 0.661 0.674 0.603 0.645 0.643 -0.240
8 speaker_23_center_83.mov 0.501 0.541 0.309 0.441 0.452 -0.260
1 speaker_01_center_83.mov 0.596 0.543 0.441 0.590 0.515 -0.283
10 speaker_27_center_83.mov 0.566 0.659 0.434 0.591 0.579 -0.304

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

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

  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.

The user can set their own correlation coefficients.

[22]:
# Загрузка датафрейма с коэффициентами корреляции
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
[22]:
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
[23]:
_b5._colleague_personality_type_match(
    correlation_coefficients = df_correlation_coefficients,
    target_scores = [0.34, 0.56, 0.42, 0.57, 0.56],
    threshold = 0.5,
    out = False
)

_b5._save_logs(df = _b5.df_files_MBTI_colleague_match_, name = 'MBTI_colleague_personality_type_match_en', out = True)

# Optional
df = _b5.df_files_MBTI_colleague_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
[23]:
Path OPE CON EXT AGR NNEU EI SN TF JP MBTI Match
Person ID
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 100.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 100.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 75.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 75.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 75.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 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 25.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 25.0
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.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.0

Для определения степени выраженности персональных растройств необходимо знать коэффициенты корреляции между персональными качествами личности человека и типами личности 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. Furnham A. MBTI and aberrant personality traits: dark-side trait correlates of the Myers Briggs type inventory // Psychology. - 2022. - vol. 13(5). - pp 805-815.

Среди персональных расстройста рассматриваются следующие: 1) Параноидное (Paranoid) — Недоверие и подозрительность по отношению к другим; мотивы интерпретируются как злонамеренные. 2) Шизоидное (Schizoid) — Эмоциональная холодность и отстранённость от социальных отношений; безразличие к похвалам и критике. 3) Шизотипическое (Schizotypal) — Странные убеждения или магическое мышление; поведение или речь, которые кажутся странными, эксцентричными или необычными. 4) Антисоциальное (Antisocial) — Пренебрежение к истине; импульсивность и неспособность планировать будущее; нарушение социальных норм. 5) Пограничное (Borderline) — Неуместная злость; нестабильные и интенсивные отношения, которые чередуются между идеализацией и обесцениванием. 6) Истерическое (Histrionic) — Чрезмерная эмоциональность и стремление к вниманию; драматизация, театральное поведение и преувеличенное выражение эмоций. 7) Нарциссическое (Narcissistic) — Высокомерные и надменные манеры или установки, преувеличенное чувство собственной значимости и права на особое отношение. 8) Избегающее (Avoidant) — Социальное избегание; чувство неполноценности и повышенная чувствительность к критике или отказу. 9) Зависимое (Dependent) — Трудности в принятии повседневных решений без чрезмерных советов и уверений; трудности в выражении несогласия из-за страха потери поддержки или одобрения. 10) Обсессивно-компульсивное личностное расстройство (OCPD) — Чрезмерная озабоченность порядком, перфекционизмом, контролем и деталями; стремление к соблюдению правил, часто в ущерб гибкости и эффективности.

The user can set their own correlation coefficients.

[24]:
url = 'https://download.sberdisk.ru/download/file/493644095?token=EX7hFxNJhMoLumI&filename=df_mbti_correlation.csv'
df_correlation_coefficients_mbti = pd.read_csv(url)

df_correlation_coefficients_mbti.index.name = 'ID'
df_correlation_coefficients_mbti.index += 1
df_correlation_coefficients_mbti.index = df_correlation_coefficients_mbti.index.map(str)

url = 'https://download.sberdisk.ru/download/file/493644096?token=T309xfzRosPj3v9&filename=df_disorder_correlation.csv'
df_correlation_coefficients_disorders = pd.read_csv(url)

df_correlation_coefficients_disorders.index.name = 'ID'
df_correlation_coefficients_disorders.index += 1
df_correlation_coefficients_disorders.index = df_correlation_coefficients_disorders.index.map(str)
[25]:
_b5._colleague_personality_desorders(
    correlation_coefficients_mbti = df_correlation_coefficients_mbti,
    correlation_coefficients_disorders = df_correlation_coefficients_disorders,
    personality_desorder_number = 3,
    threshold = 0.5,
    out = True
)

_b5._save_logs(df = _b5.df_files_MBTI_disorders_, name = 'MBTI_colleague_personality_type_match_fi_en', out = True)

# Optional
df = _b5.df_files_MBTI_disorders_.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
[25]:
Path OPE CON EXT AGR NNEU MBTI Disorder 1 Disorder 2 Disorder 3
Person ID
1 speaker_01_center_83.mov 0.596 0.543 0.441 0.590 0.515 ESFJ Narcissistic (0.037) Paranoid (0.036) Dependent (0.03)
2 speaker_06_center_83.mov 0.661 0.674 0.603 0.645 0.643 ENFP Paranoid (0.061) Histrionic (0.06) Narcissistic (0.057)
3 speaker_07_center_83.mov 0.440 0.465 0.285 0.423 0.396 ISTJ Schizoid (0.033) Avoidant (0.019) Dependent (0.009)
4 speaker_10_center_83.mov 0.477 0.503 0.374 0.441 0.425 INTJ Schizoid (0.03) OCPD (0.021) Avoidant (0.017)
5 speaker_11_center_83.mov 0.403 0.344 0.317 0.422 0.384 ISTJ Schizoid (0.032) Avoidant (0.018) Dependent (0.01)
6 speaker_15_center_83.mov 0.582 0.562 0.505 0.602 0.522 ENFP Paranoid (0.06) Narcissistic (0.057) Histrionic (0.054)
7 speaker_19_center_83.mov 0.510 0.448 0.426 0.452 0.448 INFP Schizoid (0.036) Avoidant (0.036) Narcissistic (0.03)
8 speaker_23_center_83.mov 0.501 0.541 0.309 0.441 0.452 INTJ OCPD (0.012) Schizoid (0.01) Avoidant (0.006)
9 speaker_24_center_83.mov 0.428 0.511 0.301 0.434 0.442 INTJ Schizoid (0.026) OCPD (0.02) Avoidant (0.015)
10 speaker_27_center_83.mov 0.566 0.659 0.434 0.591 0.579 ENFJ Narcissistic (0.026) Paranoid (0.026) Dependent (0.021)