Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 791 сообщений
Cообщения с меткой

соревнование - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Конкурс по программированию на JS: Классификатор слов (предварительные результаты)

Понедельник, 13 Июня 2016 г. 20:25 (ссылка)

Спасибо за ожидание! Публикуем предварительные результаты конкурса по программированию.



Протестировано 312 решений, из них 50 упало или зависло, ещё 3 оказались слишком медленными, чтобы пройти все тесты. Из оставшихся 259 решений 12 по разным причинам были объявлены «вне конкурса»: решения не работали без поправки типа файла данных (авторы забыли галочку «gzip») или были присланы сотрудниками Hola.



Нынешние результаты — предварительные. Мы надеемся, что не допустили ошибок при подведении итогов, и тогда 20 июня 2016 эти результаты станут окончательными. Тогда же вместо идентификаторов решений будут опубликованы имена или псевдонимы их авторов.



Решение победителя конкурса показало результат в 83.67% правильных ответов. Полные списки решений с результатами тестирования находятся в английской версии поста на GitHub.



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



О выборе словаря



Многих интересовало, почему мы выбрали такой странный словарь, многие из «слов» которого не назовёшь английскими. Нам было важно, чтобы результат в 100% был недостижим, иначе мы не смогли бы выбрать, какое из решений, достигнувших 100%, лучшее (были бы нужны дополнительные критерии, например, производительность). Обычные словари для проверки правописания содержат от 50 000 до 165 000 слов. Даже словарь объёмом 165 000 слов вполне мог бы быть сжатым до 64 КиБ вместе с кодом для распаковки. С другой стороны, если бы мы решили пропорционально уменьшить квоту (до 16 КиБ, а то и меньше), то стало бы уже ощутимо не хватать места для кода, и конкурс превратился бы в соревнование по минимизации длины кода. В этом направлении идти не хотелось, поэтому мы выбрали самый большой «словарь», который только смогли найти. В него вошли все мыслимые узкоспециальные термины, а также редкие варианты правописания слов и даже некоторые несуществующие слова, сгенерированные в результате ложных срабатываний алгоритма словоизменения (stemming). Таким образом, в выбранном словаре всего четверть слов можно в полной мере назвать словами английского языка. Тем не менее, прочие слова в составе словаря не полностью случайны, а объединены сходством статистических свойств. Поэтому мы решили пойти на такой компромисс и выбрали словарь размера «insane» из предлагаемых проектом SCOWL.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/303178/

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Конкурс по программированию на JS: Классификатор слов (о ходе тестирования)

Среда, 08 Июня 2016 г. 19:38 (ссылка)

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



Английская версия этого поста размещена на GitHub.



Протестировать 312 решений



Большое спасибо всем участникам! Мы получили 603 решения от 312 участников. Поскольку мы принимаем к тестированию самое последнее из присланных в срок решений, то протестировать надо 312 решений. Это был неожиданный результат. Надеюсь, это немного объясняет, почему это занимает так много времени.



Мы опубликовали все принятые к тестированию решения в директории submissions на GitHub. Имя каждой поддиректории — это уникальный идентификатор решения; если Вы присылали нам решение, то получили автоматическое письмо с подтверждением, в котором содержится этот идентификатор. Имена или псевдонимы авторов решений будут опубликованы вместе с окончательными результатами.



В каждой директории содержится файл solution.js (собственно конкурсное решение) и, если он есть, файл данных data или data.gz (если он сжат с помощью gzip). Эта раскладка соответствует тому, что ожидают официальные скрипты тестирования. В поддиректории src содержатся исходники, которые автор прислал в дополнительном архиве. Скрипты тестирования не обращают на них внимания.



Разумеется, внести изменения в своё решение уже невозможно. Однако можно прислать нам те или иные дополнительные файлы, которые Вы хотели бы опубликовать в директории src, но не включили в архив с исходниками, например, файл README. Это не повлияет на результат тестирования, но если мы сможем лучше понять решение, это может увеличить Ваши шансы на получение специального приза за оригинальность. Если хотите прислать дополнительные файлы, напишите нам письмо.



Генератор тестов



Как обещали, мы публикуем генератор тестов. Это интерфейс командной строки к тому же модулю, который мы применяли в веб-сервисе для генерации тестов. Для одних и тех же начальных значений генератора псевдослучайных чисел этот генератор гарантированно выдаёт те же самые результаты, что и веб-сервис. Опция --help выдаёт инструкцию.



