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


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

электронная почта - Самое интересное в блогах

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

Нейронные сети, типографика и вёрстка: Дайджест интересных материалов о создании писем и работе с email на Хабрахабре

Вторник, 31 Мая 2016 г. 09:23 (ссылка)






Сегодня мы решили подготовить подборку самых читаемых материалов по темам, связанным с почтовыми сервисами, дизайном почтовых рассылок и советами по написанию самих писем. В подборку вошли как публикации из блога «Печкина», так и статьи других авторов Хабрахабра. Приятного чтения! Читать дальше →

https://habrahabr.ru/post/302244/

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

Варианты альтернативы электронной почте

Понедельник, 30 Мая 2016 г. 13:08 (ссылка)


Отчет компаний International Data Corporation и McKinsey Global Institute показывает, что работники тратят 28% рабочего времени на чтение и ответ электронных сообщений, что снижает производительность на 25%. Электронная почта стала основным средством связи для каждой организации. Заменить эмейл достаточно трудно, но, тем ни менее, возможно.







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



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

https://habrahabr.ru/post/302080/

Комментарии (0)КомментироватьВ цитатник или сообщество
Сергей_Удачин

Проблемы электронной почты: полезные советы

Понедельник, 30 Мая 2016 г. 12:45 (ссылка)

Это цитата сообщения меня_зовут_Любаша_К Оригинальное сообщение

Хочешь получать Почту с Лиру - поменяй свой емайл

Счетчик посещений Counter.CO.KZ - бесплатный счетчик на любой вкус!


Здравствуйте...

Этот урок будет полезен многим, ввиду последних событий на Лиру. А именно - постоянное подтверждение своего емайла. Я писала, что последние три дня провожу эксперимент, так как не выставляю информацию, заранее не проверив её на себе. И сейчас могу с точностью сказать, что за время этого эксперимента я НИ РАЗУ не подтвердила свой емайл.


урок провела
Любаша К

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

Вход и знакомство с интерфейсом Джимейл

Воскресенье, 15 Мая 2016 г. 22:11 (ссылка)
ktonanovenkogo.ru/web-obzor...danie.html

Gmail почта — как настроить почтовый ящик в Гмайл — регистрация, вход, безопасность и удобство использования Джимейл | KtoNaNovenkogo.ru - создание, продвижение и заработок на сайте

  1. Регистрация и создание почтового ящика в Gmail
  2. Вход и знакомство с интерфейсом
  3. Плюсы и минусы Гмаил, настройки безопасности
  4. Ярлыки (папки) и их настройка в Гугл почте
  5. Фильтры в Джимайл и подробный пример их использования
  6. Импорт контактов и писем с других почтовых ящиков
  7. Полезные настройки и лаборатория Gmail


Джимейл почта

Бесплатный сервис Gmail позволит вам полноценно работать с почтой из любого уголка мира с любого устройства и при этом Гмаил обладает всем необходимым для этого
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Таньчик_Александровна

5 способов, как правильно убрать «спам» из электронной почты | Компьютер для начинающих | Компьютер для начинающих

Понедельник, 25 Апреля 2016 г. 23:49 (ссылка)
kurs-pc-dvd.ru/blog/pochtov...ochty.html

«Спам» в электронной почте – это проблема каждого человека, решившего стать пользователем Интернета. «Спам», а иначе говоря – никому не нужная почта постоянно
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Перевод] Анализ email-сообщений за 18 лет: Неудачный эксперимент по путешествию во времени

Пятница, 22 Апреля 2016 г. 13:25 (ссылка)





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



Многие люди пользуются электронной почтой уже на протяжение десятилетий — а значит, возникает вопрос о том, что анализ данных писем за долгое время может рассказать об эволюции конкретной личности. Журналист и создатель сервиса для разработки веб- и мобильных приложений Postlight Пол Форд в своем блоге на Medium опубликовал результаты эксперимента, в ходе которого он пытался создать динамическую систему поиска писем в своем почтовом ящике, в котором за 18 лет скопилось более 450 тыс. email-сообщений. Мы представляем вашему вниманию адаптированный перевод этой заметки.



Идея: путешествие во времени



Идея исследователя заключалась в следующем: если бы он смог быстро просматривать все свои старые сообщения, то это бы позволило проследить, как со временем менялись его собственные взгляды и мысли.



Это должно было позволить мне узнать о себе нечто важное, увидеть свой рост, как личности – например, сравнивая себя 20-летнего и себя 40-летнего.


Однако результаты эксперименты расстроили Форда.



Электронная почта и крупные корпорации



