pip install -r requirements.txt
Запуск python src/main.py
db/normalized_data.db в таблице clusters
cluster == -1 - выбросы
cluster == -2 - слишком маленький стаж работы
cluster == -3 - название не имеет смысла (или погрешности парса)
Все остальные значения - кластеры
Как настроить config.json
Пояснения для всех значений конфига:
Это параметр в алгоритме кластеризации DBSCAN (Density-Based Spatial Clustering of Applications with Noise). Этот параметр определяет радиус окрестности вокруг точки данных, в пределах которого другие точки считаются частью "соседства". Другими словами, epsilon это расстояние, на котором алгоритм будет искать соседей для каждой точки. Если в радиусе epsilon от точки находится достаточное количество других точек (как определено другим параметром, min_samples), то эта точка считается центральной точкой кластера. Это ключевой параметр для определения того, как точки данных будут группироваться вместе, и его значение обычно выбирается на основе предварительного анализа данных или экспериментально.
Значение: null для автоматичесикого определения (ресурсозатратно) или float > 0.0
Размер популяции при её создании для генетического алгоритма. Это число указывает, сколько различных кандидатов (или индивидуумов) будет в исходной популяции, каждый из которых будет представлять различное значение epsilon для DBSCAN.
Значение: int
Задаёт количество поколений, которые будут использоваться в генетическом алгоритме. Каждое поколение — это полный цикл селекции, кроссовера и мутации в популяции.
Значение: int
Задает границы, в которых может находиться epsilon для DBSCAN.
Значение: float > 0.0
Когда происходит мутация в рамках генетического алгоритма, indpb определяет, насколько вероятно, что любой конкретный атрибут (или параметр) индивидуума изменится. В данном случае, если индивидуум представляет собой набор параметров для алгоритма DBSCAN, и один из этих параметров — epsilon, то DBSCAN_epsilon_mutation_indpb будет регулировать, насколько часто изменения будут применяться к значению epsilon во время операции мутации.
Значение: float > 0.0
Параметр определяет вероятность того, что мутация будет применена к любому данному индивидууму в популяции при каждом поколении.
Значение: float > 0.0
Шанс, что кроссовер произойдет между парами индивидуумов в популяции. Кроссовер — это процесс, в котором два индивидуума (решения) комбинируются для создания одного или более потомков. Это ключевой механизм генетических алгоритмов, который способствует объединению хороших характеристик родительских индивидов в потомках.
Значение: float > 0.0
Определяет, сколько индивидуумов участвует в каждом турнире. Турнирный отбор — это метод отбора, при котором случайным образом выбирается небольшая группа индивидуумов из популяции, и лучший индивидуум из этой группы (т.е., тот, который имеет лучшую приспособленность) выбирается для кроссовера и/или мутации.
Значение: int
Флаг использования параметра стажа работника на момент получения работы в кластеризации.
Значение: bool
Вес при использовании параметра стажа работника на момент получения работы в кластеризации. Учитывается только при use_persons_expirience_at_the_time_of_getting_job == true.
Значение: float
Флаг использования Bing API для перевода названий профессий.
Значение: bool
Определяет, сколько процентов от самых популярных профессий взять за "канонические" и попытаться привести к ним менее популярные профессии.
Значение: 0 <= int <= 100
Определяет, сколько процентов от наименее популярных профессий принимает участие в оптимизации, задаваемой canon_job_names_top_percentile.
Значение: 0 <= int <= 100
Ограничение, устанавливаемое для длины входной последовательности токенов.
Значение: int
Определяет, нужно ли проверять имена профессий на орфографические ошибки.
Значение: bool
Определяет, нужно ли лемматизировать имена профессий (весьма ресурсозатратно).
Значение: bool
Определяет "нормальную" форму для заданных строк. Используется для расшифровки аббревиатур, нежелательных строк и т. д.
Значение: list[str]
Определяет список слов, которые нельзя откидывать при нормализации названий профессий из-за их ключевого влияния на смысл.
Значение: list[str]
Определяет список слов, которые следует исключить из списка полученных "канонических" названий профессий при включенном canon_job_names_top_percentile из-за их слишком общего смысла.
Значение: list[str]