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

В этом посте мы расскажем о некоторых предстоящих функциях Gretel и о том, как эти функции позволили нам обнаружить личную информацию, включая полные имена и адреса электронной почты, в популярном наборе финансовых данных Lending Club на Kaggle.

Gretel помогает разработчикам более безопасно обмениваться данными, чтобы вы могли создавать быстрее и лучше. Для этого мы создаем рабочие процессы, которые позволят вам лучше понимать свои данные, а затем принимать обоснованные решения о том, как сделать эти данные безопасными для совместного использования. Этот рабочий процесс описан ниже:

Когда вы используете Gretel, первая остановка для ваших данных - это конвейер маркировки для автоматической маркировки данных. Мы используем комбинацию Обработки естественного языка (NLP), включающую распознавание сущностей на основе нейронной сети для имен и адресов, управляемые регулярные выражения и настраиваемые экстракторы для маркировки различных типов сущностей. В пространстве НЛП это называется Распознавание именованных сущностей (NER).

Gretel предлагает NER в двух вариантах:

  1. Асинхронные потоки проектов: здесь вы можете создать проект Gretel, загрузить свои данные через наш REST API, и ваши данные будут помечены и загружены в зашифрованный поток, основанный только на памяти. Помеченные записи также можно использовать обратно через наш REST API, что позволяет создавать различные рабочие процессы публикации / подписки.
  2. Синхронный API: наш REST API также имеет конечные точки, куда вы можете отправить ограниченное количество записей и мгновенно получить обратно помеченную версию записи. Это отлично подходит для экспериментов, отладки или просто для знакомства с нашими API.

Структура данных будет одинаковой независимо от того, используете ли вы наш синхронный API или поток проекта публикации / подписки. Это позволит вам создавать приложения, которые будут работать одинаково независимо от того, какой API вы используете.

Теперь мы проведем вас через автоматическую маркировку данных в Gretel, используя настоящие кредитные данные Lending Club от Kaggle. (Мы были впечатлены его огромной размерностью набора данных, поэтому использовали его для некоторых наших собственных тестов!) Набор данных о ссуде Lending Club составляет примерно 2,2 миллиона записей со 147 полями в каждой записи. Мы использовали одну из наших языковых клиентских библиотек для потоковой передачи всех записей через наш API и исследования созданного индекса сущности.

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

Обратите внимание, что мы присваиваем уникальный «gretel_id» каждой записи, которую вы нам отправляете. В синхронном режиме идентификатор возвращается вместе со всеми завершенными данными. Когда вы используете асинхронный API, вы получаете обратно только идентификатор, а помеченные данные доступны в потоке вашего проекта.

Мы также предоставляем информацию о метаданных для каждого поля. Как видите, в этой записи (и некоторых других) поле «desc» содержит много текста произвольной формы, который может легко содержать конфиденциальную информацию. Любые поля, в которых обнаружены объекты, будут иметь «нер» ключ и массив объектов меток. После создания этих метаданных вы можете подключиться к нашему Transformer SDK, использовать наш контейнер Docker с механизмом правил для выполнения определенной маршрутизации на основе обнаруженных объектов или создать свои собственные рабочие процессы.

Присмотревшись к структуре объекта метки:

  • текст: фактические данные, которые были сопоставлены.
  • start: начальное смещение индекса в строке, содержащей объект.
  • end: конечное смещение индекса в строке, содержащей объект.
  • label: уникальный ярлык, управляемый Gretel, который описывает эту сущность. Мы ведем каталог этих этикеток, и каждый объект будет иметь по одному.
  • источник: это уникальное имя серверной службы, обнаружившей объект. Если один и тот же объект соответствует нескольким источникам (например, Spacy и Regex), то для каждого будут отдельные объекты меток.
  • оценка: в зависимости от детектора мы присваиваем оценку от 0 до 1, чтобы указать уровень достоверности. Поскольку мы оптимизированы для работы с полуструктурированными данными, мы будем использовать имена полей, чтобы помочь сделать выводы об обнаружениях, которые приводят к более высоким баллам. Более низкие оценки предназначены для обнаружений, которые могут не иметь контекста из имени поля.

Если вы внимательно следовали нашему примеру, то, возможно, поняли, что в результате маркировки данных мы обнаружили в этом общедоступном наборе данных информацию, позволяющую установить личность. К нашему удивлению, мы заметили несколько конкретных идентификаторов, таких как адреса электронной почты и номера телефонов, при маркировке данных. Сначала мы предположили, что они были отредактированы и заменены фальшивыми суррогатными данными. В конечном итоге служба маркировки данных Gretel обнаружила 27 записей, содержащих адреса электронной почты, имена и фамилии и номера телефонов.

Мы очень серьезно относимся к конфиденциальности, поэтому немедленно уведомили Lending Club о нашем открытии и работали с их командой безопасности над исправлением личной информации в их общедоступных наборах данных. Но если бы эти данные были изначально отсканированы Гретель, эти записи могли быть должным образом обработаны, поля были удалены (например, подробное поле «desc») или вся запись была удалена перед публичным опубликованием.

Заключение

Мы очень рады применить обработку естественного языка, чтобы помочь разработчикам изучать данные и анализировать их. Мы хотели бы услышать о ваших примерах использования - не стесняйтесь обращаться к нам для более подробного обсуждения в комментариях, twitter или [email protected]. Следуйте за нами, чтобы быть в курсе последних тенденций с данными!