Во-первых, ему нужно было урегулировать некоторые технические вопросы. Форд пользуется аккаунтом Gmail, но система поиска в почтовом сервисе Google очень специфична. С её помощью можно легко найти любое из недавно полученных электронных писем, словно иголку в стоге сена. Но исследователь собирался со всего маху прыгнуть в этот стог, и для этого ему нужна была быстрая и эффективная поисковая система, которая могла бы просканировать десятки тысяч писем в одно мгновение. А интерфейс поиска Gmail в таких случаях выглядит вот так:







Учитывая, что также Форд использует компьютер Macintosh, он бы мог скачать всю свою переписку с помощью Apple Mail и воспользоваться встроенным поиском Apple Spotlight. Но дело вот в чём.



В 1996 году пользователь мог нажать клавишу

https://habrahabr.ru/post/282223/

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

Интерфейсы: Как не нужно делать опцию отписки от email-рассылки

Среда, 13 Апреля 2016 г. 12:50 (ссылка)





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



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



В чем проблема



Email-маркетелогам и компаниям должно быть хорошо известно о существовании в почтовых клиентах кнопки «Пометить как спам» и о негативных последствиях для репутации отправителя в случае, если получатели ее нажимают. В том же Gmail существует функция, позволяющая пользователям отписаться от рассылок в один клик. И хотя отправителям писем она может принести не меньше вреда, чем кнопка для фильтрации спама.



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



Каким должен быть процесс отказа от рассылки



Кристофер Рэтклифф (Christopher Ratcliff ) более подробно раскрывает эту тему в своей статье. Хорошим примером является процесс отказа от рассылки на сайте доставки пиццы Pizza Express. Возможно, это не идеальный способ, но он позволяет клиенту отписаться от рассылки без лишних проблем.



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



image



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



image



По сути, весь процесс состоит из двух кликов, клиенту не нужно вводить дополнительные данные или совершать утомительные действия.



Процесс отписки от сайта Junction ещё проще. Достаточно сделать один клик:



image



Если вы не хотите, чтобы люди отправляли ваши письма в спам или отписывались от вашей рассылки через Gmail, старайтесь сделать собственный сервис по отмене подписки как можно более простым. Компаниям, о которых далее пойдет речь, тоже стоило бы об этом знать.



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



Подтверждение электронного адреса



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



image



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



image



Ненужные дополнительные действия



На сайте сети ресторанов Chiquitos процесс отказа от получения рассылки изначально должен был состоять из двух кликов, как на сайте Pizza Express:



image



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



image



Необходимость нажимать на кнопки



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



image



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



image



Неоднозначные формулировки



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



image



Ваша заявка на удаление адреса graham.charlton@econsultancy.com из списка рассылки принята.



Неудачно подобранные сочетания цветов



Текст на форме отказа от рассылки, набранный текстом белого цвета на черном фоне, как, например, на сайте Blinkbox, очень сложно прочесть:



image



Необходимость отправлять письменный запрос на удаление



Складывается впечатление, что мы живем в средневековье. Чтобы отписаться от рассылки Pizza Hut, пользователям нужно отправить электронное письмо, которое обрабатывается в течение двух недель. Более того, отправив такое письмо, вы не получите уведомления о его получении. А адрес получателя выглядит слишком подозрительно, что дает пользователям лишние поводы для беспокойства.



image



Слишком много действий



Сервис Bookatable хоть и предоставляет пользователям возможность отписаться от всех писем, но это, вероятно, самая неприметная опция на странице, которая расположена в самом низу. А это значит, что вы вынуждены отказываться от получения четырех разных видов писем.



image



Если пользователь нашел кнопку для отказа от получения рассылки и нажал на нее, то он достаточно ясно дает понять, что хочет отписаться. Предоставить пользователям возможность оставлять отзывы — отличная идея, но ни в коем случае не стоит делать этот процесс обязательным или времязатратным.



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



Если подписчика совсем не хочется терять



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



Пример — подход европейского ритейлера одежды и обуви Zalando. Эта компания не только показывает ссылку для отписки от своей рассылки в самом начале каждого письма (она не выделяется, но и искать ее полчаса не нужно), но и использует другой интересный ход.

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



Вот так выглядит весь процесс по шагам:








  1. Первое, что делает Zalando, когда вы нажимаете кнопку «Отписаться», – предлагает еженедельную рассылку вместо ежедневной. Это весьма убедительный аргумент – количество получаемых пользователем писем в таком случае снижается на 86%.

  2. Кроме того, пользователь может заблокировать рассылку в определенные дни — возможно, он слишком занят в понедельник, а в выходные дни ему не до электронных писем.

  3. Еще одна интересная опция — для тех пользователей, которые не уверены, что хотят навсегда отписаться от рассылки, существует опция приостановления рассылки на определенный период (от 1 до 30 дней).

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



