Imagine Cup 2014. Как это было
Дорогой хабрахабр, привет! Совсем недавно закончился Российский финал Imagine Cup 2014, хотелось бы поделиться с вами впечатлениями по данному конкурсу, а также рассказать о нашем проекте. Поскольку Хабр — техническое сообщество, я принял решение разделить статью на две части: короткая история нашей команды и технический рассказ о нашем проекте и самой идеи.Коротко о команде Geek.Three Наша команда состоит из 3-х Сибирских аспирантов, команда образовалась еще на 3-ем курсе университета и за это время мы каждый год участвовали в конкурсе программных проектов ImCup, а также во множестве других конкурсов. За это время мы занимали и призовые места на некоторых конкурсах, область применения наших проектов примерно следующая: Программный проект для аудита информационной безопасности предприятия в рамках ФЗ 152 «О защите персональных данных»; SaveFood — считывание штрихкода товара в супермаркете с помощью телефона и знакомство с составом продукта простыми словами — «Насколько вредны данные составляющие продукта?»; NotAlone — проект для одиноких людей, для поиска друзей по интересам; Katrina — кроссплатформенное приложение для мониторинга суицидальной активности подростков в социальных сетях и моментального оповещения об этом их родителей. Были и многие другие проекты и фриланс, но я постарался рассказать читателю лишь те проекты на которые было потрачено достаточно много времени.В феврале 2014 года мы заняли второе место на региональном финале ImCup в г. Томск, и не могли расчитывать на участие в Российском финале. Но незадолго до финала нам пришло сообщение от shwars с темой «Imagine Cup Russian Finals». Началась подготовка к финалу, поскольку после регионального финала ближайшее время мы не планировали участвовать в других конкурсах работа над проектом немного затухла, но после хорошей новости, нам пришлось прикладывать огромное количество сил, чтобы наверстать упущенное время. О проекте. Основная идея заключается в реализации кроссплатформенного приложения для мониторинга суицидальной активности подростков в социальных сетях и немедленного оповещения об этом их родителей. Родители, из-за большой занятости на работе, не всегда имеют возможность самостоятельно мониторить активность своих детей. Наше приложение позволяет постоянно отслеживать публичную информацию (статусы, посты) и проверять наличие слов, связанных с суицидальной активностью.Затем такие посты отправляются родителям в качестве Push-уведомлений, и родители уже решают, что делать дальше. В планах реализации добавить функционал, который в случае опасности предлагал бы ближайшие психологические центры в которые можно обратиться за квалифицированной помощью в подобных ситуациях.Для реализации идеи были задействованы следующие платформы:
Windows Phone Windows 8 Windows Azure Sentimental Analysis Под Windows Phone мы программируем с выхода самого первого публичного SDK и уже имеем достаточный опыт работы с данной платформой. С платформой Windows Azure имелся также большой опыт работы, еще с того момента, когда использовать ее в России было практически невозможно. Windows Azure используется в качестве бекэнда для нашего приложения, и первоначально была отведена задача консолидации полученных постов из социальной сети, а также хранение тезауруса ключевых слов, проверка постов, аутентификации и отправки Push-уведомлений. С анализом тональности — сложней, никто из нас ранее не использовал подобные алгоритмы, а потому, в дальнейшем предстоит большая работа по его изучению.На первом этапе реализации мы решили сосредоточиться на социальной сети Вконтакте, поскольку огромное количество подростков пользуются именно этой социальной сетью, но также подготовили функционал для подключения других API, таких как Twitter, Facebook, Tumblr и Одноклассники, для того чтобы в дальнейшем подключение дополнительного функционала к проекту происходило не так болезненно.Изначально в проекте использовался свой тезаурус для проверки по ключевым словам полученных постов из социальной сети, которая сообщала пользователю о том, что было использовано негативное слово. Впоследствии, была использована плоская классификация и в случае совпадения, по ключевым словам, установившему приложение отправлялось Push-сообщение с классификацией поста: позитивный, негативный, нейтральный.В дальнейшем было решено отправлять Push-уведомление только в случае если окрас сообщения приобретает «негативный», дабы не бомбить спамом, т.к. подростки зачастую очень много информации размещают на своих страницах в соц. сетях. Ознакомиться со всеми сообщениями, к примеру, за день, можно открыв приложение и просмотрев статус иконки социальной сети.После того, как нам сообщили об участии в Российском финале пришлось в срочном порядке дорабатывать функционал. shwars посоветовал создать тестовый аккаунт в социальной сети для того, чтобы наглядно продемонстрировать работу приложения, тогда же было решено переложить груз ответственности определения окраса текста на алгоритмы анализа тональности (отличная статья на эту тему — здесь). Поскольку времени на реализацию и тестирование подобных алгоритмов у нас не оставалось, было решено использовать готовое решение, в этом качестве была задействована AlchemyAPI, во время тестирования именно она выдавала лучшие результаты. Единственная проблема заключалась на тот момент в том, что данный API не работал с русским языком, и для демонстрации нам пришлось использовать посты написанные на английском языке.Что дальше Несмотря на тот факт, что в Российском финале нам не удалось занять призовое место, мы с ребятами готовы продолжать работать над данным проектом, в ближайшее время мы планируем открыть в публичный доступ наш репозиторий на Github и надеемся что сможем привлечь сообщество к совместной разработки этого проекта. После конкурса к нам поступило предложение реализовать проект под Windows-desktop, а потому в ближайшее время мы будем работать в этом направлении.Заключение и благодарности В заключении хотелось бы поблагодарить компанию Microsoft за проведение подобного конкурса и возможность поучаствовать, а также shwars за поддержку и советы. В действительности, мы считаем, что ImCup — отличная возможность не только проявить себя и продемонстрировать свой проект, но также и отличная возможность пообщаться со студентами и аспирантами по всей России, общаясь на подобных конкурсах с участниками, понимаешь, что все не так уж и плохо, как кажется на первый взгляд! Отдельное спасибо моим коллегам по работе и в частности kozt за понимание и поддержку!