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

В этом году  предлагается решить задачу автоматического определения авторства текста.
Решения проверяются автоматически. Для этого надо прислать на адрес nlp.lectures@gmail.com письмо в формате text/plain с использованием только латинских символов, которое будет содержать

  • в названии только слово submission
  • первой строчкой письма название системы
  • второй строчкой фамилия и имя автора и номер группы
  • и файл с программой, запакованный архиватором zip

Архив должен обязательно содержать

  • классификатор в файле Solution.py. В файле должен содержаться класс Solution, в конструкторе класса должна подгружаться обученная модель классификации. Кроме того в классе должен присутствовать метод  classify(self,doc), который получает на вход документ и возвращает имя автора.
  • модель классификатора
  • описание применяемых алгоритмов в файле description.txt
  • все используемые внешние библиотеки, кроме библиотек пакета NLTK (они доступны автоматически)
В ответ на это письмо вы получите результат автоматического тестирования.

Для обучения классификаторов можно использовать тренировочное множество, доступное по ссылке (trainingSet.zip 19.7Mb).
Для допуска к экзамену необходимо сделать систему, работающую лучше системы Baseline (нижней границы). Код этой системы доступен по ссылке (baseline.zip).  F1 мера нижней границы на проверочном корпусе равна 57.83%.
Для возможности получения оценки отлично надо сделать классификатор, работающий лучше ExcellentBaseline ( F1 мера 77.11%). Код этого классификатора будет выложен после окончания соревнования.
Результаты всех классификаторов можно посмотреть в таблице.  Сейчас плохо поддерживается русский язык, так что пока пишите имена на английском.
Для проверки классификатора на собственном компьютере, рекомендуется использовать метод перекрестной проверки на тренировочном множестве. Пример реализации такой проверки можно найти в файле CrossValidation.zip.
Все вопросы относительно проверки заданий просьба присылать на sbartunov@gmail.com

Для тестирования классификаторов использовалось тестовое множество документов: testingSet.zip

ЧАВО

В: Я послал письмо, а ответа не дождался. В чем дело?
О: Проверочная система неидеальна, иногда она падает, хотя мы работаем над её стабильностью. Напишите кому-нибудь письмо, мы её поднимем и проверим ваше решение.

 

В: В ответном письме мне сообщили, что мое решение упало с кодом ошибки 1. Как же так, у меня все работает!
О: Есть топ самых распространных ошибок, которые мы наблюдаем при проверке решения.
1.
/....../zipa501ad26-1cc2-11e1-8ead-52540071c41b/Solution.py:42:
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode -
interpreting them as being unequal
  intersection = set(v1.keys()).intersection(set(v2.keys()))
2.
Traceback (most recent call last):
  File "main.py", line 50, in <module>
    run.test(solution)
  File "main.py", line 30, in test
    docClass = classifier.classify(documentAndClass[0])
  File "/....../zip1278108e-1cc3-11e1-8ead-52540071c41b/Solution.py", line 118, in classify
    matrix = self.getMatrix(doc)
  File "/...../zip1278108e-1cc3-11e1-8ead-52540071c41b/Solution.py", line 29, in getMatrix
    doc = doc.decode('cp1251')
  File "/usr/lib/python2.7/encodings/cp1251.py", line 15, in decode
    return codecs.charmap_decode(input,errors,decoding_table)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)
Если у вас возникает данная ошибка, то возможно вам следует учесть, что входные данные поступают в ваше решение, будучи прочитанными при помощи codecs.open с указанием нужной кодировки, то есть никаких дополнительных преобразований выполнять не нужно.

 

В: А можно мне узнать, почему именно упала моя программа?
О: Можно. Напишите нам, мы специально прогоним ваше решение и отправим вам stdout и stderr вашего решения, если, конечно, там все честно.

 

В: А к чему вообще такая конспирация? Почему бы вам не отправлять в ответном письме stdout и stderr моего решения? Ну или хотя бы stderr.
О: Мы, к сожалению, не знаем, как определить, содержится ли в stderr только информация об исключении, так неудачно помешавшем занять первое место, или попытка "засветить" тестовую выборку. Если вы знаете, как можно было бы это понять, то расскажите.

 

В: А можно моему решению открывать сетевые соединения или файлы на запись?
О: Нет, нельзя.

 