Другие материалы о почтовых рассылках в блоге Печкина:







Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/281503/

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

[Перевод] Невозможно проверить адрес e-mail на допустимость с помощью регулярных выражений

Воскресенье, 04 Апреля 2016 г. 00:26 (ссылка)





Что, если бы я попросил вас написать регулярку для проверки e-mail адреса? Вы бы, наверное, подумали минутку, и потом бы нагуглили запрос. И получили бы нечто вроде:



^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$




Регулярок на эту тему существуют тысячи. Но почему? Наверняка же кто-нибудь, да прочёл стандарт RFC822 и выдал надёжную регулярку?



А вот вам ещё одна регулярочка…
(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]

)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:

\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(

?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[

\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0

31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\

](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+

(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:

(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z

|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)

?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\

r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[

\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)

?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]

)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[

\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*

)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]

)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)

*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+

|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r

\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:

\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t

]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031

]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](

?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?

:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?

:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?

:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?

[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\]

\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|

\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>

@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"

(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]

)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\

".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?

:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[

\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-

\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(

?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;

:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([

^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"

.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\

]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\

[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\

r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]

\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]

|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0

00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\

.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,

;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?

:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*

(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".

\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[

^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]

]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(

?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\

".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(

?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[

\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t

])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t

])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?

:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|

\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:

[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\

]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)

?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["

()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)

?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>

@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[

\t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,

;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]

)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\

".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?

(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".

\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:

\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[

"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])

*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])

+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\

.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z

|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(

?:\r\n)?[ \t])*))*)?;\s*)







И даже этот монстр не в силах проверить емейл-адрес. Почему? Оказывается, в скромном адресе может скрываться очень многое. Некоторые части стандарта RFC822 достаточно полезны, а некоторые – просто безумны. Но в любом случае это интересно – давайте разбираться.



Плюс-адреса



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



Допустим, адрес Боба — bob@smith.com. Плюс-адрес можно сделать, добавив + и метку после него: bob+spam@smith.com. Если Боб зарегистрируется на сайте со вторым адресом, он всё равно будет получать письма на bob@smith.com – но теперь он может создать фильтры, или просто отключить один из плюс-адресов.



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



Когда ломается регулярка



#!$%&'*+-/=?^_`{}|~@example.org





Немногие знают, что вышеприведённый адрес абсолютно допустим – все символы можно использовать в локальной части (до символа @). Более того, локальная часть может содержать даже символ @, если заключить её в двойные кавычки. Например:



"dream.within@a.dream"@inception.movie

bob."@".smith@mywebsite.com





А теперь – карнавал безумия



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



В принципе, предыдущие варианты адресов ещё можно было засунуть в регулярки, пусть бы они и выглядели монструозно. А теперь поговорим о комментариях. Комментарии – это произвольный текст, заключённые в скобки, который может появляться в одном из 4 мест адреса:



(here)a@b.com

a(here)@b.com

a@(here)b.com

a@b.com(here)





Все варианты семантически идентичны. Они работают, как и плюс-адреса – просто добавляют некий визуальный шум. Все письма должны будут прийти на a@b.com



Если что-то достойно старания, то ради него можно и перестараться

Айн Рэнд, она же Алиса Зиновьевна Розенбаум




Добавим ещё немного безумия



Комментарии могут быть вложенными:



(here(is(some)crazy)comments)a@b.com









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



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



elliotchance+blog(silvrback)@gmail.com





P.S. Надеюсь, что спам-боты не догадаются, что это емейл-адрес.

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/280798/

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

Какими должны быть электронные рассылки, и почему пользователи от них отписываются

Среда, 30 Марта 2016 г. 10:49 (ссылка)





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



Сегодня мы затронем другую интересную тему — почему пользователи отписываются от email-рассылок, и какими они должны быть, чтобы приносить пользу.



Статистика: какие рассылки не нравятся людям



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



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



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



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



Что им нравится читать



Результаты исследование Unroll.me говорят о том, что пользователи охотно читают рассылки, которые так или иначе связаны с общением. К примеру, большое количество email-сообщений посылают различные соцсети, но люди редко от них отписываются.



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







