Конкурс на Кластеризацию Данных 2021. Этап 2

В рамках второго этапа участникам предлагается доработать свою библиотеку на C/C++ для определения тематики каналов.

Второй этап продлится до 23:50, 2 мая 2021 (дубайское время) и открыт только для участников первого этапа конкурса.

Задачи этапа

Доработка алгоритма определения тематики канала. В этом этапе расширен набор языков, для которых требуется определение тематики. Список необходимых языков представлен ниже:

  • Английский
  • Русский
  • Арабский
  • Персидский
  • Узбекский

Для указанных языков алгоритм должен определить относительный вес для каждой выделенной тематики.

Новые категории

Наборы данных во втором раунде с большей вероятностью будут содержать заблокированный контент. Список возможных тематик был расширен соответствующим образом: добавлены Drug Sale, Forgery, Hacked Accounts, Personal Data, Pirated Content, Prostitution, Spam & Fake Followers, Weapon Sale.

Список

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

  • Art & Design
  • Bets & Gambling – включает ставки на спорт
  • Books
  • Business & Entrepreneurship
  • Cars & Other Vehicles
  • Celebrities & Lifestyle
  • Cryptocurrencies
  • Culture & Events
  • Curious Facts
  • Directories of Channels & Bots
  • Drug Sale
  • Economy & Finance
  • Education
  • Erotic Content
  • Fashion & Beauty
  • Fitness
  • Forgery – включает поддельные документы, фальшивые деньги и т.д.
  • Food & Cooking
  • Foreign Language Learning
  • Hacked Accounts & Software – включает взломанное ПО, кардинг, пароли от сервисов по подписке и т.д.
  • Health & Medicine
  • History
  • Hobbies & Activities
  • Home & Architecture
  • Humor & Memes
  • Investments
  • Job Listings
  • Kids & Parenting
  • Marketing & PR
  • Motivation & Self-development — включает вдохновляющие цитаты и поэзию
  • Movies
  • Music
  • Offers & Promotions – включает продажу любых товаров и услуг, кроме относящихся к новым категориям
  • Personal Data – включает раскрытие личных данных, утёкшие базы и т.д
  • Pets
  • Pirated Content – фильмы, музыка, книга, но не ПО
  • Politics & Incidents
  • Prostitution
  • Psychology & Relationships
  • Real Estate
  • Recreation & Entertainment
  • Religion & Spirituality
  • Science
  • Spam & Fake followers – включает услуги и инструменты для спама, накрутки подписчиков и т.д.
  • Sports – включает e-sports
  • Technology & Internet
  • Travel & Tourism
  • Video Games
  • Weapon Sale
  • Other

Рекомендации для сортировки

Ниже приведены некоторые рекомендации, на которые опираются модераторы при разметке данных для анализа результатов этапа.

1. Наибольший вес должна иметь наиболее узкая категория.

*Например, если канал посвящен инвестициям в криптовалюты, категория “Cryptocurrencies” должна иметь больший вес, чем “Investment”. Если канал посвящен историческому развитию автомобилей в 20-м веке, это в первую очередь “Cars & Vehicles”, а не “History”.

2. Категорию личных каналов людей или каналов, посвященных тому или иному человеку, может помочь определить род деятельности человека.

Например, политик => “Politics & Incidents”, кинозвезда => “Celebrities”, атлет => “Sports”. Разумеется, для финансовых советов от футболиста должна использоваться в первую очередь категория “Investments”, а для кулинарного канала депутата — Food & Cooking (см. пункт 1).

Исходные данные

Участникам предлагаются тестовые наборы данных на актуальных для конкурса языках:

Для Вашего удобства, кроме текстового файла, который содержит данные каналов на всех требуемых языках, в архив также добавлены отдельные файлы с данными каналов на каждом конкретном языке. Обратите внимание, что работа алгоритмов будет оцениваться на наборах данных, не отсортированных по языку — и проверочные наборы могут содержать данные из каналов на любом языке.

Машинный перевод

Для каждого файла в архиве есть версия с текстовыми данными, автоматически переведенными на английский язык. Обратите внимание, что Ваш алгоритм должен работать с текстами на оригинальном языке. Версию на английском языке можно использовать только для ознакомления с текстом.

Новые данные

В этом раунде были добавлены дополнительные данные, которые могут помочь улучшить качество определения тематики. Например, количество подписчиков канала, общее количество текстовых постов и файлов разных типов в канале. Кроме того, в наборе данных представлены метаданные файлов и ссылок.

Формат данных

Набор данных представляет из себя текстовый файл, где каждая строка – это данные канала в формате JSON. Обратите внимание, что любое из полей может отсутствовать:

{
  title: "Channel title",
  description: "Channel description",
  subscribers: 123400,
  counters: [
    posts: 100,
    photos: 20,
    videos: 10,
    audios: 3,
    files: 0
  ],
  recent_posts: [
    {
      type: "text",
      text: "text of message", 
      link_preview: {
        url: "https://example.com/",
        title: "Title of link preview",
        description: "Description of link preview"
      }
    },
      {
      type: "photo",
      text: "Photo caption"
    },
      {
      type: "video",
      text: "Video caption",
      duration: 65,
      file_name: "video.mp4",
      file_size: 23982347
    },
      {
      type: "audio",
      text: "Audio caption",
      performer: "Performer",
      title: "Title",
      duration: 183,
      file_size: 1236123
    },
      {
      type: "file",
      text: "File caption",
      file_name: "test.pdf",
      file_size: 1236
    },
    ...
  ]
}

где:

  • title – название канала,
  • description – описание канала,
  • subscribers – примерное количество подписчиков канала,
  • counters – счетчики канала, где:

    • posts – общее количество постов в канале,
    • photos – количество фотографий в канале,
    • videos – количество видео в канале,
    • audios – количество аудио в канале,
    • files – количество файлов в канале,
  • recent_posts – несколько постов из канала, где:

    • type – тип поста: text, photo, video, audio или file,
    • text – текст поста или подпись к медиа,
    • link_preview – данные из предпросмотра ссылки (если есть),
    • duration – длительность видео или аудио в секундах,
    • file_name – имя файла,
    • file_size – размер файла в байтах,
    • performer – название артиста,
    • title – название трека.

В ходе конкурса будут периодически публиковаться дополнительные наборы данных.

Для проверки работ будет использоваться набор данных, отличный от тестовых.

Разработка и тестирование

Участникам доступен простейший пример реализации библиотеки libtgcat-r2.tar.gz. В файле tgcat.h описан интерфейс библиотеки, который необходимо реализовать в рамках конкурса. Для сборки библиотеки можно использовать следующий код:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

Полученный файл библиотеки libtgcat.so можно протестировать на тестовых данных, используя тестовый скрипт libtgcat-tester-r2.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>category,
  • <input_file> – путь до файла с тестовым набором входных данных,
  • <output_file> – путь до файла с соответствующим набором выходных данных.

Файл с выходными данными представляет из себя текстовый файл, где каждая строка это результат обработки данных канала в формате JSON:

{
  "lang_code": "en",
  "category": {
    "Art & Design": 0.9,
    "Other": 0.1
  }
}

где:

  • lang_code – ISO 639-1 language code или “other”; библиотека должна возвращать тот язык, который определила — даже если этот язык не из списка целевых языков этапа.
  • category – объект, ключом которого является одна из тематик (см. выше), значением – вес этой тематики. Категории должны быть возвращены для каждого объекта, даже если библиотека определила язык не из списка целевых языков этапа.

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

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

Пример вызова скрипта:

$ ./tgcat-tester category dc0415-input.txt dc0415-category-output.txt
Processed 50297 queries in 0.033010 seconds

Общие требования к работам

  • Библиотека не должна использовать сеть (в том числе localhost).
  • Библиотека должна отличаться высокой относительной скоростью работы.
  • Использование внешних зависимостей рекомендуется свести к минимуму. Зависимости, которые все же необходимы, нужно перечислить в текстовом файле deb-packages.txt. Они будут установлены перед запуском командой sudo apt-get install ...
  • Библиотека будет тестироваться на серверах с Debian GNU/Linux 10 (buster), x86-64 с 8 ядрами и 16 GB RAM. Обязательно проверьте корректность ее работы на чистой системе перед отправкой работы.
  • Убедитесь, что библиотека собрана в системе Debian GNU/Linux 10 (buster).
  • На выходе требуется ZIP-файл (максимальный размер файла, который может принять бот, 2 Гб) со следующей структурой:

    submission.zip
      -> src - директория с исходным кодом приложения (обязательно)
      -> libtgcat.so - библиотека (обязательно)
      -> resources - директория с дополнительными файлами, необходимыми для работы библиотеки (используйте относительные пути для доступа к ним) (опционально)
      -> deb-packages.txt - текстовый файл с названиями пакетов внешних зависимостей, разделенных переводом строки (опционально)

Оценка работ

При оценке работ будет сделан упор на скорость и точность работы алгоритмов. Точность будет иметь наивысший приоритет.

Библиотеки, обрабатывающие каждую 1000 каналов более чем за 60 секунд, рассматриваться не будут.