При запуске генератор анализирует словарь и строит марковские модели различных порядков (поэтому инициализация генератора занимает значительное время). Затем он использует генератор псевдослучайных чисел для генерации тестовых наборов. С вероятностью 1/2 выбирается случайное слово из словаря, а в остальных случаях — для генерации используется случайно выбранная из 9 моделей: это цепи Маркова порядков от 1 до 8 и генератор белого шума. Чем выше порядок марковской модели, тем более похожи её результаты на английские слова. Если случайно получилось слово, присутствующее в словаре, оно отбрасывается, и генерируется новое. Поскольку такое чаще происходит с моделями высоких порядков, в тестах не-слова, сгенерированные этими моделями, встречаются несколько реже, чем сгенерированные моделями низких порядков. Если Вас интересуют подробности, рекомендуем прочесть исходники генератора.



Для серьёзного тестирования необходимо большое число блоков по 100 слов. Для их генерации мы используем текстовую строку («seed string») для инициализации мастер-последовательности псевдослучайных чисел, из которой берутся номера блоков. Из одной строки всегда получается одна и та же последовательность блоков, которую можно продолжать неограниченно.



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



«Боевая» тестовая система



Для массового тестирования решений мы разработали новую, более мощную и гибкую тестовую систему. Опция --help выдаёт инструкцию.



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


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

  • Решения запускаются в отдельных процессах, которые получают от главного процесса слова и отправляют обратно ответы.

  • Вместо чтения тысяч JSON-файлов с тестами, новая система генерирует тесты на лету с помощью генератора на основе строки для инициализации мастер-последовательности. Это полностью детерминировано и воспроизводимо.

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

  • По желанию, тестовая программа может перезапускать и переинициализировать решение всякий раз, когда в тесте встретился повтор (слово, которое уже встречалось). Это позволяет изолировать и измерить эффект от обучения в ходе тестирования, которое осуществляют некоторые решения.

  • Можно выбрать «опасный» режим, при котором решение загружается как обычный модуль Node.js, без «песочницы». Его можно (с осторожностью) использовать, если возникли подозрения, что Node.js VM вносит искажения в работу решения.



Вот что означает статистика, отображаемая на экране во время тестирования. Верхняя строка: Total — общее число проверенных слов, W — число слов, NW — число не-слов, NW[0]NW[8] — число не-слов, произведённых каждой из моделей: 0 означает генератор белого шума, а 1–8 — цепи Маркова соответствующих порядков. Для каждого решения: Correct — процент правильных ответов (это именно то, что определяет место в итоговом зачёте), F- — процент ложноотрицательных результатов, F+ — процент ложноположительных результатов, F+[0]F+[8] — процент ложноположительных результатов для каждой модели в отдельности, ms/100w — среднее время обработки одного блока в миллисекундах. Если решение перезапускается при появлении дубликатов, то слева от его имени показывается (R). В машиночитаемом JSON-файле с результатами содержится вся та же информация в интуитивно понятном формате.



Официальная последовательность тестов



Мы открыли Твиттер @ladygaga :-) и взяли оттуда первый твит, появившийся после дедлайна. Текст этого твита стал официальной строкой инициализации последовательности. Для генерации официальной последовательности тестов Вы можете указать следующую опцию для скриптов generate.js и test2.js:



--text 'Lady Gaga has accompanied Mario Andretti in a two-seater race car at #Indy500 today!'



(Дополнение: к сожалению, этот твит уже удалили. Остался только этот ретвит. Поскольку тестирование уже запущено, строку инициализации не меняем.)



Начало последовательности (номера блоков) такое: 416943456, 1130928813, 1690493249, 1560679505, 1146154276, 403245362, 1509995579, 2138666856, 1841363379, 1083285606.



Число блоков и самообучение



Сначала мы прогнали все решения на совсем небольшом числе блоков, чтобы узнать, у каких решений есть шансы оказаться в лидерах. Затем мы взяли 8 подающих надежды решений и запустили их на очень большом числе блоков. При нескольких различных строках инициализации первые три строки рейтинга стабилизировались в пределах первых 1 500 блоков: дальнейшее увеличение числа блоков хоть и уточняло доли процента, но не меняло взаимного расположения лидеров. Мы решили тестировать все решения на 10 000 блоков (это миллион слов).