Итак, вот список ресурсов, где большое количество пользователей подписаны на информационную рассылку:




  1. Facebook: 70% пользователей подписаны на информационную рассылку.

  2. Google+: 66.9%.

  3. Twitter: 64.4%.

  4. LinkedIn: 62.1%.

  5. YouTube: 48.4%.

  6. Amazon: 43.1%.

  7. Pinterest: 39%.

  8. Apple: 35.9%.

  9. Groupon: 30.8%.

  10. Netflix: 29.6%.



Отсекая лишнее: Каким должно быть email-сообщение



Помимо собственно статистики, понять, как именно стоит создавать почтовые сообщения, можно с помощью практического примера. Своим опытом оптимизации текста email-рассылки поделился маркетолог компании Flow Кэмерон Конауэй. Сотрудникам сервиса нужно было создать рассылку, содержащую ссылку на последний материал из блога для его подписчиков.



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








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

  2. Фраза «от компании Flow» в конце предложения «Материал о том, как создавать отличные команды, от компании Flow» казалась громоздкой и неуместной. Кроме того, она не соответствовала принципу простоты, которого команда старалась придерживаться..

  3. Сначала работники хотели добавить вводную конструкцию прежде, чем переходить непосредственно к статье, но в итоге решили, что она будет лишь перегружать текст письма.

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

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

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

  7. Подпись в блоге заменили на более общую «Редакция TMT».







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




  1. Ничем не примечательное приветствие стало казаться излишним, поэтому его удалили.

  2. То же самое можно было сказать и о строке «P.S.», особенно учитывая, что читатели переходили по указанной в ней ссылке не слишком часто.







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



Другие материалы о создании почтовых рассылок в блоге «Печкина»:







Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/280510/

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

Как навести порядок в почтовом ящике с помощью нейронной сети. Часть 2

Понедельник, 28 Марта 2016 г. 10:31 (ссылка)

image



В нашем блоге мы много пишем о создании email-рассылок и работе с электронной почтой. В современном мире люди получают множество писем, и в полный рост встает проблема с их классификацией и упорядочиванием почтового ящика. Инженер из США Андрей Куренков в своем блоге рассказал о том, как решил эту задачу с помощью нейронной сети. Мы решили осветить ход этого проекта — несколько дней назад опубликовали первую часть рассказа, а сегодня представляем вашему вниманию его продолжение.



Глубинное обучение здесь не подходит



Когда Куренков впервые начал изучать код Keras, то полагал (ошибочно), что он будет использовать последовательность, отражающую фактический порядок слов в текстах. Выяснилось, что это не так, но это не значит, что такой вариант невозможен. Что в сфере машинного обучения действительно стоит отметить – так это рекуррентные нейронные сети, которые отлично подходят для работы с большими последовательностями данных, пишет автор. Этот подход подразумевает, что при работе со словами выполняется «подготовительный» шаг, на котором каждое слово конвертируется в числовой вектор так, что похожие слова переходят в похожие векторы.



Благодаря этому вместо преобразования писем в матрицы бинарных признаков можно просто заменить слова на числа, используя частоты их появления в письмах, а сами числа – на векторы, отражающие «смысл» каждого слова. Тогда появляется возможность использования полученной последовательности для обучения рекуррентной нейронной сети типа Long Short Term Memory или Gated Recurrent. И этот подход уже реализован: можно просто запустить пример и посмотреть, что будет:



Epoch 1/15
7264/7264 [===========================] - 1330s - loss: 2.3454 - acc: 0.2411 - val_loss: 2.0348 - val_acc: 0.3594
Epoch 2/15
7264/7264 [===========================] - 1333s - loss: 1.9242 - acc: 0.4062 - val_loss: 1.5605 - val_acc: 0.5502
Epoch 3/15
7264/7264 [===========================] - 1337s - loss: 1.3903 - acc: 0.6039 - val_loss: 1.1995 - val_acc: 0.6568
...
Epoch 14/15
7264/7264 [===========================] - 1350s - loss: 0.3547 - acc: 0.9031 - val_loss: 0.8497 - val_acc: 0.7980
Epoch 15/15
7264/7264 [===========================] - 1352s - loss: 0.3190 - acc: 0.9126 - val_loss: 0.8617 - val_acc: 0.7869
Test score: 0.861739277323


Точность: 0.786864931846



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



Но дополнительный «подготовительный» шаг всё ещё казался инженеру полезным, поскольку создаёт более широкое представление слова. Поэтому он посчитал стоящим попробовать использовать его, подключив свертку для поиска важных локальных признаков. И опять нашелся пример Keras, который выполняет подготовительный шаг и при этом передаёт полученные векторы слоям свертки и субдискретизации вместо слоёв LSTM. Но результаты вновь не впечатляют:



