Практическое задание 2012

В этом году  предлагается решить задачу извлечения ключевых слов из научно-технической литературы. Решения проверяются автоматически. Для сдачи задания необходимо зарегистрироваться на сайте практического задания.

Внимание! Регистрация будет закрыта в первой половине Ноября!

После регистрации и входа в систему появится поле для загрузки файла и личная страница со статистикой.

  • На основной странице находится таблица с рейтингами студентов (имя студента, количество очков) и лучшими результатами за прошлую неделю (имя, точность, полнота, F1-мера, балл)
  • На личной странице есть статистика со всеми результатами в т.ч. результатами последнего тестирования (дата, описание, точность, полнота, F1-мера)

Для загрузки файла надо выбрать файл и заполнить форму с кратким описанием программы (использованные алгоритмы и признаки). Загружаемый файл должен представлять собой zip архив с любым именем. Архив должен обязательно содержать:

  • классификатор в файле solution.py. В файле должен содержаться класс Keywords, в конструкторе класса должна подгружаться обученная модель классификации. Кроме того в классе должен присутствовать метод getKeywords (self,text), который получает на вход текст и возвращает список ключевых слов.
  • модель классификатора
  • описание применяемых алгоритмов в файле descripton.txt
  • все используемые внешние библиотеки, кроме библиотек пакета NLTK (они доступны автоматически)

Результаты тестирования появятся на личной странице, как только закончится тестирование.

Ограничения:

  • каждую неделю можно послать только 10 версий программы
  • размер архива не может превышать 100Мб

Подсчет очков
В течении недели студенты не видят прогресс своих коллег и могут посмотреть только свой результат. В конце каждой недели (каждое воскресенье в 23.59.59) производится ранжирование (по F1 мере) всех присланных программ и начисляются очки: за 1 место - 10 очков, 2-9 и т.д. Все программы выше baseline получают по 1 очку. После этого результаты становятся доступны всем на главной странице.

Baseline
В качестве нижней границы используется 3 наиболее весомых юниграммы и 12 биграмм, взвешенных по схеме tf-idf. Код этого классификатора доступен по ссылке (ke-baseline-tf-idf.zip). На проверочном корпусе точность равна 7.2%, полнота - 19.29%, F1 мера - 10.49%.

Тренировочный корпус
Для обучения классификаторов можно использовать тренировочный корпус, доступный по ссылке (open.zip 1.8Mb). Для проверки классификатора на собственном компьютере, рекомендуется использовать метод перекрестной проверки на тренировочном корпусе.

Для допуска к экзамену необходимо набрать 4 и более очков.

Все вопросы относительно проверки заданий просьба присылать на babakov@ispras.ru или писать здесь в комментариях.

Проверочный корпус и лучшие решения

Проверочный корпус и лучшие решения доступны в посте с итогами 2012 года.

