Легкий байесовский фильтр для больших наборов данных - PullRequest
0 голосов
/ 25 января 2012

Я хотел бы создать еще одно обнаружение спама для моей CMS.В настоящее время я вижу три варианта:

  1. использовать простой класс php и хранить токены в MySQL
  2. установить spamassassin и использовать php-разъем
  3. что-то большое, например, mahout

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

Есть ли что-нибудь приятное, маленькое и эффективное, которое можно запустить на сервере Linux и получить доступ с php?

1 Ответ

1 голос
/ 24 февраля 2012

самый простой подход - это токены в MySQL, но я не знаю, насколько хорошо это работает.

Если вы хотите классифицировать текст по категориям span / not-spam, я думаю, что Mahout - хороший выбор.Он построен для BigData и поэтому требует, если вы хотите отобразить / уменьшить, установку Hadoop - но есть и более легкая альтернатива, которую вы, вероятно, могли бы использовать: LogisticRegression Алгоритм в Mahout.

Существует класс ModelSerializer , с помощью которого вы можете хранить обученную модель в двоичном формате на жестком диске или в другом месте - так что вам не нужно настраивать Hadoop.

Вы можете попробовать:

<dependency>
   <groupId>org.apache.mahout</groupId>
   <artifactId>mahout-examples</artifactId>
   <version>0.6</version>
</dependency>

Существует следующий класс, который вы можете использовать в качестве примера кода для вашей задачи:

org.apache.mahout.classifier.sgd.TrainNewsGroups

Здесь - еще несколько ресурсов, касающихся Mahout в Интернете.

Таким образом, чтобы получить доступ к этому из PHP, вы можете создать небольшой веб-сервис RESTful на Java или просто командулинейный интерфейс.

Надеюсь, это немного поможет.

...