Epoch 1/3
5849/5849 [===========================] - 127s - loss: 1.3299 - acc: 0.5403 - val_loss: 0.8268 - val_acc: 0.7492
Epoch 2/3
5849/5849 [===========================] - 127s - loss: 0.4977 - acc: 0.8470 - val_loss: 0.6076 - val_acc: 0.8415
Epoch 3/3
5849/5849 [===========================] - 127s - loss: 0.1520 - acc: 0.9571 - val_loss: 0.6473 - val_acc: 0.8554
Test score: 0.556200767488


Точность: 0.858725761773



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



Всё из-за признаков, дурень



Итак, проведенные тесты не дали желанной точности в 90%… Как видно, текущий подход определения признаков по 2500 наиболее часто встречающихся слов не годится, так как он включает такие общие слова как «я» или «что» наряду с полезными специфичными для категорий словами типа «домашка». Но рискованно просто убирать популярные слова или забраковать какие-то наборы слов – никогда не знаешь, что окажется полезным для определения признаков, поскольку, возможно, иногда я использую то или иное «простое» слово в одной из категорий чаще, чем в других (например, в разделе «Личное»).



Здесь следует перейти от гадания к использованию метода отбора признаков для выбора слов, которые действительно хороши, и фильтровать слова, не работающие. Для этого легче всего использовать scikit и его класс SelectKBest, который настолько быстр, что отбор занимает минимум времени по сравнению с работой нейронной сети. Итак, поможет ли это?



Зависимость тестовой точности от количества обрабатываемых слов:



image



Работает – 90%!



Отлично! Несмотря на небольшие различия в итоговой результативности, начинать явно лучше с большего набора слов. Однако этот набор можно довольно сильно уменьшить с помощью отбора признаков и не потерять производительности. По всей видимости, у этой нейронной сети нет проблем с переобучением. Рассмотрение «лучших и худших» слов по версии программы подтверждает, что она достаточно хорошо определяет их:







«Лучшие» и «худшие» слова: отбор признаков с использованием критерия хи-квадрат (основано на коде из примера scikit)



Многие «хорошие» слова, как и следовало ожидать, – имена или специфические термины (например, «controller»), хотя Куренков говорит, что некоторые слова типа «remember» или «total» сам бы не выбрал. «Худшие» слова, с другой стороны, довольно предсказуемы, так как они или слишком общие, или слишком редкие.



Можно подвести итог: чем больше слов, тем лучше, и отбор признаков может помочь сделать работу быстрее. Он помогает, но, возможно, есть способ дополнительно повысить результаты тестов. Чтобы узнать это, инженер решил взглянуть на то, какие ошибки делает нейронная сеть, с помощью матрицы ошибок, также взятой с scikit learn:



image



Матрица ошибок для результатов работы нейронной сети



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



Поэтому, давайте проведем последний эксперимент, в котором все неподходящие категории отсутствуют, и где будет использоваться наибольшее количество признаков – 10 000 слов с отбором 4 000 лучших:



Epoch 1/5
5850/5850 [==============================] - 2s - loss: 0.8013 - acc: 0.7879 - val_loss: 0.2976 - val_acc: 0.9369
Epoch 2/5
5850/5850 [==============================] - 1s - loss: 0.1953 - acc: 0.9557 - val_loss: 0.2322 - val_acc: 0.9508
Epoch 3/5
5850/5850 [==============================] - 1s - loss: 0.0988 - acc: 0.9795 - val_loss: 0.2418 - val_acc: 0.9338
Epoch 4/5
5850/5850 [==============================] - 1s - loss: 0.0609 - acc: 0.9865 - val_loss: 0.2275 - val_acc: 0.9462
Epoch 5/5
5850/5850 [==============================] - 1s - loss: 0.0406 - acc: 0.9925 - val_loss: 0.2326 - val_acc: 0.9462
722/722 [==============================] - 0s
Test score: 0.243211859068




Точность: 0.940443213296



image



Матрица ошибок для новых результатов нейронной сети



Вот так-то! Нейронная сеть может угадывать категории с 94% точности. Хотя эффект обусловлен прежде всего большим набором признаков, хороший классификатор (классификатор scikit learn Passive Agressive) и сам по себе даёт 91% точности на тех же входных данных. На самом деле, существуют идеи о том, что, в данном случае эффективным может оказаться и метод опорных векторов (LinearSVC), – используя его, можно также получить приблизительно 94% точности.



