Фильтрация порнографии в поисковой выдаче
А в чем проблема?
И вдруг...
Что делать? Классифиция документов Нужно выделить набор характеристик, которые отличали бы порносайт от обычного Порносайты не маскируются, и это хорошо Много документов в серой зоне Классификация запросов Запросы короткие и зачастую имеют несколько смыслов Некоторые из них содержат опечатки
Источники данных Неразмеченные html-страницы в индексе Логи запросов с данными о переходах на страницы Переформулировки запросов Внешние каталоги: общие (list.mail.ru, liveinternet.ru/rating) и специальные (orgazmo.ru, nulist.biz).
Первое приближение: наивный Байесовский классификатор Документ рассматривается как набор независимых слов По обучающему множеству составляются словари с весами Находим слова классифицируемого документа в словарях и смотрим, вес слов какого класса больше Текстовая классификация
Недостатки подхода Не учитываем разметку документа, хотя она может быть важна. Слова в некоторых частях документа (title, url, keywords, a href) более значимы Тяжело составить правильное обучающее множество. Оно должно быть: Полным (иначе будем часто встречаться с проблемой «нулевой частоты») Сбалансированным (должны быть представлены разные темы: рассказы, фото/видео хостинги, сайты знакомств и т. п.) Точным
Фазиль Искандер «Рассказы о Чике». Много слов, неизвестных классификатору Некоторое количество слов, употребляемых на порносайтах (top в списке справа) Результат документ попал в «серую» зону. Примеры ошибок классификатора толстенькими поскуливала дырочках зрелые всовывал жесткое отсосав раздвигал юбкой лизала кончала чулках щекотали всунув пахучую задвигалась блаженном упругую аппетитную глотала извивалась 3.88 покачивались оттопырила бритую
Трудные случаи Мало текста Текст является навигационной обвязкой Текст не имеет отношения к картинкам На странице только картинка
Трудные случаи Порнотизеры Часто занимают большую часть страницы Сильно привлекают внимание В html-коде выглядят как часть скрипта, запрос к соответствующей тизерной сети:
Результаты текстовой классификации ГраницаТочностьПолнотаF1-мера
Добавляем данных Порносайты часто имеют URL, содержащий определенные подстроки (xxx, porno, adult, sex, erotic) Заголовок и ключевые слова будем обрабатывать по-другому (посчитаем встреченное количество слов из порнословаря) Крупных тизерных сетей, отдающих порно, не так много, будем искать обращения к ним в коде страницы Будем считать количества переходов на страницу по порнозапросам: раз пользователи ходят на сайт за порнографией, наверное, она там есть.
Машинное обучение В качетстве алгоритма использовался AdditiveGroves (каскады деревьев решений) Обучали на небольшом, но точном наборе документов (около 8 тыс.) При нахождении ошибок классификации: Выделяем свойство, которое плохо распознается Находим примеры, добавляем в обучающее множество Переобучаемся Проверяем маркерным тестом, что ничего не «отъехало»
Что получилось? Характеристики документа, по степени значимости bayes porn_clicks keywords title url img_num script_num teasers Точность 98.3, полнота 95.5 и F1 96.5
Классификация запросов Фильтрация порнографии по обычным запросам (мультфильмы, рассказы, видео, фото) По неявным «взрослым» запросам (азиатки, мама и сын, девушка с конем) Показываем всё, как есть по порно запросам (эротика, порно смотреть онлайн, проститутки в москве) по навигационным и точно попадающим в тему запросам (саша грей видео, redtube, gexx.com)
Что пробовали Составлять большие списки «плохих» и «хороших» запросов. Слишком много форм (порно, порнушечка, порево, порноонлайн) Все меняется – тяжело поддерживать Морфология часто мешает (вафли вафлить) Составлять короткие списки регулярных выражений Потеряли из саджестов чЕБурашку, аЭРОфлот, оПОРНый прыжок Смотреть на переформулировки видео порно онлайн, youtube, эровидео, sex видео Смотреть на выдачу По запросам мулатки, малолетки, бесплатное видео около 80% страниц из выдачи определялись как порнография
Необходимые словари Выдача дает много информации о запросе, но Словарь «запрос процент порнодокументов» строится оффлайн и содержит не все возможные запросы. Составляем небольшой словарь (около 200 вхождений) регулярных выражений (плохая полнота, но хорошая точность). Этот же словарь используется при классификации документов. Составляем словарь «эвфемизмов» обычных слов, в некотором контексте придающих запросу порносмысл ( девочки, секретарши, бесплатно, зрелые )
Как происходит классификация Ищем, соответствует ли запрос выражениям из ручного «черного» списка (если да, запрос порнографичен). Если нет, ищем его в автоматически составленном словаре, проверяя, сколько документов из выдачи порнографические. Если меньше некоторого порога, запрос чист. Если больше удаляем из запроса все «эвфемизмы» и проверяем (также по выдаче) оставшуюся часть запроса. Пример: redtube видео
Результаты Точность 96%, полнота 85%. Ошибки Наличие слова порно не всегда говорит о «взрослом» запросе (Зак и Мири снимают порно, незаконное распространение порнографии) Не всегда по навигационным запросам в выдаче много порно На графике процент порнозапросов в потоке. Красная линия то, что нашлось по списку. (будни 4.5%, выходные 5.5%) Зеленая по выдаче (0.7%)
Оставшиеся проблемы Картиночный поиск Сейчас пользуется классификатором веба Есть страницы, не попадающие под выбранные характеристики порностраниц, но имеющие порнокартинки Фильтрация запросов в саджестах и переформулировках Более жесткие требования Плохие запросы с ошибками не ловятся словарями, но накликиваются пользователями
СПАСИБО! ВОПРОСЫ? Татьяна Романова