Как Baidu Content Risk Control выполняет сопоставление словарного запаса за считанные секунды

задняя часть Архитектура Безопасность
Как Baidu Content Risk Control выполняет сопоставление словарного запаса за считанные секунды

«Эта статья участвовала в мероприятии Haowen Convocation Order, щелкните, чтобы просмотреть:Двойные заявки на внутреннюю и внешнюю стороны, призовой фонд в 20 000 юаней ждет вас, чтобы бросить вызов!"

Управляемое чтение: когда мы реализуем, чтобы определить, содержит ли строка другую строку, мы можем просто использовать алгоритм сопоставления строк.Если мы хотим определить, содержит ли строка N строк, это N может быть десятками миллионов, а затем использовать простой алгоритм сопоставления строк. не может удовлетворить наши потребности, десятки миллионов слов должны гибко поддерживаться, деловые стороны могут получить свои собственные слова для сопоставления при сопоставлении, а сопоставление десятков миллионов слов должно гарантировать соответствие скорости, результаты в секундах. Поэтому нам нужен комплекс решений для решения подобных задач — словарь-сервис.

Полный текст 5370 слов, расчетное время чтения 12 минут.

1. Предпосылки

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

2. Архитектура

图片

На приведенном выше рисунке показана общая архитектура словарного сервиса:

(1) Управление словарным запасом: каждое бизнес-направление поддерживает свой собственный словарь на платформе управления словарем, каждое бизнес-направление может добавлять несколько групп словарей, и каждая группа словарей может поддерживать конфиденциальные слова и динамически добавлять атрибуты конфиденциальных слов; платформа управления словарем Использование ES для достижения эффективной сегментации слов возможности поиска для списков слов и десятков миллионов слов; управление списками слов будет регулярно генерировать файлы BOS со списками слов для каждой бизнес-линии и загружать их в службу BOS.

(2) Сервисный уровень: бизнес-сторона вызывает словарную службу для унификации внешнего интерфейса сопоставления, а уровень службы отправляет задачу сопоставления на уровень оператора политики для выполнения функции сопоставления словаря. Внешний унифицированный сервис словаря эквивалентен простому шлюзу, который предоставляет функцию аутентификации для проверки законности запроса; предоставляет функцию ограничения трафика, которая может устанавливать значение ограничения трафика для каждого запрашивающего; предоставляет функцию результата обработка, политика Атрибуты чувствительных слов, возвращаемых оператором, являются лишь частью.Согласно потребностям бизнес-стороны, атрибуты чувствительных слов, возвращаемых оператором политики, могут быть улучшены, предусмотрена функция переадресации трафика, и запросы каждой бизнес-линии могут быть отправлены в разные кластеры в соответствии с конфигурацией.Каждый оператор бизнес-политики развернут в кластерах.

(3) Уровень оператора политики: оператор стратегии реализует сопоставление чувствительных слов в тексте. Шаблоны сопоставления включают сопоставление включения, сопоставление строгой фильтрации и мультимодальное сопоставление. Слова, чувствительные к совпадению, будут возвращены на уровень обслуживания словаря. Словарь каждой бизнес-линии будет загружаться в память каждым оператором политики путем полного обновления или синхронизации в реальном времени инкрементных данных, что поддерживает функцию сопоставления операторов. Метод полного обновления: платформа управления словарем будет регулярно делить словарь на бизнес-линии для создания файлов BOS, загружать их в службу BOS, а оператор политики будет периодически синхронизировать конфиденциальные слова из файла BOS в память; метод синхронизации в реальном времени : оператор политики в режиме реального времени сканирует базу данных глоссария и загружает в память добавочный тезаурус.

(4) Основные услуги: Фреймворк GDP реализует разработку словарного сервиса, платформа Pandora реализует развертывание словарного сервиса, mysql реализует хранение данных словаря, ES реализует сегментацию слов словаря, bdrp реализует текущие функции ограничения и кэширования. , а служба BOS реализует передачу файлов словаря.

3. Платформа управления словарным запасом