Итак, вывод довольно простой – «модные» методы машинного обучения не особенно эффективны на небольших наборах данных, а старые подходы типа N-грамм + TF-IFD + SVM могут сработать так же хорошо, как и современные нейронные сети. Говоря короче, одно только использование метода Bag of Words сработает достаточно хорошо при условии, что писем немного и они отсортированы так же чётко, как и в примере выше.



Возможно, немногие используют категории в gmail, но если создать хороший классификатор действительно настолько просто, то было бы неплохо, чтобы в gmail была машинно-обучаемая система, определяющая категорию каждого письма для организации почты в один клик. На этом этапе Куренков был очень доволен тем, что улучшил собственные результаты на 20% и познакомился с Keras в процессе работы.



Эпилог: Дополнительные эксперименты



Работая над своим экспериментом, инженер сделал еще кое-что. Он столкнулся с проблемой: все вычисления выполнялись долго, по большей части потому, что автор материала не использовал теперь уже обыденный трюк с запуском машинного обучения с использованием GPU. Следуя превосходному руководству, он сделал это, и получил отличные результаты:







Время, затраченное на достижение описанных выше 90% с графическим процессором и без него; отличное ускорение!



Следует отметить, что нейронную сеть Keras, демонстрирующую 94% точности, было намного быстрее обучить (и работать с ней), нежели сеть, обучающуюся на основе метода опорных векторов; первая оказалась наилучшим решением из всех, что я опробовал.



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







Прогресс обучения нейронной сети на слегка измененном примере (с большим количеством обрабатываемых слов)



Здесь наглядно показано, как точность обучения стремится к единице и выравнивается.



Неплохо, но инженера больше волновало увеличение точности. Как и ранее, первым делом он задался вопросом: «Можно ли быстро поменять формат представления признаков, чтобы помочь нейронной сети?» Модуль Keras, превращающий текст в матрицы, имеет несколько вариантов помимо создания двоичных матриц: матрицы со счётчиками слов, частотами или значениями TF-IDF.



Изменять количество слов, хранимых в матрицах в виде признаков, также оказалось несложно, так что Куренков написал несколько циклов, оценивающих, как влияет тип признаков и количество слов на точность тестов. Получился интересный график:







Точность теста в зависимости от типа признаков и того, сколько слов взято в качестве признаков (базовая точность учитывает k ближайших «соседей»)



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



Хотя это довольно предсказуемо – скорее всего, более интересные слова типа «code» или «grade» полезны для категоризации писем, и единичное их появление в письме так же важно, как и большее число упоминаний. Без сомнения, наличие информативных признаков может быть полезно, но может и понизить результаты теста из-за увеличения вероятности переобучения.



В общем, мы видим, что бинарные признаки показали себя лучше других и что увеличение количества слов отлично помогает достижению 87%-88% точности.



Инзенер также просмотрел базовые алгоритмы, чтобы убедиться, что что-то вроде метода k ближайших соседей (scikit) не является (по эффективности) эквивалентом нейронных сетей – это оказалось правдой. Линейная регрессия сработала даже хуже, так что выбор нейронных сетей вполне обоснован.



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



image



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



Увеличение количества слов помогло, но экспериментатор всё ещё не мог достичь желанного порога в 90%. Поэтому следующей мыслью было придерживаться 2 500 слов и попробовать изменить размер нейронной сети. Кроме того, как оказалось, модель из примера Keras имеет 50%-ную dropout-регуляризацию на скрытом слое: инженеру стало интересно посмотреть, действительно ли это увеличивает эффективность работы сети. Он запустил ещё один набор циклов и получил ещё один прекрасный график:



image



График изменения точности для различных вариантов dropout-регуляризации и размеров скрытого слоя



Оказывается, размер скрытого слоя необязательно должен быть достаточно велик, чтобы все работало как надо! 64 или 124 нейрона в скрытом слое могут выполнить задачу так же хорошо, как и стандартные 512. Эти результаты, кстати, усреднены по пяти запускам, так что небольшой разброс в выходных данных не связан с возможностями небольших скрытых слоев.



Из этого следует, что большое количество слов нужно лишь для определения полезных признаков, но самих полезных признаков не так уж и много – иначе для лучшего результата требовалось бы больше нейронов. Это хорошо, поскольку мы можем сэкономить немало времени, используя меньшие скрытые слои:



image



И вновь время вычислений растет линейно при увеличении нейронов скрытого слоя



Но это не совсем точно. Проведя больше запусков с большим количеством признаков, инженер обнаружил, что стандартный размер скрытого слоя (512 нейронов) работает значительно лучше, чем более маленькие скрытые слои:







Сравнение эффективности работы слоев с 512 и 32 нейронами соответственно



