Какой лучший, самый простой и бесплатный способ проверить в Java, является ли фрагмент текста спамом?

Какой лучший, самый простой и бесплатный способ проверить в Java, является ли фрагмент текста спамом?


person Doug    schedule 30.03.2010    source источник
comment
В питоне это, вероятно, будет text != "eggs" :))   -  person mlvljr    schedule 31.03.2010
comment
Пожалуйста, дайте нам знать, когда вы получите лучшее, простое и бесплатное решение этой проблемы :)   -  person Alexander Pogrebnyak    schedule 31.03.2010


Ответы (4)


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

Вы можете ознакомиться с введением и некоторыми сведениями о википедии здесь, но эта тема широко освещена в Интернете, просто поищите (я думаю, и здесь, на StackOverflow).

person Jack    schedule 30.03.2010

Вероятно, самый простой способ — использовать для этого существующий API. Akismet имеет привязки для Java, и это то, что Wordpress использует в своих блогах по умолчанию. О, и это бесплатное программное обеспечение с открытым исходным кодом.

person Cesar    schedule 30.03.2010

Вы можете передать его через SpamAssassin и посмотреть, что будет возвращено.

Вот дурацкая идея: отправить текст в виде электронного письма на учетную запись Gmail. Затем используйте IMAP, чтобы узнать, попало ли оно в папку «Входящие» или в папку «Спам».

person Barry Brown    schedule 30.03.2010
comment
+1, потому что это очень интересный вариант использования GMail. - person Cesar; 31.03.2010
comment
Прежде чем использовать Gmail в качестве спам-фильтра для приложения, было бы целесообразно внимательно прочитать условия обслуживания Gmail. - person Stephen C; 31.03.2010
comment
+1 SpamAssassin выглядит многообещающе ... не java, но я могу извлечь из этого пользу - person Doug; 31.03.2010

Akismet делает всю эту математику и логику за вас, я думаю, это лучший способ избежать спама.

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

Обычный вызов через его Java API будет таким: я использую commentCheck для фрагмента текста, который вы проверяем.

Akismet akismet = new Akismet(AKISMET_KEY, SITE);
    return akismet.commentCheck(
        request.getRemoteAddr(),
        request.getHeader("User-agent"),
        request.getHeader("referer"),
        "", //permalink
        "comment", //comment type
        "", //author
        "", //email
        "",
        commentText, //Text to check
        request.getParameterMap());

Если этот вызов возвращает true, это считается спамом.

person I.G. Pascual    schedule 20.05.2011
comment
Я знаю, что этот ответ слишком запоздал, но... метод commentCheck проверяет только наличие спама, но не наличие ненормативной лексики, агрессивного языка и т. д., не так ли? - person Ommadawn; 24.06.2018