Платформа управления словарным запасом позволяет каждой бизнес-линии поддерживать свой собственный словарь.В рамках каждой бизнес-линии можно создать несколько групп словарного запаса, что удобно для бизнес-стороны, чтобы управлять своими собственными конфиденциальными словами.Значение каждой словарной группы назначается бизнесом. стороны. , что конкретно отражается в том, выполняет ли деловая сторона различные действия в соответствии с группой списка слов, когда слово, чувствительное к попаданию, принадлежит к этой группе списка слов; конфиденциальные слова могут поддерживаться в каждой группе списка слов, а атрибуты чувствительного слова выбираются самой деловой стороной.Например, для атрибута типа аудита деловая сторона может выбрать значение атрибута переданного слова для проверки в соответствии с попаданием определенного конфиденциального слова и выбрать значение атрибута отклоненное слово, если оно должно быть отклонено.

3.1 Управление словарным запасом

Словарь, который каждая бизнес-линия может добавлять и изменять, и по словарю можно осуществлять поиск.

(1) Добавьте список словарей, выберите бизнес-линию, к которой он принадлежит, добавьте имена и примечания, и вы можете создать список словарей для нескольких бизнес-линий одновременно Это удобно и быстро, и администраторам удобно управлять словарь. Фигура 1:

图片

(1) Измените словарь, вы можете изменить имя и примечания словаря, и вы можете переназначить словарь для бизнес-линии.Если другие бизнес-линии имеют тезаурус, который можно повторно использовать, вы можете напрямую скопировать словарь других бизнес-направления к вашим собственным.В соответствии со словарем это удобно и быстро, а управленческому персоналу удобно управлять словарем. Фигура 2:

图片

(2) Поиск по словарю, который поддерживает поиск словаря по идентификатору словаря, названию словаря, бизнес-направлению и времени создания; поиск имени словаря с использованием характеристик ES может реализовать сегментацию слов для поиска имен словаря; В списке вы можете увидеть идентификатор словаря, название словаря, бизнес-направление, время создания словаря, время обновления, количество записей в каждом словаре, примечания словаря и эффективное состояние словаря Оператор Вы можете нажать в статусе в списке, чтобы изменить словарь на активное или недействительное состояние; на панели операций вы можете нажать «Изменить», чтобы изменить словарь, нажать «Добавить», чтобы добавить слова в словарь, и нажать, чтобы просмотреть подробную информацию о словаре. . Рисунок 3:

图片

3.2 Поддержание конфиденциальных слов

Чувствительные слова могут эффективно и быстро сохраняться в словарном запасе. Важные атрибуты конфиденциальных слов включают:

(1) Тип записи: определить, является ли конфиденциальное слово представленным словом или словом фильтра;

(2) Конфиденциальный тип: определите конфиденциальную классификацию записи;

(3) Режим сопоставления: включить сопоставление — чтобы определить, содержит ли текст чувствительные слова, строгое сопоставление фильтров — чтобы определить, содержит ли комбинация китайских иероглифов, букв, цифр и специальных символов в тексте чувствительные слова, мультимодальное сопоставление — для определить, содержит ли текст 2 или 3 слова, и более чем один интервал между словами находится в пределах допустимого диапазона.

(4) Эффективная позиция: эффективная позиция деликатного слова в статье, такого как заголовок, текст, текст на картинке и т. д.

(5) Исключаемое слово: содержит атрибуты чувствительного слова в совпадении.Если чувствительное слово — это А, исключенное слово — В, и в тексте есть слово AB, чувствительное слово А не будет найдено.

(6) Стратегия расширения: многомодальная замена позиции - если в тексте есть многомодальное слово AB и слово BA, вы можете нажать на AB-чувствительное слово; преобразование регистра букв - игнорировать регистр, если чувствительное слово cd, в тексте есть cd. , cd, слова CD, можно нажать слово cd.

(7) Время отказа: есть два варианта долгосрочного действия и определенного времени отказа.

Ведение конфиденциальных слов предоставляет такие функции, как одиночное добавление, пакетное добавление, одиночное изменение, пакетное изменение, поиск по словарю и поиск по записи:

(1) Для одного добавления было определено имя добавленного словаря.Деловая сторона может выбрать атрибут слова в соответствии со своим бизнесом и операцию добавления.Если атрибут режима соответствия слова выбирает может быть добавлено слово включения, освобожденное слово слова. Рисунок 4:

图片

(2) Пакетное добавление поддерживает синхронизацию для добавления до 3000 элементов за раз и может быть добавлено в разные списки слов разных бизнес-направлений одновременно, что удобно и быстро, а также облегчает обслуживание конфиденциальных слов администраторами. .Все атрибуты чувствительных слов, которые необходимо добавить.Вы должны быть последовательными, чтобы использовать эту функцию.Второй этап не поддерживает добавление исключенных атрибутов слов к включенным словам.Вы можете ввести несколько записей в новой строке в поле ввода чувствительных слов. Рисунок 5:

图片

(3) Пакетное создание, деловая сторона может поддерживать конфиденциальные слова и атрибуты в таблице EXCEL в соответствии со своим бизнесом.Каждый файл поддерживает максимум 30 000 слов.После отправки может быть создана задача создания, запущенная в фоновом режиме, и может создавать несколько Задач, которые при выполнении выполняются последовательно, как показано на рисунке 6:

图片

(3) Одна модификация может изменить любой атрибут записи.Если конфиденциальные слова являются включающими словами, добавляемыми пакетами синхронно, здесь можно изменить исключенные слова, которые хотят добавить конфиденциальные слова. Рисунок 7:

图片

(3) Пакетная модификация, деловая сторона может сохранить конфиденциальные слова и атрибуты, которые будут изменены в таблице EXCEL в соответствии с их собственным бизнесом.Каждый файл поддерживает максимум 30 000 слов.После отправки можно создать задачу обновления, запустить в фоновом режиме, и в то же время может создавать несколько задач обновления и выполнять их последовательно. Рисунок 8:

图片

(4) Поиск деликатных слов может быть основан на типе просмотра, режиме сопоставления, фактическом местоположении, типе деликатных данных, операторе, бизнес-линии, словарном запасе, времени создания деликатных слов и других атрибутах деликатных слов. поиска сегментации слов ES может поддерживать поиск сегментации слов, а также может обеспечить точный поиск; список поиска показывает имя чувствительных слов, бизнес-направление, словарный запас, оператор, время работы, примечания и другие поля, вы можете проверить общее количество, вы можете экспортировать, отменять в пакетном режиме, вы можете нажать «Изменить» на панели операций, чтобы перейти на страницу модификации, вы можете нажать «Отмена», чтобы отменить это конфиденциальное слово. Рисунок 9:

图片

4. Единый вход словарного сервиса

Унифицированная запись словарной службы обеспечивает стандартный интерфейс API.Бизнес-сторона вызывает унифицированный внешний интерфейс сопоставления словарной службы.Служебный уровень отправляет задачу сопоставления на уровень оператора политики для выполнения функции сопоставления словаря. Внешний унифицированный сервис словаря эквивалентен простому шлюзу, который предоставляет функцию аутентификации для проверки законности запроса; предоставляет функцию ограничения трафика, которая может устанавливать значение ограничения трафика для каждого запрашивающего; предоставляет функцию результата обработка, политика Атрибуты чувствительных слов, возвращаемых оператором, являются лишь частью.Согласно потребностям бизнес-стороны, атрибуты чувствительных слов, возвращаемых оператором политики, могут быть улучшены, предусмотрена функция переадресации трафика, и запросы каждой бизнес-линии могут быть отправлены в разные кластеры в соответствии с конфигурацией.Каждый оператор бизнес-политики развернут в кластерах. Конкретный процесс показан на рисунке 10.

图片

5. Политика загрузки словаря

Словарь загрузки политик повторяется через несколько схем, и схема, наконец, становится более зрелой и стабилизируется.

Первая версия списка слов в действующем плане политики: платформа управления списком слов создает файл списка слов для всех бизнес-направлений, загружает его в BOS, сканирует и загружает стратегию списка слов каждые 30 минут. Все бизнес-направления сосредоточены в одном файле словаря и загружаются одновременно, что приводит к медленной скорости загрузки словаря политики.

Во второй версии плана 30-минутное эффективное время не может удовлетворить потребности бизнес-стороны.Платформа управления словарем генерирует несколько файлов словаря в соответствии с бизнес-направлением и отправляет их в систему BOS.Таблица, эффективное время словаря сокращено. от 30 минут до 5 минут.

Для плана с одной-тремя версиями 5 минут по-прежнему недостаточно для особых сценариев.Мы добавили схему синхронизации списка словарей в реальном времени.Стратегия списка словарей сканирует базу данных в течение 10 секунд и загружает инкрементные данные в память, но эта схема не подходит для десятков тысяч человек, инкрементная загрузка данных подходит только для загрузки слов в пределах 10 000 уровней.

Теперь словарная стратегия загружается в словарь.Вторая и третья редакции существуют одновременно с дополнительными преимуществами.Весь процесс эволюции показан на рисунке 11:

图片

Формат файла BOS, несколько столбцов разделены табуляцией, многомодальные слова соединены амперсандом, в том числе слова идентифицируются префиксом + знаком, основная информация - это идентификатор конфиденциального слова, имя конфиденциального слова, идентификатор словаря, к которому принадлежит конфиденциальное слово, мультимодальное слово интервал между словами, время истечения срока действия, тип аудита, тип соответствия, бизнес-направление, фактическое местоположение, конфиденциальный тип, политика расширения, исключенные слова. Рисунок 12:

图片

Полная загрузка и пошаговая синхронная загрузка в реальном времени, полная загрузка будет загружена один раз при запуске, а частота загрузки составляет более получаса, что можно настроить в соответствии с бизнес-направлением; пошаговая синхронизация в реальном времени идет в базу данных за 10 секунд, чтобы проверить, есть ли инкрементные данные, затем страницы загружаются в память. Рисунок 13:

图片

Структура загрузки словаря кэша политик в память выглядит следующим образом:

(1) Словарное сопоставление бизнес-направлений, эффективных местоположений, конфиденциальных слов и идентификаторов конфиденциальных слов. При совпадении конфиденциального слова вы можете быстро найти идентификатор конфиденциального слова в соответствии с бизнес-направлением и фактическим местоположением, а затем получить правило атрибута конфиденциального слова через идентификатор конфиденциального слова, который используется для расчета совпадающее чувствительное слово допустимо. Рисунок 14:

图片

(2) Идентификатор конфиденциального слова и сопоставление словаря правила атрибута конфиденциального слова, каждая строка файла BOS обрабатывается и сохраняется для конфиденциальных слов. Правила атрибутов конфиденциальных слов можно быстро найти с помощью идентификатора конфиденциального слова, который используется для вычисления допустимости совпадающих конфиденциальных слов. Рисунок 15:

图片

(3) Конфиденциальные слова связаны с деревом словаря (Trie tree), и дерево словаря создается для каждого направления деятельности и эффективной должности. Дерево словаря является ядром словарной стратегии. Сопоставление десятков миллионов конфиденциальных слов может вернуть результат конфигурации в течение 10 мс. Рисунок 16:

图片

Шесть, реализация словарной стратегии, соответствующая реализации

6.1 Процесс подбора словарной стратегии

Процесс сопоставления конфигурации политики показан на рис. 17:

图片

(1) Входные параметры сопоставления, уникальный идентификатор запроса request_id, используемый для позиционирования в восходящем и нисходящем направлении, источник запроса req_from, используемый для идентификации запрашивающей бизнес-стороны, токен, используемый для проверки разрешения, идентификатор бизнес-линии service_line, используемый для идентификации словаря. для сопоставления текст, который должен сопоставляться с содержимым, и конфигурация текста, которая используется для определения чувствительных слов, для которых требуется эффективная позиция. Как показано на рисунке 18:

图片

(2) Извлечение и объединение китайских иероглифов, букв, цифр и специальных символов в тексте для создания текстовых фрагментов различных комбинаций, которые используются для строгой фильтрации и сопоставления. Рисунок 19:

图片

(3) Отправьте текст в соответствующее дерево словаря, чтобы сопоставить одно конфиденциальное слово в соответствии с бизнес-направлением и положением текста.Информация включает конфиденциальное слово, позицию конфиденциального слова в тексте и длину деликатное слово. Позиция и длина используются для многомодальных слов. , независимо от того, является ли интервал между словами допустимым или нет. Результат сопоставления показан на рисунке 20:

图片

(4) Через бизнес-линию эффективное местоположение и конфиденциальные слова, идентификаторы конфиденциальных слов, которым принадлежат конфиденциальные слова, получаются из кэша match_data (рисунок 13), а затем правила атрибутов конфиденциальных слов получаются из line_cahe. кешировать через идентификаторы конфиденциальных слов; если они совпадают Полученное конфиденциальное слово является содержащим слово или слово-фильтр, которое напрямую попадает и выводится; если это многомодальное слово, то проверьте, есть ли другие слова в многомодальном слове Правило атрибута hit., попало в выход. Результат возвращается, как показано на рисунке 21:

图片

6.2 Решение тайм-аута для сопоставления большого текста

Графика и текст PGC часто содержат большие текстовые статьи с сотнями тысяч слов в словарном списке. Из-за слишком большого количества слов вспоминаемые слова могут достигать десятков тысяч. Эти слова занимают слишком много времени для вычисления правил сопоставления, что приводит к соответствующий тайм-аут.

Схема оптимизации представлена ​​на рисунке 21:

(1) До оптимизации большая текстовая статья с заголовком 100 слов и телом 19,9w.При сопоставлении словарного запаса сначала сопоставляется заголовок, что занимает 10 мс, а затем сопоставляется текст.Из-за большого количество слов, это занимает 19 секунд, а окончательное сопоставление занимает два. Суммарное количество достигает 20 секунд.

(2) После оптимизации большие текстовые статьи проходят через список словаря.Во-первых, текст с более чем 5000 слов делится на несколько текстов, меньших или равных 5000. Когда словарь совпадает, несколько текстовых фрагментов сопоставляются параллельно, и итоговый трудоемкий результат кратен Самый трудоемкий в параллельных вычислениях я привел пример 50мс.

图片

6.3 Реализация словарного дерева (Trie tree)

Алгоритм сопоставления словарного дерева использует заводскую библиотеку C++ с открытым исходным кодом dictmatch, которая реализует простейший алгоритм дерева Trie без улучшения многопоточности, поэтому его необходимо отменить. Тем не менее, он использует две таблицы для представления дерева Trie и значительно оптимизирует проблему занимания большого пространства.Особенность заключается в том, что он относительно медленный при построении дерева, но очень быстрый при запросах.

Древовидная структура словаря, как показано на рисунке 23:

图片

7. Развитие и мышление

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

Лексика развернута по бизнес-линиям: В настоящее время лексика 60+ бизнес-линий, каждая бизнес-линия смешана, и в инстанс загружается лексика всех бизнес-линий, что потребляет много памяти, и есть проблема с словарная служба. Затрагивает все бизнес-стороны; если каждое бизнес-направление развертывается в кластерах, это увеличивает затраты на обслуживание, поэтому мы изучаем способ автоматического развертывания в отдельных бизнес-направлениях.

Рекомендуемое чтение:

|Демистификация мониторинга микросервисов Baidu: эволюция мониторинга игровых сервисов Baidu

|Как оптимизировать взаимодействие с пользователем, например Baidu Live (начало статьи)

|История анализа стабильности поиска Baidu (часть 2)

---------- END ----------

Байду Гик говорит

Официальный технический общедоступный аккаунт Baidu доступен онлайн!

Технические галантереи · Отраслевая информация · Интернет-салон · Отраслевая конференция

Информация о найме · Внутренняя информация · Технические книги · Периферийные устройства Baidu

Приглашаем студентов обратить внимание