Остается лишь констатировать то, что и так было известно: чем больше слов, тем лучше.



Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/280296/

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

Как навести порядок в почтовом ящике с помощью нейронной сети. Часть 1

Суббота, 26 Марта 2016 г. 11:47 (ссылка)

image



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



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



Код проекта доступен здесь.



Начало



Куренков пишет, что один из его любимых мини-проектов, EmailFiler, появился благодаря заданию на курсе «Введение в машинное обучение» в Технологическом Институте Джорджии. Задание состояло в том, чтобы взять какой-либо набор данных, применить к нему ряд контролируемых обучающихся алгоритмов и проанализировать результаты. Суть в том, что по желанию можно было использовать собственные данные. Разработчик так и поступил – экспортировал данные своего gmail для исследования возможностей машинного обучения в решении задачи сортировки электронной почты.



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



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



image



Категории (папки) и количество писем в каждой из них на момент старта проекта



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



Любой, кто изучал обработку естественных языков, сразу предложит один простой подход – использование модели Bag of Words (Множество слов). Это один из простейших алгоритмов классификации текстов – найти N общих слов для всех текстов и составить таблицу бинарных признаков для каждого слова (признак равен 1, если заданный текст содержит слово, и 0 – если не содержит).



Куренков проделал это для группы слов, найденных во всех его письмах, а также для топ-20 отправителей писем (так как в некоторых случаях отправитель строго коррелирует с категорией письма; например, если отправитель –научный руководитель в университете, то категорией будет «Исследования») и для топ-5 доменов, с которых ему присылали письма (поскольку домены типа gatech.edu строго указывают на такие категории как, например, «Обучение»). Так, где-то после часа, потраченного на написание парсера электронной почты, он смог получать данные о своём ящике в формате csv (значения, разделённые запятыми).



Насколько хорошо все работало? Неплохо, но хотелось большего. Куренков говорит, что тогда увлекался фреймворком для машинного обучения Orange ML на Python, и, как и было положено по заданию, протестировал несколько алгоритмов на своем наборе данных. Выделялись два алгоритма – лучше всего показали себя деревья принятия решений, а хуже всего – нейронные сети:



image



Так с небольшим набором данных справились деревья принятия решений



image



А так – нейронные сети



Если внимательно взглянуть на эти графики из OpenOffice Calc, то можно увидеть, что лучший результат деревьев принятия решений на тесте – где-то 72%, а нейронных сетей – жалкие 65%. Ужас! Это, конечно, лучше, чем разложить всё наугад, учитывая, что там 11 категорий, но до отличного результата далеко.



Почему же результаты оказались такими удручающими? Дело в том, что признаки, полученные для набора данных, оказались весьма примитивны – простой поиск 500 наиболее часто встречающихся в письмах слов даст нам не так уж много полезных индикаторов, но много общеупотребительных конструкций, которые встречаются в английском, например «that» или «is». Инженер понял это и предпринял следующее: полностью убрал из списка слова из трёх и менее букв и написал немного кода, чтобы выбрать наиболее часто встречающиеся слова для каждой категории отдельно; но он все еще не представлял, как улучшить результат.



Попытка номер два



Спустя пару лет Куренков решил еще раз попытаться решить задачу — хоть сам проект в университете уже был давно сдан, хотелось улучшить результаты.



В этот раз инженер решил в качестве одного из основных инструментов применить Keras, потому как он написан на Python и также неплохо ладит с пакетами NumPy, pandas и scikit-learn и поддерживается библиотекой Theano.



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



Итак, первое, что приходит в голову: испробовать этот пример на собственных данных – посмотреть, улучшит ли работу Keras. К счастью, сохранился старый код для парсинга почтового ящика, а у Keras есть удобный класс Tokenizer для получения признаков текста. Поэтому можно легко создать набор данных в таком же формате, как и в примере, и получить новую информацию о текущем количестве электронных писем:




Using Theano backend.
Label email count breakdown:
Personal:440
Group work:150
Financial:118
Academic:1088
Professional:388
Group work/SolarJackets:1535
Personal/Programming:229
Professional/Research:1066
Professional/TA:1801
Sent:513
Unread:146
Professional/EPFL:234
Important:142
Professional/RISS:173
Total emails: 8023


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



