Какой лучший, самый простой и бесплатный способ проверить в Java, является ли фрагмент текста спамом?
Какой лучший, самый простой и бесплатный способ проверить в Java, является ли фрагмент текста спамом?
Ответы (4)
Это совсем не просто и требует некоторой теоретической/математической/статистической подготовки. Это называется Байесовская фильтрация. Это всего лишь один из методов, но он отлично работает.
Вы можете ознакомиться с введением и некоторыми сведениями о википедии здесь, но эта тема широко освещена в Интернете, просто поищите (я думаю, и здесь, на StackOverflow).
Вероятно, самый простой способ — использовать для этого существующий API. Akismet имеет привязки для Java, и это то, что Wordpress использует в своих блогах по умолчанию. О, и это бесплатное программное обеспечение с открытым исходным кодом.
Вы можете передать его через SpamAssassin и посмотреть, что будет возвращено.
Вот дурацкая идея: отправить текст в виде электронного письма на учетную запись Gmail. Затем используйте IMAP, чтобы узнать, попало ли оно в папку «Входящие» или в папку «Спам».
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
, это считается спамом.
text != "eggs"
:)) - person mlvljr   schedule 31.03.2010