Некоторые решения применяют оригинальный подход: они запоминают все слова, которые предъявляет им тестовая система. Поскольку слов в словаре меньше 700 000, а разнообразие псевдослучайных не-слов гораздо шире, то слово, встретившееся дважды, с большей вероятностью является словом, чем не-словом. У решений, пользующихся этим явлением, точность результатов со временем возрастает. Теоретически, при неограниченном росте числа блоков, такое решение может показать сколь угодно высокий результат.



Это интересная идея, но для конкурса это проблема, поскольку теоретически на достаточно большом наборе тестов такое решение может обойти любые необучающиеся решения. Это не только сделало бы этот нехитрый приём «волшебной палочкой», побеждающей всё остальное, но и создало бы для жюри проблему выбора между несколькими обучающимися решениями. Если бы эта идея возникла у нас до начала конкурса, мы могли бы легко решить проблему, указав, что тестовая система может перезапустить решение в любой момент в ходе тестирования. Однако мы в явном виде обещали, что инициализация произойдёт только один раз.



Мы решили остановиться на цифре в 10 000 блоков и прогнать каждое решение как с перезапусками, так и без, чтобы отдельно измерить эффект обучения. Результаты необучающихся решений за это время вполне успевают стабилизироваться. Обучение действительно улучшает результат некоторых решений (пока что мы видим одно решение, попавшее в десятку лучших именно благодаря обучению). Конечно, обучающиеся решения показали бы ещё более высокие результаты на большем числе блоков, но это было бы несправедливо по отношению тем участникам, чьи программы показывают высокую точность распознавания сразу после инициализации.



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



Статус



В данный момент некоторые решения всё ещё проходят тестирование.



Мы не указали в условии задачи каких-либо требований к производительности программ. Если бы мы указывали ограничения, пришлось бы точно описывать железо и операционную систему, запускать решения по множеству раз для точного измерения, решать проблемы с искажениями, вносимыми «песочницей». От проблем измерения производительности хотелось уйти. Вследствие этого некоторые из решений, которые мы получили, работают очень медленно.



Тестирование некоторых из решений до сих пор не окончено. Самые медленные из них, похоже, нам придётся остановить досрочно и использовать результаты частичного прогона тестов. На данный момент ни одно из таких решений в десятку лучших не попадает. Кроме того, по меньшей мере одно решение зависло. Мы разберёмся, вносит ли эту проблему «песочница», или это баг в самом решении.



Через несколько дней, когда закончится тестирование медленных решений, мы опубликуем результаты. Уже сейчас Вы можете узнать свой собственный результат, не дожидаясь публикации всей таблицы. Воспользуйтесь для этого новой тестовой системой и указанной выше официальной строкой инициализации. Задайте 10 000 блоков, и Вы получите в точности тот же результат, что и мы (если только Ваше решение не использует Math.random — в этом случае результаты будут слегка различаться). Пока что лучший результат, который мы видели на 10 000 блоках — 83.67%.



Спасибо за терпение. Оставайтесь с нами!
Original source: habrahabr.ru.

https://habrahabr.ru/post/302922/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
Рай77

Конкурс среди могильщиков был организован в Венгрии. (Видео)   Забавный спорт + Экзоспорт. • Action News

Воскресенье, 06 Июня 2016 г. 00:15 (ссылка)
rai77.ru/konkurs-sredi-mogi...11711.html



Чтобы повысить престиж и уважение к не лёгкой профессии могильщика в Венгрии организовали необычное соревнование по выкапыванию могил. HU http://rai77.ru/tur/mogila_rai77.ru.jpg,Соревнование среди копателей могил в Венгрии , Rai7.. Рай77° - вне формата, вне времени...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Фитиль_Дом2 (Автор -Лариса_Дунаева)

Жителю Котка надоело убирать – он решил организовать Чемпионат Финляндии по метанию пылесоса

Пятница, 27 Мая 2016 г. 14:03 (ссылка)

mJAEJPrEHj0 (580x326, 237Kb)

Тони Мякинен рассердился на пылесос, и решил организовать мероприятие для всех мужчин – и женщин – кто не любить убирать дома. В результате летом состоится первый в истории Чемпионат Финляндии по метанию пылесоса.

Тони Мякинен из Котка недавно получил от своей матери красивый барный шкаф. В один день Мякинен пылесосил квартиру. Пылесос ударился о барный шкаф. Бар сломался, и Мякинен очень расстроился. Он бросил пылесос в стену. В результате летом в Котка состоится первый в истории Чемпионат Финляндии по метанию пылесоса.

