Как Очистить Почтовый Ящик С Помощью Нейросети. Часть 1



Как очистить почтовый ящик с помощью нейросети.
</p><p>
 Часть 1

В нашем блоге мы много пишем о создании
информационные бюллетени по электронной почте и работа с электронной почтой.

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

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

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

Мы решили осветить ход реализации этого проекта и представить вам первую часть истории.

Доступен код проекта Здесь .



Начинать

Куренков пишет, что это один из его любимых мини-проектов.

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

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

Дело в том, что вы можете использовать свои собственные данные, если захотите.

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

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

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

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

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



Как очистить почтовый ящик с помощью нейросети.
</p><p>
 Часть 1

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

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

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

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

.

Куренков сделал это для группы слов, встречающихся во всех его письмах, а также для топ-20 отправителей писем (поскольку в некоторых случаях отправитель жестко коррелирован с категорией письма; например, если отправитель — научный сотрудник научного руководителя в вузе, то категория будет «Исследования») и для топ-5 доменов, с которых ему приходили письма (поскольку домены типа Гатек В .

edu строго указываются такие категории, как «Образование»).

Итак, примерно через час написания парсер электронной почты, он смог получить данные о своем почтовом ящике в формате csv (значения, разделенные запятыми).

Насколько хорошо это сработало? Неплохо, но хотелось большего.

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

Выделялись два алгоритма: лучше всего работали деревья решений, а хуже всего работали нейронные сети:

Как очистить почтовый ящик с помощью нейросети.
</p><p>
 Часть 1

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



Как очистить почтовый ящик с помощью нейросети.
</p><p>
 Часть 1

И так — нейронные сети Если внимательно посмотреть на эти графики из OpenOffice Calc, то можно увидеть, что лучший результат деревьев решений на тесте где-то в районе 72%, а нейронных сетей — жалкие 65%.

Ужастик! Это, конечно, лучше, чем разбирать всё наугад, учитывая, что категорий 11, но это далеко не отличный результат. Почему результаты оказались такими плачевными? Дело в том, что полученные для набора данных признаки оказались очень примитивными — простой поиск 500 наиболее часто встречающихся слов в буквах даст нам не много полезных показателей, а множество распространённых конструкций, которые встречаются, например, в английском языке.

«то» или «есть».

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

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

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

На этот раз инженер решил использовать Керас , потому что он написан на Python, а также хорошо работает с пакетами NumPy , панды И scikit-learn и поддерживается библиотекой Theano. Бывает также, что у Keras есть несколько примеров, с которых можно начать работу, в том числе задача классификация различных текстов.

И что интересно, в этом примере используются те же функции, которые использовал ранее инженер.

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

Итак, первое, что приходит на ум, — опробовать этот пример на собственных данных и посмотреть, улучшит ли Keras производительность.

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

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

 
 Using Theano backend.
 Label email count breakdown:
 
Теги: #Машинное обучение #нейронные сети #электронная почта #электронная почта #письма #Машинное обучение
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.