Кафедра ИВТиПМ. Конкурс алгоритмов 2021

Конкурс посвящён обработке данных и машинному обучению.

Регистрация

Отправьте письмо с темой "Конкурс алгоритмов 2021" на адрес: ivt-contest@yandex.ru. В письме расскажите о себе: как Вас зовут, если Вы студент то укажите группу и вуз.

Все участники получат сертификат участия в фестивале Наука 0+, трое победителей — дипломы.

Задания

Задание 1. Анализ новостей

Вам предоставлен набор новостных заметок на русском языке. Заметка может содержать негативную (negative), позитивную (positive) или нейтральную (neutral) новость.

Ваша задача -- создать алгоритм, который как можно точнее определит, к какой из трёх вышеприведённых категорий принадлежит новость.

Данные

Для построения и настройки параметров алгоритма вам доступны данные с уже отмеченными категориями -- файл train.json.

Дайте оценки всем новостям из файла test.json.

upd: Все данные в удобном для чтения формате из программы на PascalABC.NET: data_for_pascal.zip

Оценка результатов

Для оценки вашего алгоритма отправьте файл с ответами для каждой новости на адрес ivt-contest@yandex.ru. Во вложении должен быть файл с ответами и исходный код вашей программы.

Позднее будет добавлена страница задачи на Kaggle

В строках файла с ответами должно быть записано по одной цифре: -1, 0, 1 для негативной, нейтральной или позитивной новости соответственно. В файле должно быть столько же строк, сколько и новостей в файле с новостями: test.json

Пример файла с ответом: submission_example.csv

Можно отправить ответ несколько раз. Но будет засчитан только последний вариант.

Подсказки

Загрузка данных

# исходный код на Python import pandas as pd data_tst = pd.read_json( "test.json", orient="records", lines=True ) ata_tst.sample(2) # вывести две случайные строки # data_tst -- таблица с данными // исходный код для PascalABC.NET const n_train = 6612; // число строк в файле 'train.txt' n_test = 1654; // число строк а файле 'test.txt' var enc:=Encoding.UTF8; // для явного задания универсальной (unicode) кодировки символов файла f_train: text; // для файла с новостями и оценками f_test: text; // для файла с новостями, без оценок f_out: text; // для файла с ответами train_text: array [1..n_train] of string; // новости (для которых известны оценки) train_label: array [1..n_train] of string; // оценки: (negative, positive или neutral) test_text: array [1..n_test] of string; // новости (для которых неизвестны оценки) test_label: array [1..n_test] of integer; // оценки: (negative = -1, positive=1, или neutral =0) i, t: integer; tmp: string; begin // ===================== // загрузка данных // ===================== assign(f_test, 'test.txt'); reset(f_test, enc); i:=1; while not EoF(f_test) do begin readln(f_test, tmp); test_text[i] := tmp; i := i + 1; end; close(f_test); // вывод первых 3 новостей for i:=1 to 3 do begin writeln(train_text[i]); writeln(train_label[i]); writeln(); end; // ===================== // todo: алгоритм определения характера новости: negative, positive или neutral // ===================== for i:=1 to n_test do begin test_label[i] := 1; end; // ===================== // запись ответов в файл // ===================== assign(f_out, 'submission'); rewrite(f_out); for i:=1 to n_test do begin writeln(f_out, test_label[i]); end; end. // подсказка для разделения строки по символу | // t := LastPos('|', tmp); // test_label[i] := Copy(tmp, t+1, length(tmp)-t);

Методы анализа и представления текста

Сроки проведения

Участие - до 15 ноября
Подведение итогов - до 20 ноября

***

Участвуйте если знаете языки: C, C++, C#, Java, Pascal.

Рекомендованный язык программирования - Python.

Для работы с Python используйте сервис Google Colaboratory или дистрибутив Anaconda