Обнаружение спама в (цель-) C

В настоящее время я пишу приложение для iPhone, которое получает некоторые данные от пользователя и загружает их на сервер. Загруженные данные будут отображаться для других пользователей той же программы (это еще не все, но для упрощения идеи...). Загружаемые данные представляют собой всего три строки: имя (максимум 50 символов), заголовок (максимум 50 символов) и некоторый текст (практически неограниченное количество символов). В основном мне нужна функция, служба или алгоритм, которые могут определить, насколько верны вводимые данные. Он должен был бы иметь возможность обнаруживать серии повторяющихся символов, определенные «незаконные» слова, ненормальные пробелы и т. д. Итак, мои вопросы: существует ли библиотека C или Objective-C (встроенная или с открытым исходным кодом) для такого рода проверки данных, или как мне выполнить такую ​​​​проверку?

Вот два примера хороших и плохих данных:

ХОРОШИЙ:

Name: "John Aaron Smith"  
Title: "Why am I still here?"  
Text: "Can anybody please help me? I'm feeling lonely!"

ПЛОХО:

Name: "f**k you, kldsanfklds"   
Title: "Only $99. Buy Now. Only $99"  
Text: "ndsaklgnvds lakævndsaklæfhadsæhdsjka fhdskjafhdskj lafhsdkhf. €#&/ #&()(/&%& ># €%€#% €#& hidosæahviædshvidshfiodsa. adsifjDSILFJIDSH \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"

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

Ваш, БЕН.

РЕДАКТИРОВАТЬ: мой самый «беглый» язык — это Objective-C, но я также неплохо справляюсь с C, и у меня есть знания PHP и JAVA. Библиотеки/примеры на других языках могут быть трудны для понимания и «перевода» на допустимый язык iPhone.

EDIT-EDIT: я не ищу что-то слишком сложное. Простой способ для меня сделать черновой монтаж.


person Benjamin Egelund-Müller    schedule 04.12.2009    source источник
comment
Только мне кажется, что ХОРОШИЕ данные выглядят как спам?   -  person Dominic Rodger    schedule 04.12.2009
comment
Ну, это всего лишь фиктивные данные, которые я ввел... На самом деле я пытаюсь обнаружить то, что находится в BAD.   -  person Benjamin Egelund-Müller    schedule 04.12.2009
comment
Разве никто не знает простых способов избавиться от худшего из худшего, такого как повторяющиеся символы и странные смеси текста и чисел?   -  person Benjamin Egelund-Müller    schedule 04.12.2009


Ответы (3)


Это очень сложно проблема решить. Я бы не стал создавать собственное средство обнаружения спама, я бы использовал решение, которое уже существует и имеет хорошую репутацию, например SpamAssassin.

person Ben S    schedule 04.12.2009
comment
Что касается бесплатной услуги, может ли он получить ее бесплатно? Если бы я запускал бесплатный сервис, я был бы готов пожертвовать компьютерным временем и пропускной способностью, но платить третьей стороне за предотвращение вандализма пришлось бы мне. - person David Thornley; 04.12.2009
comment
Я бы также обратил внимание на Akismet, который в прошлом хорошо работал у меня. То же самое соображение, хотя для коммерческого лицензирования. - person paulthenerd; 04.12.2009
comment
Акисмет выглядит довольно круто. Мне пришлось бы перенести одну из реализаций на C (что может занять некоторое время), но в остальном ее можно было бы использовать, учитывая, что я, вероятно, не буду зарабатывать 500 долларов в месяц. - person Benjamin Egelund-Müller; 04.12.2009

Вы видели Моллом? Он имеет кучу библиотек для разработчиков (php, ruby, perl и т. д.), которые взаимодействуют с серверами Mollom для определения спамность записи. Было бы несложно перевести один из них на Objective-C.

person Dave DeLong    schedule 04.12.2009
comment
Mollom выглядит интересно, но это также довольно дорого, учитывая, что я очень люблю выпускать бесплатное приложение. - person Benjamin Egelund-Müller; 04.12.2009

Я сделал что-то похожее на то, что вы хотите, но на php. Весь текст, с которым я имею дело, вводится с помощью капчи, поэтому я блокирую бесполезный спам в комментариях, подобный вашему неудачному примеру. Вот то, что у меня есть до сих пор, что блокирует 80% мусора. Он может блокировать некоторый допустимый текст от людей с плохими привычками правописания, но я предпочитаю это редактированию текста вручную.

  1. проверьте, что текст не пустой и убедитесь, что это не все пробелы
  2. Проверьте длину, я использую минимум 3 символа.
  3. проверьте серию совпадающих символов, например. !!!!!! Я использую не более 3.
  4. проверьте слова длиннее 15 символов. например lakævndsaklæfhadsæhdsjka
  5. преобразовать копию текста в нижний регистр и пробежаться по словарю нецензурных слов

Вы можете добавить к этому, заблокировав текст с подозрительными символами, например. %^[] дополнительно вы можете составить список символов, которые никогда не следует использовать рядом друг с другом, например. fd, gf, kp, yt, vnd На этом этапе вам нужно автоматизировать, добавив в алгоритм. Это будет означать, что алгоритм должен понимать некоторую грамматику, и общий процесс начнет увеличиваться по интенсивности. Все остальное находится за пределами моего понимания на данный момент.

person Eddie    schedule 10.03.2011