Itinai.com ai compare futuristic offices of it companies imag e0b49f50 b126 4167 afbe b826ff248328 0

Начало работы с Microsoft Presidio: Пошаговое руководство по обнаружению и анонимизации персонально идентифицируемой информации

Itinai.com ai compare futuristic offices of it companies imag e0b49f50 b126 4167 afbe b826ff248328 0

Введение в Microsoft Presidio

Автоматизация обработки персонально идентифицируемой информации (PII) — это важная задача для многих организаций. В этой статье мы рассмотрим, как начать работу с Microsoft Presidio, открытым фреймворком для обнаружения, анализа и анонимизации PII в текстах. Presidio построен на базе библиотеки spaCy, что делает его легким и модульным для интеграции в реальные приложения.

Шаг 1: Установка необходимых библиотек

Для начала работы с Presidio вам нужно установить несколько ключевых библиотек:

  • presidio-analyzer: основная библиотека для обнаружения PII.
  • presidio-anonymizer: предоставляет инструменты для анонимизации обнаруженной информации.
  • spaCy NLP model (en_core_web_lg): используется для обработки естественного языка и распознавания именованных сущностей.

Чтобы установить библиотеки, выполните следующие команды:

pip install presidio-analyzer presidio-anonymizer
python -m spacy download en_core_web_lg

Шаг 2: Основное обнаружение PII с помощью Presidio Analyzer

Теперь, когда вы установили необходимые библиотеки, давайте инициализируем движок анализа Presidio и проведем базовый анализ для обнаружения номера телефона из примера текста:

import logging
logging.getLogger("presidio-analyzer").setLevel(logging.ERROR)

from presidio_analyzer import AnalyzerEngine

analyzer = AnalyzerEngine()
results = analyzer.analyze(text="Мой номер телефона 212-555-5555",
                           entities=["PHONE_NUMBER"],
                           language='en')
print(results)

Шаг 3: Создание пользовательского распознавателя PII

Presidio позволяет создавать пользовательские распознаватели. Например, вы можете создать распознаватель для выявления академических титулов:

from presidio_analyzer import AnalyzerEngine, PatternRecognizer, RecognizerRegistry

academic_title_recognizer = PatternRecognizer(
    supported_entity="ACADEMIC_TITLE",
    deny_list=["Dr.", "Dr", "Professor", "Prof."]
)

registry = RecognizerRegistry()
registry.load_predefined_recognizers()
registry.add_recognizer(academic_title_recognizer)

analyzer = AnalyzerEngine(registry=registry)
text = "Профессор Джон Смит встречается с доктором Элис Браун."
results = analyzer.analyze(text=text, language="en")

for result in results:
    print(result)

Шаг 4: Использование Presidio Anonymizer

Теперь давайте анонимизируем обнаруженные сущности с помощью движка анонимизации Presidio:

from presidio_anonymizer import AnonymizerEngine
from presidio_anonymizer.entities import RecognizerResult, OperatorConfig

engine = AnonymizerEngine()
result = engine.anonymize(
    text="Меня зовут Бонд, Джеймс Бонд",
    analyzer_results=[
        RecognizerResult(entity_type="PERSON", start=11, end=15, score=0.8),
        RecognizerResult(entity_type="PERSON", start=17, end=27, score=0.8),
    ],
    operators={"PERSON": OperatorConfig("replace", {"new_value": "БИП"})},
)

print(result)

Шаг 5: Индивидуальное распознавание сущностей и анонимизация на основе хеширования

В этом примере мы определим пользовательские PII сущности, такие как номера PAN и Aadhaar, и анонимизируем их с помощью оператора на основе хеширования:

from presidio_analyzer import AnalyzerEngine, PatternRecognizer, Pattern

pan_recognizer = PatternRecognizer(
    supported_entity="IND_PAN",
    name="PAN Recognizer",
    patterns=[Pattern(name="pan", regex=r"\b[A-Z]{5}[0-9]{4}[A-Z]\b", score=0.8)],
    supported_language="en"
)

aadhaar_recognizer = PatternRecognizer(
    supported_entity="AADHAAR",
    name="Aadhaar Recognizer",
    patterns=[Pattern(name="aadhaar", regex=r"\b\d{4}[- ]?\d{4}[- ]?\d{4}\b", score=0.8)],
    supported_language="en"
)

Шаг 6: Анализ и анонимизация текстов

Теперь давайте проанализируем несколько текстов, содержащих номера PAN и Aadhaar, и анонимизируем их:

from pprint import pprint

text1 = "Мой PAN ABCDE1234F и номер Aadhaar 1234-5678-9123."
text2 = "Его Aadhaar 1234-5678-9123 и PAN ABCDE1234F."

results1 = analyzer.analyze(text=text1, language="en")
anon1 = anonymizer.anonymize(
    text1,
    results1,
    {
        "DEFAULT": OperatorConfig("reanonymizer", {"entity_mapping": entity_mapping})
    }
)

results2 = analyzer.analyze(text=text2, language="en")
anon2 = anonymizer.anonymize(
    text2,
    results2,
    {
        "DEFAULT": OperatorConfig("reanonymizer", {"entity_mapping": entity_mapping})
    }
)

print(" Оригинальный текст 1:", text1)
print(" Анонимизированный текст 1:", anon1.text)
print(" Оригинальный текст 2:", text2)
print(" Анонимизированный текст 2:", anon2.text)

Заключение

Microsoft Presidio предоставляет мощные инструменты для работы с PII. Этот фреймворк помогает обеспечить соблюдение законодательства о защите данных, минимизируя риски утечек информации. Начните использовать Presidio, чтобы защитить свою организацию и клиентов.

Дополнительные ресурсы и документация доступны на официальном репозитории Presidio в GitHub. Присоединяйтесь к сообществу разработчиков и следите за новыми обновлениями!

Новости в сфере искусственного интеллекта