Проект “Record linkage Innohack”
Описание
Этот проект предназначен для связывания записей из трех CSV-таблиц (table_dataset1
, table_dataset2
, table_dataset3
) в ClickHouse, используя методы машинного обучения и графовые алгоритмы. В результате работы проекта формируется таблица table_results
, содержащая идентификаторы записей, сгруппированных по сходству.
Структура проекта
docker-entrypoint-initdb.d/
src/
siamese/
blocking.py
graph.py
main.py
siamese_neural_network.py
siamese_training.py
siamese_using.py
.gitignore
Dockerfile
build_solution.sh
docker-compose.yaml
requirements.txt
Установка и запуск
Предварительные требования
- Docker
- Docker Compose
Шаги для запуска проекта
-
Клонирование репозитория:
git clone https://github.com/your-repo/record-linking-clickhouse.git cd record-linking-clickhouse
-
Сборка Docker-образа:
./build_solution.sh
-
Запуск проекта:
docker-compose up -d
-
Проверка результатов:
После запуска проекта, результаты будут доступны в таблице
table_results
в ClickHouse.
Описание модулей
docker-entrypoint-initdb.d/
Директория, содержащая скрипты инициализации ClickHouse. Скрипты выполняются при первом запуске контейнера ClickHouse.
src/
Основная директория с исходным кодом проекта.
siamese/
Директория, содержащая модели и функции, связанные с Siamese Neural Network.
blocking.py
Модуль для блокировки записей. Включает в себя выбор признаков, создание блоков и их объединение.
graph.py
Модуль для работы с графом записей. Включает в себя создание графа, обработку блоков и разделение графа на компоненты связности.
main.py
Главный модуль, который управляет всем процессом связывания записей.
siamese_neural_network.py
Модуль, содержащий определение Siamese Neural Network.
siamese_training.py
Модуль для обучения Siamese Neural Network.
siamese_using.py
Модуль для использования обученной Siamese Neural Network для сравнения записей.
.gitignore
Файл, определяющий игнорируемые файлы и директории для Git.
Dockerfile
Файл для сборки Docker-образа проекта.
build_solution.sh
Скрипт для сборки Docker-образа проекта.
docker-compose.yaml
Файл для запуска проекта с использованием Docker Compose.
requirements.txt
Файл, содержащий список зависимостей Python.
Тестирование
Проект протестирован на данных из трех CSV-таблиц. Результаты тестирования показали, что решение работает в рамках ограничений (максимальное время выполнения — 20 минут).
Лицензия
Этот проект распространяется под лицензией MIT. Подробности смотрите в файле LICENSE.
Contributing
Если у вас есть вопросы, то не задавайте их, пожалуйста.