Конкурс на Кластеризацию Данных 2021
В рамках конкурса участникам предлагается создать библиотеку на C/C++ для определения языка и тематики каналов. Первый этап продлится до 23:50 14 февраля (дубайское время) и открыт для всех желающих.
Задания конкурса
Определение языка. Алгоритм должен определить язык канала по его названию, описанию и текстам нескольких сообщений в канале – и вернуть двухбуквенный ISO-код языка (или “other”, если у языка нет двухбуквенного кода).
Определение тематики канала. Для русско- и англоязычных каналов алгоритм должен определить относительный вес для каждой выделенной тематики. Список возможных тематик представлен ниже:
- Art & Design
- Bets & Gambling
- Books
- Business & Entrepreneurship
- Cars & Other Vehicles
- Celebrities & Lifestyle
- Cryptocurrencies
- Culture & Events
- Curious Facts
- Directories of Channels & Bots
- Economy & Finance
- Education
- Erotic Content
- Fashion & Beauty
- Fitness
- Food & Cooking
- Foreign Languages
- Health & Medicine
- History
- Hobbies & Activities
- Home & Architecture
- Humor & Memes
- Investments
- Job Listings
- Kids & Parenting
- Marketing & PR
- Motivation & Self-Development
- Movies
- Music
- Offers & Promotions
- Pets
- Politics & Incidents
- Psychology & Relationships
- Real Estate
- Recreation & Entertainment
- Religion & Spirituality
- Science
- Sports
- Technology & Internet
- Travel & Tourism
- Video Games
- Other
Исходные данные
Участникам предлагается тестовый набор данных:
Набор данных представляет из себя текстовый файл, где каждая строка – это данные канала в формате JSON:
{
title: "Channel title",
description: "Channel description",
recent_posts: [
"text #1 of message or caption of media or content of poll etc.",
"text #2 of message or caption of media or content of poll etc.",
...
]
}
В ходе конкурса будут периодически публиковаться дополнительные наборы данных.
Для проверки работ будет использоваться набор данных, отличный от тестовых.
Разработка и тестирование
Участникам доступен простейший пример реализации библиотеки libtgcat.tar.gz. В файле tgcat.h
описан интерфейс библиотеки, который необходимо реализовать в рамках конкурса. Для сборки библиотеки можно использовать следующий код:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
Полученный файл библиотеки libtgcat.so
можно протестировать на тестовых данных используя тестовый скрипт libtgcat-tester.tar.gz. Для этого нужно скопировать полученный файл libtgcat.so
в папку с тестовым скриптом, после чего собирать с помощью cmake стандартным образом:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
Для тестирования библиотеки следует запускать полученный бинарный файл tgcat-tester
со следующими параметрами:
tgcat-tester <mode> <input_file> <output_file>
где:
- <mode> –
language
илиcategory
, - <input_file> – путь до файла с тестовым набором входных данных,
- <output_file> – путь до файла с соответствующим набором выходных данных.
Файл с выходными данными представляет из себя текстовый файл, где каждая строка это результат обработки данных канала в формате JSON:
mode=language
{
"lang_code": "en"
}
mode=category
{
"lang_code": "en",
"category": {
"Art & Design": 0.9,
"Other": 0.1
}
}
где:
- lang_code – ISO 639-1 language code или “other”,
- category – объект, ключом которого является одна из тематик (см. выше), значением – вес этой тематики.
Пример вызова скрипта:
$ ./tgcat-tester language dc0130-input.txt dc0130-language-output.txt
Processed 50297 queries in 0.026331 seconds
$ ./tgcat-tester category dc0130-input.txt dc0130-category-output.txt
Processed 50297 queries in 0.033010 seconds
Общие требования к работам
- Библиотека не должна использовать сеть.
- Библиотека должна отличаться высокой относительной скоростью работы.
- Использование внешних зависимостей рекомендуется свести к минимуму. Зависимости, которые все же необходимы, нужно перечислить в текстовом файле deb-packages.txt. Они будут установлены перед запуском командой
sudo apt-get install ...
- Библиотека будет тестироваться на серверах с Debian GNU/Linux 10 (buster), x86-64 с 8 ядрами и 16 GB RAM. Обязательно проверьте корректность ее работы на чистой системе перед отправкой работы.
На выходе требуется ZIP-файл (максимальный размер файла, который может принять бот, 2 Гб) со следующей структурой:
submission.zip -> src - директория с исходным кодом приложения (обязательно) -> libtgcat.so - библиотека (обязательно) -> resources - директория с дополнительными файлами, необходимыми для работы библиотеки (используйте относительные пути для доступа к ним) (опционально) -> deb-packages.txt - текстовый файл с названиями пакетов внешних зависимостей, разделенных переводом строки (опционально)
Оценка работ
При оценке работ, будет сделан упор на скорость и точность работы алгоритмов. Точность будет иметь наивысший приоритет.
Библиотеки, обрабатывающие каждую 1000 каналов более чем за 60 секунд, рассматриваться не будут.