Читать далее...
Метки:   Комментарии (2)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Конкурс по программированию на JS: Классификатор слов (дополнение)

Пятница, 20 Мая 2016 г. 18:50 (ссылка)


Спасибо всем, кто уже поучаствовал или собирается участвовать в нашем конкурсе по программированию!



Мы решили опубликовать ряд важных разъяснений к правилам, чтобы помочь участникам избежать типичных ошибок. Обидно было бы дисквалифицировать интересное решение из-за чисто технической ошибки.



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



Для отправки работ осталась ещё неделя. Если этот пост помог Вам найти ошибку, ещё есть время её исправить.



Часто задаваемые вопросы

Читать дальше →

https://habrahabr.ru/post/301314/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Конкурс по программированию на JS: Классификатор слов

Среда, 27 Апреля 2016 г. 18:03 (ссылка)

Компания Hola объявляет начало весеннего конкурса по программированию! Призовой фонд увеличен:




  1. Первое место: 3000 USD.

  2. Второе место: 2000 USD.

  3. Третье место: 1000 USD.

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

  5. Если Вы отправите кому-то ссылку на этот конкурс, поставив наш адрес в CC, и этот человек займёт призовое место, Вы получите половину суммы приза (разумеется, не в ущерб награде победителя). За одного победителя такую награду может получить только один человек — тот, кто отправил ссылку первым.



Мы ищем талантливых программистов, поэтому авторы интересных решений будут приглашены на собеседования.







Правила



На этот раз мы решили попробовать что-то новенькое: для разнообразия, этот конкурс — не на производительность кода.



Условия конкурса на английском языке размещены на GitHub. Ниже — перевод на русский язык.




  • Отправляйте решения с помощью этой формы. По электронной почте решения не принимаются.

  • Решения принимаются до 27 мая 2016, 23:59:59 UTC.

  • Предварительные результаты будут опубликованы 3 июня 2016, а окончательное объявление победителей — 10 июня 2016.

  • Можно отправлять решения многократно, но от каждого участника будет рассмотрено только самое последнее решение, отправленное до окончания срока приёма работ.

  • Для тестирования мы будем использовать Node.js v6.0.0 (текущая версия на момент публикации). Можно использовать любые возможности языка, поддерживаемые интерпретатором в стандартной конфигурации.

  • Весь код решения должен находиться в единственном файла на JS.

  • Решение должно быть на JS. Если Вы предпочитаете CoffeeScript или подобные языки, необходимо оттранслировать решение в JS перед отправкой.

  • Нельзя загружать никаких модулей, даже тех, что входят в стандартный комплект Node.js.

  • Ваш JS-файл должен быть не больше 64 КиБ.

  • Вы можете предоставить один дополнительный файл данных для своей программы (см. ниже). Если Вы предоставляете такой файл, то он делит квоту в 64 КиБ с JS-файлом.

  • Если Ваш JS-файл или дополнительный файл данных — продукт генерации, минификации и/или компиляции с других языков вроде CoffeeScript, пожалуйста, приложите архив с исходниками, а также, желательно, описанием подхода. Содержимое этого архива будет опубликовано, но мы не будем его тестировать.

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

  • Запрещается публикация участниками своих решений до окончания конкурса. Нарушители будут дисквалифицированы.

  • Задавайте вопросы по условию задачи в комментариях к этой публикации или по электронной почте.



Постановка задачи



Вам нужно написать программу, которая отличает слова английского языка от последовательностей символов, не являющихся словами. В этой задаче мы считаем словами английского языка те и только те строки, которые встречаются в списке words.txt, прилагаемом к условию. Членство в списке регистронезависимое. Казалось бы, это просто — нужно только проверить, встречается ли строка в словаре — если бы не ограничение на размер решения в 64 КиБ.



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



API


Ваш JS-файл должен быть модулем для Node.js, экспортирующим две функции:



init(data)


Необязательно. Если функция экспортирована, она будет вызвана один раз для инициализации модуля. В качестве аргумента data будет передано содержимое дополнительного файла данных (в виде Buffer), если Вы его предоставили, или undefined в противном случае.



test(word)


Эта функция должна возвращать true, если она классифицирует word как слово английского языка, и false в противном случае. Эту функцию можно вызывать многократно для различных слов.



