Вы на правильном пути с некоторыми из идей, которые вы уже рассмотрели.
Сначала вам нужно будет создать примерный набор данных, который будет "правдивым" или уже классифицирован должным образом, и который перечисляетнарушающий IP-адрес, URL-адрес, адрес электронной почты и т. д. Поэтому определите некоторые категории и некоторые соответствующие данные и просмотрите их.Это не весело, но необходимо.
На этом этапе вы можете решить, хотите ли вы просто перейти на байесовский метод и посмотреть, как он работает, или вы можете заняться проектированием объектов и попробовать другие методы.
Байесовская классификация - это черный ящик, в который вы вводите кучу (скажем, 1/2 или 2/3) ваших тестовых данных, а затем пробуете их там, чтобы посмотреть, как работает обученный классификатор.Если вы получаете что-то в диапазоне 90% плюс, вы по существу готовы, при условии, что это достаточно быстро.Единственная функция, которую вы должны вывести - это каждый «токен» в письме.Разделить на пробелы.Вы можете начать здесь:
http://nltk.googlecode.com/svn/trunk/doc/api/nltk.classify-module.html
Если вы решили заняться проектированием объектов, теперь вы переходите в исследовательскую фазу.Когда бы вы ни занимались машинным обучением или классификацией паттернов, вам нужно определить «особенности», которые вы можете извлечь из исходных данных.Как вы сказали, вы можете использовать регулярные выражения для получения адресов электронной почты, IP-адресов и URL-адресов.Это все отличные возможности.Какие еще функции вы можете найти?Возможно, некоторые из отметок времени (существуют ли временные отношения? Кто знает?).Могут быть полезны некоторые заголовки писем, такие как версия MIME, SenderID, ContentType, X-Spam-Level, кодировка и т. Д.
После того, как вы определились с некоторыми функциями, которые лично используете, чтобы помочь определить, что происходитзатем вы можете использовать тот же байесовский классификатор, который указан выше, чтобы научить компьютер принимать эти решения.
Имея множество новых функций, вы можете провести обучение на 50%, а затем сравнить результаты сдругие 50%, чтобы увидеть, как это выполняется.Если вы получите высокий уровень точности, отлично!Вы сделалиЕсли он все еще низкий, вам нужно определить другие функции, чтобы помочь классификатору правильно распознавать.Только вы сможете решить, как высоко, а как низко.