В: Мое решение слишком большое и не принимается почтовым сервисом gmail. Что делать?
О: На данный момент предполагается, что это разумное и естесственное ограничение размера модели, так как у участников получается в него укладываться и при этом показывать хорошие результаты. В будущем мы, возможно, что-нибудь придумаем.

 

В: Мое решение показывает очень хорошие результаты на кросс-валидации, но на ваших данных результаты ниже. Почему так?
О: Тестовая выборка не идентична обучаемой, а кросс-валидация это кросс-валидация.

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

  1. А есть ли доступ к тренировочному набору на тестирующей машине? Просто даже сжатая базовая версия модели занимает 10МБ и аплоадить её гораздо дольше, чем быстро потренироваться там и сразу же запустится тестирование.

  2. На тестирующей машине нет доступа к тренировочному корпусу из соображений экономии времени и безопасности.

  3. Отправил один вариант позавчера и один вчера. Ни на один из них не получил ответа.

  4. Отправил вариант. Пришел ответ с результатом и фразой: "you didn't state your name and name of the system properly, so i will not include you in the results", хотя отправил все по инструкции. Результата в таблице нет.

  5. Хотелось бы пожаловаться на малый размер тренировочного корпуса - есть 2 автора(Писемский, Решетников), представленных 3 книгами и размеры 2х книг в 10 раз меньше размера 3ей, что создаёт некоторые проблемы для эти авторов при проведение перекрестной проверки.

    1. Хотелось бы пожаловаться на студентов - на лекцию ходят ~40 человек, которые по идее должны были уже начать делать практическое задания. А в реальности, хоть что-то делают только человек 10, что создает некоторые проблемы для оценки качества знаний. Более того, из этих 10 человек, еще никто не сделал классификатор, превышающий по качеству ExcellentBaseline, зато некоторые уже начали жаловаться на сложность задания.

        1. Именно по-этому, я рассказал про него на первой лекции, а не сейчас... =)

        1. Он должен был быть скорее мотивирующий, чем конструктивный. Но все-равно пожалуйста =)

  6. Чет автоматическая проверка походу не работает...

    По инструкции отправил все как надо
    архив назвал solution.zip в нем все как положено
    ответ не пришел

  7. Скажите, на какой операционке происходит проверка? А то два варианта моей модели, полученные под виндой и убунтой, вылетели с ошибкой.

  8. Не получается отправить. Требования перепроверил, за 5 попыток получил одно и тоже:

    your request was processed.
    Your submission failed with return code: 1
    you didn't state your name and name of the system properly, so i will not include you in the results. the key of success is to use plain text, latin symbols and UTF-8 if possible.

    1. Надо сделать минимум 42 попытки, чтобы заработало. 🙂
      Попробуй сначала запустить код через CrossValidation, которую я выложил.

  9. Такая же проблема.
    "your request was processed.
    Your submission failed with return code: 1"

    Хотя, вроде бы, требования соблюдаются...

  10. В таблице перепутаны recall и precision, не совпадает с тем, что пришло в письме.

    1. Этот ответ означает ошибку исполнения программы. По этому поводу надо прогнать свой классификатор с неизмененным CrossValidation, если все сработает, надо писать Сергею Бартунову и просить прислать вывод программы с описанием ошибки.

      1. Я отправила два письма Вам и еще два - Сергею и не получила никакого ответа. Вы знаете, мне сейчас будет достаточно проблематично успеть до полуночи сдать работающий вариант и, что самое обидное, по чисто техническим причинам.
        Мягко говоря, я расстроена.

        1. Сильно не расстраивайтесь. У Вас ещё сутки: " до 0 часов 00 минут 5 декабря".

        2. Вера, я не получал письма от Вас. Но мы ответили на присланные Вами решения.
          Наша система тестирования далеко не идеальна, часть трудностей описана в секции "ЧАВО" в описании задания. Однако замечу, что о задании было известно с самого начала, и предназначалось оно для того, чтобы студенты смогли поисследовать решения одной из открытых задач. Мягко говоря, я расстроен, что некоторые студенты начинают его делать в последний момент, и при этом обижаются, что мы не работаем по выходным...

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

  11. Предлагаю банить решения тех, у кого в названии системы есть ключевые слова "Jaccard Measure, JM, J" =)

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

  13. Внимание студентам!

    Ведомостей на 3ий курс мне в руки дали 7 штук, Денис сказал должно хватить.

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

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

Leave a Reply to Dmitry Cancel reply

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

*