46 thoughts on “Практическое задание 2012”

  1. Не является ли опечаткой название файла "descripton.txt" (из списка требований)?
    Разрешено ли использование вместо него файла с названием "description.txt" как имеющего осмысленное семантическое значение в контексте английского языка?

  2. Правильно ли в лекциях дается определение точности и полноты?
    По-моему должно быть наоборот.

    1. В лекциях действительно была ошибка. Спасибо, исправил.
      точность - (количество правильных ответов) поделить на (общее количество ответов от системы)
      полнота - (количество правильных ответов) поделить на (общее количество ответов в тестовой коллекции)

  3. По этой причине в таблице проверочной системы два столбца перепутаны.

    1. В проверочной системе, вроде, все было нормально. Почему ты решил, что там столбцы перепутаны?

  4. А у вас SMTP сервер упал. При регистрации выскакивает:

    Traceback:
    [skip]

    Exception Type: SMTPServerDisconnected at /accounts/register/
    Exception Value: Connection unexpectedly closed

  5. Не могу зарегистрироваться. Вы вчера, кажется, так и не решили описанную выше проблему

    1. Это проблема с hotmail, через который мы шлем письма. Вчера уже чинили, но опять все сломалось... Я написал смс Саше.

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

  6. По-прежнему лежит 🙁

    > В конце каждой недели (каждое воскресенье в 23.59.59) производится ранжирование
    И кстати, я правильно понимаю, что первый дедлайн это не завтра, а в воскресенье через неделю?

    1. Дедлайн только один - последнее воскресенье перед экзаменом, до этого система работает по стандартной схеме. То есть в ближайшее воскресенье будет первый пересчет очков.

      1. Если некоторые так и не смогут зарегистрироваться до завтра, то это будет несправедливо.

        1. Чем жаловаться на несправедливость жизни, лучше почитайте дополнительную литературу и сделайте лучший алгоритм. Например, можно посмотреть труды semeval-2 (task 5): http://www.aclweb.org/anthology/S/S10/

  7. Возник вопрос - как сравниваются ответы функции с правильными ответами?

    Если посимвольно - то восстановление биграмм - задача слишком уж сложная, нет? Т.к. какие-либо частотные данные можно получить только для стемов(получить нормальную лемму в русском языке из словоформы в NLTK вроде бы нельзя, или я ошибаюсь?).

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

    1. Я вроде бы на лекции говорил... Перед сравнением делается стемминг.

  8. В данный момент сайт лежит. Связано это с тем, что кто-то уронил (и пока не поднимает) виртуальную машину. Если сами не поднимут, разберусь завтра (~11 часов утра)

  9. В связи с тем, что машину с сайтом сегодня (а может и завтра утром) будут постоянно перегружать, решение отправлять не рекомендуется - могут потеряться данные.

  10. Есть ли возможность запускать в проверочной системе exe'шные файлы? Или она работает исключительно с чистым питоном?

  11. Только чистый питон. Во 1ых чтобы посмотреть, что именно вы прислали (антиплагиат, да и просто любопытно), а во 2ых так реализована проверочная система.

  12. Просьба каждый раз пересобирать архив заново, а не менять в архиве отдельные файлы (например, через 7zip). Питоновский разорхиватор на это дело ругается и шлет вам HTTP 500 привет.

  13. Ну не знаю, я каждый раз пересобираю, а у меня всё равно одно и то же 500

  14. Неприход email'ов от регистрации уже не просто несправедливость (некоторые уже получили минимальные 4 балла), а жесть какая-то, учитывая, что в начале ноября регистрацию обещано закрыть.

  15. В продолжение вопроса о проверочной системе: на ней установлен пакет numpy? У меня nltk без него не ставилась. Если нет, то какие dll для numpy нужно добавлять в архив? (win32/win64/..)

  16. Numpy (и всё остальное, что нужно для NLTK стоит. Про это не уточнялось, т.к. казалось очевидным). Никакие Dll добавлять не нужно. win32/64 тем более, т.к. машина явно не на винде.

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

  18. А сколько по времени может идти письмо активации аккаунта? Я уже дней пять его жду...

  19. Доброе время суток! Скажите, каким Питоном запускаются решения (вторым или третьим)? Нет ли какого-либо способа указать явно версию, под которой решение будет работать?

  20. А может загрузки задания, у которых статус error не считать? А то никакой информации(стектрейс, что угодно) по ним нет, а счетчик уменьшается.

    1. Присоединяюсь, добавьте стектрейс, а то совсем не понятно, в чём ошибка.

  21. Небольшой FAQ:
    1) Письмо с активацией приходит в течении 1-2 минут. Чаще всего оно распознается как спам.
    2) Никакие дополнительные библиотеки, кроме NLTK (и тех, что необходимы NLTK) установлены на сервере не будут. Pymorphy также был удален. (Ставился при создании проверочной системы, потом я от него отказался).
    3) Автоматической рассылки stderr и output не будет, т.к. в таком случае возможно узнать содержание скрытой выборки через создание собственных исключений. Результат можно узнать у меня, однако я не буду отвечать если ошибка состоит в том, что вы банально не проверили, запускается ли в принципе ваш код на локальной машине. По этой же причине (спама заведомо неправильных решений), будут считаться все решения со статусом error.
    4) Сегодня решится, что делать c "читерскими" решениями, набирающие 40+ процентов F-меры. Скорее всего будут блокироваться, баллы оставлю только 1му человеку, который это придумал, но пока не решено.
    5) Старайтесь задавать свои вопросы не в вечер воскресенья. Предыдущее воскресенье было последним, когда я отвечаю на вопросы в свой выходной.

  22. Можно ли выложить фрагмент проверяющей программы где она сравнивает полученные ключевые слова с правильными чтобы разобраться в ньюансах стема, регистра, знаков препинания?

  23. По поводу версии питона: 2.7
    По поводу фрагмента: на этой неделе вряд ли найду время
    По поводу стэктрейса - смотри небольшой FAQ выше.

    Всем рекомендуется ознакомиться с объявлением на проверочном сайте.

  24. Данные в проверочном корпусе изменились, а в тренировочном - нет.
    Разве их не нужно менять?

  25. Хотелось бы все-таки увидеть код проверки списка словосочетаний. А то я чисто ради интереса загрузил версию, которая на тестовом корпусе выдает такой же список словосочетаний, что и baseline, на любом файле, а при тестировании у неё значительно ниже точность и полнота.

    И ещё временной лимит не позволяет даже простую морфологию с pymorphy использовать, хотя относительный perfomance impact на моей машине незначительный.

  26. На одной из последних лекций говорилось, что по результатам практического задания будут полагаться бонусы на экзамене (вплоть до автомата). Хотелось бы узнать какие именно бонусы планируется давать и будут ли они в итоге. Так как в преддверии периода большой загруженности хорошие бонусы явно не помешали бы.

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

Leave a Reply to Alexander_Ryzhkov Cancel reply

Your email address will not be published. Required fields are marked *

*