Вместе с программой Вы можете предоставить дополнительный файл данных. Если Вы это сделаете, то тестовая система прочитает этот файл в Buffer и передаст Вашей функции init. Файл данных делит квоту в 64 КиБ с JS-файлом, то есть ограничение применяется к сумме размеров этих двух файлов. Вы также можете указать, что Ваш файл данных сжат с помощью gzip. Если Вы отметите соответствующую опцию в форме отправки решения, то содержимое файла данных будет обработано функцией zlib.gunzipSync перед тем, как попасть в функцию init. Этот вариант удобен тем, что Вам не нужно ни внедрять в код на JS двоичные данные, ни писать самостоятельно стандартный алгоритм распаковки. При этом, конечно, ограничение по размеру касается сжатых данных; после распаковки их размер вполне может превысить 64 КиБ.



Тестирование


Мы будем тестировать Вашу программу на большом количестве слов. Некоторые из них будут реальными словами из предоставленного словаря, а некоторые — генерированными не-словами с различной степенью сходства с настоящими словами, от шума вроде dknwertwi до почти-слов вроде sonicative. Мы будем использовать в тестах только ASCII-строки, содержащие латинские буквы нижнего регистра, а также символы ' и -.



В отличие от предыдущих соревнований, Вы можете заранее увидеть наши тесты по адресу hola.org/challenges/word_classifier/testcase. При каждой загрузке Вы получите редирект на адрес, содержащий случайное число. Это число — начальное значение для детерминистического генератора псевдослучайных чисел. С каждым конкретным начальным значением Вы всегда получите один и тот же набор тестов, а, варьируя начальное значение, можете получить множество разных тестов. Генератор возвращает JSON-объект, ключами которого являются 100 различных слов, а значениями — true или false в зависимости от того, встречается ли слово в словаре (хотя последнее Вы легко можете проверить самостоятельно). С помощью генератора тестов Вы можете сами измерить процент правильных ответов, которые даёт Ваша программа, или сравнить разные версии решения между собой. Мы оставляем за собой право ограничивать частоту запросов к генератору тестов.



Наша тестовая система загрузит Ваш модуль один раз. Затем, если модуль экспортирует функцию init, тестовая система её вызовет. Если Вы предоставили дополнительный файл данных, он будет загружен в Buffer, распакован при необходимости, и передан функции init в качестве аргумента data. После этого тестовая система вызовет функцию test много раз для разных слов и подсчитает число правильных ответов. Значения, которые возвращает функция, будут приведены к булевым.



Мы будем генерировать тесты тем же генератором, который описан выше. Мы сгенерируем некоторое количество блоков по 100 слов. Решения всех участников получат одни и те же наборы тестов. Мы возьмём столько блоков по 100 слов, сколько потребуется для того, чтобы с уверенностью различить между результатами тройки призёров. В случае практически неразличимых результатов мы оставляем за собой право разделять призы между несколькими участниками. Вместе с результатами конкурса мы опубликуем начальные значения псевдослучайного генератора, которые мы использовали для тестирования, и исходный код генератора тестов.



Отправка решения


Для отправки решений пользуйтесь формой. Мы не принимаем решения по электронной почте.



Мы ожидаем, что многие решения будут содержать генерированный, минифицированый, сжатый код или данные, и поэтому просим отправить нам также и исходники решения. Если код или данные — результат генерации, приложите, пожалуйста, генератор. Если код минифицирован или сжат, включите оригинал, а также программу для сжатия, если это не публичный модуль. Если код скомпилирован из другого языка вроде CoffeeScript, включите оригинал на этом языке. Мы также просим Вас по возможности включить файл README с кратким описанием Вашего подхода к решению (на английском языке). Не включайте, пожалуйста, словарь из условия задачи — он у нас уже есть. Всё это упакуйте, пожалуйста, в tar.gz или zip, и отправьте нам вместе с решением. Размер этого архива не учитывается при проверке ограничения на размер решения в 64 КиБ. Мы опубликуем содержимое Вашего архива, но не будем его тестировать. Оно также поможет нам определить, кого наградить специальными призами за оригинальность.



Если у Вас не получается отправить решение, напишите, пожалуйста, комментарий или письмо.



Желаем удачи всем участникам!



Original source: habrahabr.ru.

https://habrahabr.ru/post/282624/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<соревнование - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda