Подсчёт частоты совместной встречаемости определенных слов в тексте?

Дан текст в формате Text.csv - https://drive.google.com/file/d/1OCqNoOPxh8gLVAnBC4HPFuLGCH2XsCUa/view?usp=sharing

Пример текста из Text.csv:

'Мы ищем мотивированного, целеустремленного и профессионального  управляющего фитнес-клубом, 
готового много работать и профессионально расти   
Требования :     высшее образование,   совокупный стаж работы с учетом обучения 
не менее 12 лет   хорошее понимание финансов и умение работать с бизнес-планами,
опыт управления продажами,   понимание особенностей управление предприятием сервиса,
опыт управленческой работы от 3 лет,   
опыт руководства коллективом от 10 человек,   активная жизненная позиция, 
коммуникабельность, ответственность за конечный результат, стрессоустойчивость, 
позитивный настрой,   увлеченность здоровым образом жизни, 
собственный опыт тренировок в фитнес-клубе,   
хорошие навыки устной и письменной речи.   
английский язык является большим плюсом,
Обязанности :     обеспечение прибыльного функционирования спортивного клуба,   
выполнение бюджета, выполнение установленных коммерческих планов,   
формирование и удержание команды,   руководство административно-хозяйственной и 
экономической деятельностью клуба,   обеспечение высокого уровня обслуживания 
клиентов,   составление отчетов различного уровня.     

Условия:     оклад 50 000 рублей+ бонусы по КПЭ 30 000 рублей + % от продаж,
оформление по ТК РФ,   бесплатные тренировки в фитнес-клубе, 
скидки на услуги клуба   корпоративное обучение.'

Дан список определенных слов KeyWords.csv(навыки) - https://drive.google.com/file/d/18pZbqOSCUb0a2wc-Dzl1uGBeqdpF-0z6/view?usp=sharing

Пример из KeyWords.csv:

0   Языки программирования
1   Язык разметки
2   Язык программирования
3   Язык запросов
4   Эссе

Дан второй список определенных слов KeyWords2.csv(обязанности) - https://drive.google.com/file/d/1SEtuiFfAwBFV7V3IYr9xjteNjfxUNAf_/view?usp=sharing

Пример из KeyWords2.csv:

0   3D моделирование
1   Автоматизация A/B тестирования
2   Автоматизация API
3   Автоматизация Bash
4   Автоматизация BI

Требуется, используя текст, ответить какие навыки каким обязанностям соответствуют, - рассчитав совместную встречаемость навыков и обязанностей в тексте.

Я начал решать эту задачу так:

-- импорт библиотек

import pandas as pd
import razdel
import re
from pymystem3 import Mystem
stemmer = Mystem()

-- считываю текст и ключевые слова

desc = pd.read_csv('Text.csv', header=None)
tools = pd.read_csv('KeyWord.csv', header=None)
resp = pd.read_csv('KeyWord2.csv', header=None)

-- регулярное выражение для очистки текста

GOOD_TOKEN_RE = re.compile(r'\w', re.I)

-- лемматизация и обработка текста и ключевых слов

 desc_all_tokens = [[tok for tok in stemmer.lemmatize(job) if tok if GOOD_TOKEN_RE.search(tok)]
               for job in desc[1].values]

 tools_all_tokens = [[tok for tok in stemmer.lemmatize(tool) if tok if GOOD_TOKEN_RE.search(tok)]
               for tool in tools[0].values]


 desc_all_tokens = [[tok for tok in stemmer.lemmatize(res) if tok if GOOD_TOKEN_RE.search(tok)]
               for res in resp[0].values]

Таким образом, я выполнил предобработку и лемматизацию текст и ключевых слов. Помогите пожалуйста из этих данных получить частоту совместной встречаемости определенных навыков и обязанностей в тексте.

Результатом должна быть таблица (cvs файл), с графами, в которой первым и вторым столбцами идут общие ключевые слова из обязанностей и навыков, которые встретились во всем наборе текста, а в третьем количество раз, которые они встретились, а в четвертой процент их совместной встречаемости (если получится вычислить).

Пример выходных данных:

№      resp                    tools                     count       co-tfw
1   составление отчетов   владение английский языком      258       0,12234    

PS.Частота совместной встречаемости слов - это количество совместной встречаемости слов, разделенное на количество слов в документе. Например, в документе = ABCD частота совместной встречаемости слов "А"и"B" в документе равна 1/4 = 0.25.


Ответы (0 шт):