7221 train sequences
802 test sequences
Building model...
Train on 6498 samples, validate on 723 samples
Epoch 1/5
6498/6498 [==============================] - 2s - loss: 1.3182 - acc: 0.6320 - val_loss: 0.8166 - val_acc: 0.7718
Epoch 2/5
6498/6498 [==============================] - 2s - loss: 0.6201 - acc: 0.8316 - val_loss: 0.6598 - val_acc: 0.8285
Epoch 3/5
6498/6498 [==============================] - 2s - loss: 0.4102 - acc: 0.8883 - val_loss: 0.6214 - val_acc: 0.8216
Epoch 4/5
6498/6498 [==============================] - 2s - loss: 0.2960 - acc: 0.9214 - val_loss: 0.6178 - val_acc: 0.8202
Epoch 5/5
6498/6498 [==============================] - 2s - loss: 0.2294 - acc: 0.9372 - val_loss: 0.6031 - val_acc: 0.8326
802/802 [==============================] - 0s
Test score: 0.585222780162


Точность: 0.847880299252



85% точности! Это намного выше жалких 65% старой нейронной сети. Отлично.



Но…почему?



Старый код делал, в общем-то, следующее – определял наиболее часто встречающиеся слова, создавал бинарную матрицу признаков и обучал нейронную сеть с одним скрытым слоем. Может быть, всё из-за нового нейрона «relu», dropout-регуляризации и использования методов оптимизации, отличных от стохастического градиентного спуска? Поскольку признаки, найденные по старым данным, бинарные и представлены в виде матрицы, их очень легко превратить в набор данных для обучения этой нейронной сети. Итак, вот результаты:



Epoch 1/5
6546/6546 [==============================] - 1s - loss: 1.8417 - acc: 0.4551 - val_loss: 1.4071 - val_acc: 0.5659
Epoch 2/5
6546/6546 [==============================] - 1s - loss: 1.2317 - acc: 0.6150 - val_loss: 1.1837 - val_acc: 0.6291
Epoch 3/5
6546/6546 [==============================] - 1s - loss: 1.0417 - acc: 0.6661 - val_loss: 1.1216 - val_acc: 0.6360
Epoch 4/5
6546/6546 [==============================] - 1s - loss: 0.9372 - acc: 0.6968 - val_loss: 1.0689 - val_acc: 0.6635
Epoch 5/5
6546/6546 [==============================] - 2s - loss: 0.8547 - acc: 0.7215 - val_loss: 1.0564 - val_acc: 0.6690
808/808 [==============================] - 0s
Test score: 1.03195088158


Точность: 0.64603960396



Итак, старое решение по определению категорий электронных писем было неудачным. Возможно причиной стало сочетание сильных ограничений признаков (вручную определённые топовые отправители, домены и слова из каждой категории) и слишком маленького количества слов.



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



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



Теперь возникал новый вопрос – можно ли добиться еще более высокой точности?



Продолжение следует…



Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/280198/

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

Скончался американский программист Рэй Томлинсон, являющийся создателем электронной почты

Воскресенье, 07 Марта 2016 г. 00:35 (ссылка)
rbc.ru/technology_and_media...?from=main


На 75-м году жизни скончался программист из США Рэй Томлинсон (Ray Tomlinson), которому приписывают изобретение электронной почты, сообщает Би-би-си. Предположительно, причиной смерти стал сердечный приступ.


 


Томлинсон отправил первое письмо с одного компьютера на другой в 1971 году. Это произошло, когда он работал в компании Bolt, Beranek and Newman (BBN), которая занималась созданием ранней версии интернета, известной как Arpanet.


 


Именно Томлинсон также предложил использовать символ @ (at-sign) для обозначения принадлежности почтовых адресов определенным системам.
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Орли44

Электронная почта...(стихи Орли44)

Среда, 02 Марта 2016 г. 22:42 (ссылка)





Электронная почта...

Смотрим в электронный глобус...
Где-то взорвали автобус...
От сообщения давит грусть.
Оказать бы срочно помощь.

Глаза ищут среди известий-
Нет ли там друзей?
Молчит земное притяжение-
В сердце приступ волнения.

И бежит электронная почта--
Отправляются письма-срочно.
Маленькое вроде движение,
Срочное лишь отправление.

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

Раньше была другая почта.
Письма в цветных конвертах,
В письме тепло в приветах...
Теперь сухость ответа.

Почтальон приятный гость,
Нёс добрую весть.
С порога тебе улыбался,
Рукой письма касался.

Очень мир поменялся...
В информации чужие имена.
Многие в жизни разочарованы.
Доверие к доброте подорваны.

Молчит в ответ электронная почта,
Адресата в тот момент не нашла.
Доходит твоя помощь пока-
Человеку уже она не нужна.
01.03.2016










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

Следующие 30  »

<электронная почта - Самое интересное в блогах

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

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