Алгоритм отделения бессмысленного текста от осмысленного текста - PullRequest
8 голосов
/ 02 февраля 2009

Я предоставил некоторым своим программам функцию обратной связи. К сожалению, я забыл включить какую-то защиту от спама - чтобы пользователи могли отправлять все, что они хотели, на мой сервер - где каждый отзыв хранится в огромной базе данных.

Вначале я периодически проверял эти отзывы - я отфильтровал то, что можно было использовать, и удалил мусор. Проблема в том, что я получаю 900 отзывов в день. Только 4-5 действительно полезны, остальные сообщения в основном 2 типа бреда:

  • ерунда: jfvgasdjkfahs kdlfjhasdf (Люди, ломающие голову на клавиатуре)
  • язык, который я не понимаю

Что я сделал до сих пор:

  1. Я установил фильтр для удаления любых отзывов, содержащих «asdf», «qwer» и т. Д. -> только 700 в день

  2. Я установил фильтр слов для удаления всего, что содержит нецензурную лексику -> 600 в день (не спрашивайте, но там много странных людей)

  3. Я отфильтровываю любые сообщения, содержащие буквы, которые не используются на моем языке -> 400 в день

Но 400 в день все еще слишком много. Поэтому мне интересно, сталкивался ли кто-нибудь с такой проблемой раньше и знает какой-то алгоритм для фильтрации бессмысленных сообщений.

Любая помощь будет принята с благодарностью!

Ответы [ 11 ]

0 голосов
/ 02 февраля 2009

Предыдущие ответы о том, как связать спам-фильтр с байесовским классификатором, являются хорошей идеей. Для вашего приложения, поскольку вы, похоже, получаете много длинных бессмысленных слов, было бы лучше включить опцию в вашем парсере для обучения биграммам и триграммам; в противном случае многие бессмысленные слова будут рассматриваться как «никогда раньше не видел», что не является самым полезным анализом в вашем случае.

...