Files
presidio/samples/python/GPT3_synth_data/index.html

3033 lines
110 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="PII anonymization for text and images.">
<meta name="author" content="Microsoft">
<link rel="canonical" href="https://microsoft.github.io/presidio/samples/python/GPT3_synth_data/">
<link rel="icon" href="../../../assets/ms_icon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.4">
<title>GPT3 synth data - Microsoft Presidio</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.50c56a3b.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../../assets/_mkdocstrings.css">
<link rel="stylesheet" href="../../../css/ansi-colours.css">
<link rel="stylesheet" href="../../../css/jupyter-cells.css">
<link rel="stylesheet" href="../../../css/pandas-dataframe.css">
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script type="text/javascript">
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "5pd40fk720");
</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue-grey" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#use-presidio-gpt-3-to-turn-real-text-into-fake-text" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../.." title="Microsoft Presidio" class="md-header__button md-logo" aria-label="Microsoft Presidio" data-md-component="logo">
<img src="../../../assets/ms_icon.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Microsoft Presidio
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
GPT3 synth data
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/microsoft/presidio/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="Microsoft Presidio" class="md-nav__button md-logo" aria-label="Microsoft Presidio" data-md-component="logo">
<img src="../../../assets/ms_icon.png" alt="logo">
</a>
Microsoft Presidio
</label>
<div class="md-nav__source">
<a href="https://github.com/microsoft/presidio/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../installation/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../getting_started/" class="md-nav__link">
<span class="md-ellipsis">
Quickstart
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Handling text
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Handling text
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../text_anonymization/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2" >
<label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
<span class="md-ellipsis">
Step by step tutorial
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_2">
<span class="md-nav__icon md-icon"></span>
Step by step tutorial
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../tutorial/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/00_getting_started/" class="md-nav__link">
<span class="md-ellipsis">
Getting started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/01_deny_list/" class="md-nav__link">
<span class="md-ellipsis">
Deny-list recognizers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/02_regex/" class="md-nav__link">
<span class="md-ellipsis">
Regex recognizers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/03_rule_based/" class="md-nav__link">
<span class="md-ellipsis">
Rule-based recognizers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/05_languages/" class="md-nav__link">
<span class="md-ellipsis">
Additional models/languages
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/04_external_services/" class="md-nav__link">
<span class="md-ellipsis">
External services
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/06_context/" class="md-nav__link">
<span class="md-ellipsis">
Context enhancement
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/07_decision_process/" class="md-nav__link">
<span class="md-ellipsis">
Decision process
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/08_no_code/" class="md-nav__link">
<span class="md-ellipsis">
No-code recognizers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/09_ad_hoc/" class="md-nav__link">
<span class="md-ellipsis">
Ad-hoc recognizers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/10_simple_anonymization/" class="md-nav__link">
<span class="md-ellipsis">
Simple anonymization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/11_custom_anonymization/" class="md-nav__link">
<span class="md-ellipsis">
Custom anonymization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/12_encryption/" class="md-nav__link">
<span class="md-ellipsis">
Encryption/Decryption
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tutorial/13_allow_list/" class="md-nav__link">
<span class="md-ellipsis">
Allow-lists
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3" >
<label class="md-nav__link" for="__nav_4_3" id="__nav_4_3_label" tabindex="0">
<span class="md-ellipsis">
Presidio Analyzer
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_3">
<span class="md-nav__icon md-icon"></span>
Presidio Analyzer
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../analyzer/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3_2" >
<label class="md-nav__link" for="__nav_4_3_2" id="__nav_4_3_2_label" tabindex="0">
<span class="md-ellipsis">
Developing PII recognizers
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_3_2">
<span class="md-nav__icon md-icon"></span>
Developing PII recognizers
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../analyzer/adding_recognizers/" class="md-nav__link">
<span class="md-ellipsis">
Tutorial
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../analyzer/developing_recognizers/" class="md-nav__link">
<span class="md-ellipsis">
Best practices in developing recognizers
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../analyzer/languages/" class="md-nav__link">
<span class="md-ellipsis">
Multi-language support
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3_4" >
<label class="md-nav__link" for="__nav_4_3_4" id="__nav_4_3_4_label" tabindex="0">
<span class="md-ellipsis">
Customizing the NLP model
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_3_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_3_4">
<span class="md-nav__icon md-icon"></span>
Customizing the NLP model
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../analyzer/customizing_nlp_models/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../analyzer/nlp_engines/spacy_stanza/" class="md-nav__link">
<span class="md-ellipsis">
Spacy/Stanza
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../analyzer/nlp_engines/transformers/" class="md-nav__link">
<span class="md-ellipsis">
Transformers
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../analyzer/decision_process/" class="md-nav__link">
<span class="md-ellipsis">
Tracing the decision process
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_4" >
<label class="md-nav__link" for="__nav_4_4" id="__nav_4_4_label" tabindex="0">
<span class="md-ellipsis">
Presidio Anonymizer
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_4">
<span class="md-nav__icon md-icon"></span>
Presidio Anonymizer
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../anonymizer/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../anonymizer/adding_operators/" class="md-nav__link">
<span class="md-ellipsis">
Developing PII operators
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Handling images
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Handling images
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../image-redactor/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../image-redactor/evaluating_dicom_redaction/" class="md-nav__link">
<span class="md-ellipsis">
Evaluating DICOM redaction
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../" class="md-nav__link">
<span class="md-ellipsis">
Samples
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
General
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
General
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../supported_entities/" class="md-nav__link">
<span class="md-ellipsis">
Supported entities
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_2" >
<label class="md-nav__link" for="__nav_7_2" id="__nav_7_2_label" tabindex="0">
<span class="md-ellipsis">
Development and design
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_2">
<span class="md-nav__icon md-icon"></span>
Development and design
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../design/" class="md-nav__link">
<span class="md-ellipsis">
Design
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../development/" class="md-nav__link">
<span class="md-ellipsis">
Setting up a development environment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../build_release/" class="md-nav__link">
<span class="md-ellipsis">
Build and release process
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../presidio_V2/" class="md-nav__link">
<span class="md-ellipsis">
Changes from V1 to V2
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_2_5" >
<label class="md-nav__link" for="__nav_7_2_5" id="__nav_7_2_5_label" tabindex="0">
<span class="md-ellipsis">
Python API reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_7_2_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_2_5">
<span class="md-nav__icon md-icon"></span>
Python API reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../api/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../api/analyzer_python/" class="md-nav__link">
<span class="md-ellipsis">
Presidio Analyzer Python API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../api/anonymizer_python/" class="md-nav__link">
<span class="md-ellipsis">
Presidio Anonymizer Python API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../api/image_redactor_python/" class="md-nav__link">
<span class="md-ellipsis">
Presidio Image Redactor Python API
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="https://microsoft.github.io/presidio/api-docs/api-docs.html" target="_blank" class="md-nav__link">
<span class="md-ellipsis">
REST API reference
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../community/" class="md-nav__link">
<span class="md-ellipsis">
Community
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../faq/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://huggingface.co/spaces/presidio/presidio_demo" target="_blank" class="md-nav__link">
<span class="md-ellipsis">
Demo
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#imports-and-set-up-openai-key" class="md-nav__link">
<span class="md-ellipsis">
Imports and set up OpenAI Key
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#define-request-for-the-openai-completion-service" class="md-nav__link">
<span class="md-ellipsis">
Define request for the OpenAI Completion service
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#de-identify-data-using-presidio-analyzer-and-anonymizer" class="md-nav__link">
<span class="md-ellipsis">
De-identify data using Presidio Analyzer and Anonymizer
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#create-prompt-instructions-text-to-manipulate" class="md-nav__link">
<span class="md-ellipsis">
Create prompt (instructions + text to manipulate)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#call-gpt-3" class="md-nav__link">
<span class="md-ellipsis">
Call GPT-3
</span>
</a>
<nav class="md-nav" aria-label="Call GPT-3">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#alternatively-run-on-a-list-of-template-sentences" class="md-nav__link">
<span class="md-ellipsis">
Alternatively, run on a list of template sentences:
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script>
(function() {
function addWidgetsRenderer() {
var requireJsScript = document.createElement('script');
requireJsScript.src = 'https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js';
var mimeElement = document.querySelector('script[type="application/vnd.jupyter.widget-view+json"]');
var jupyterWidgetsScript = document.createElement('script');
var widgetRendererSrc = 'https://unpkg.com/@jupyter-widgets/html-manager@*/dist/embed-amd.js';
var widgetState;
// Fallback for older version:
try {
widgetState = mimeElement && JSON.parse(mimeElement.innerHTML);
if (widgetState && (widgetState.version_major < 2 || !widgetState.version_major)) {
widgetRendererSrc = 'jupyter-js-widgets@*/dist/embed.js';
}
} catch(e) {}
jupyterWidgetsScript.src = widgetRendererSrc;
document.body.appendChild(requireJsScript);
document.body.appendChild(jupyterWidgetsScript);
}
document.addEventListener('DOMContentLoaded', addWidgetsRenderer);
}());
</script>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="c1"># download presidio</span>
<span class="err">!</span><span class="n">pip</span> <span class="n">install</span> <span class="n">presidio_analyzer</span> <span class="n">presidio_anonymizer</span>
<span class="err">!</span><span class="n">pip</span> <span class="n">install</span> <span class="n">openai</span> <span class="n">pandas</span>
<span class="err">!</span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">spacy</span> <span class="n">download</span> <span class="n">en_core_web_lg</span>
</code></pre></div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Path to notebook: <a href="https://www.github.com/microsoft/presidio/blob/main/docs/samples/python/GPT3_synth_data.ipynb">https://www.github.com/microsoft/presidio/blob/main/docs/samples/python/GPT3_synth_data.ipynb</a></p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="use-presidio-gpt-3-to-turn-real-text-into-fake-text">Use Presidio + GPT-3 to turn real text into fake text</h1>
<p>This notebook uses Presidio to turn text with PII into text where PII entities are replaced with placeholders, e.g. "<code>My name is David</code>" turns into "<code>My name is {{PERSON}}</code>". Then, it calls the OpenAI GPT-3 API to create a fake record which is based on the original one.</p>
<p>Flow:
1. <code>My friend David lives in Paris. He likes it.</code>
1. <code>My friend {{PERSON}} lives in {{CITY}}. He likes it.</code>
1. <code>My friend Lucy lives in Beirut. She likes it.</code></p>
<p>Note that OpenAI completion models could possibly detect PII values and replace them in one call, but it is suggested to validate that all PII entities are indeed detected.</p>
<h2 id="imports-and-set-up-openai-key">Imports and set up OpenAI Key</h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">pprint</span>
<span class="kn">from</span> <span class="nn">dotenv</span> <span class="kn">import</span> <span class="n">load_dotenv</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">openai</span>
<span class="n">load_dotenv</span><span class="p">()</span>
<span class="n">openai</span><span class="o">.</span><span class="n">api_key</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;OPENAI_KEY&quot;</span><span class="p">)</span> <span class="c1">#Or put explicitly in notebook. Find out more here: https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key</span>
</code></pre></div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="define-request-for-the-openai-completion-service">Define request for the OpenAI Completion service</h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">call_completion_model</span><span class="p">(</span><span class="n">prompt</span><span class="p">:</span><span class="nb">str</span><span class="p">,</span> <span class="n">model</span><span class="p">:</span><span class="nb">str</span><span class="o">=</span><span class="s2">&quot;text-davinci-003&quot;</span><span class="p">,</span> <span class="n">max_tokens</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">512</span><span class="p">)</span> <span class="o">-&amp;</span><span class="n">gt</span><span class="p">;</span><span class="nb">str</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Creates a request for the OpenAI Completion service and returns the response.</span>
<span class="sd"> :param prompt: The prompt for the completion model</span>
<span class="sd"> :param model: OpenAI model name</span>
<span class="sd"> :param max_tokens: Model&#39;s max tokens parameter</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span> <span class="o">=</span> <span class="n">openai</span><span class="o">.</span><span class="n">Completion</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
<span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span>
<span class="n">prompt</span><span class="o">=</span> <span class="n">prompt</span><span class="p">,</span>
<span class="n">max_tokens</span><span class="o">=</span><span class="n">max_tokens</span>
<span class="p">)</span>
<span class="k">return</span> <span class="n">response</span><span class="p">[</span><span class="s1">&#39;choices&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span>
</code></pre></div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="de-identify-data-using-presidio-analyzer-and-anonymizer">De-identify data using Presidio Analyzer and Anonymizer</h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">presidio_analyzer</span> <span class="kn">import</span> <span class="n">AnalyzerEngine</span>
<span class="kn">from</span> <span class="nn">presidio_anonymizer</span> <span class="kn">import</span> <span class="n">AnonymizerEngine</span>
<span class="n">analyzer</span> <span class="o">=</span> <span class="n">AnalyzerEngine</span><span class="p">()</span>
<span class="n">anonymizer</span> <span class="o">=</span> <span class="n">AnonymizerEngine</span><span class="p">()</span>
<span class="n">sample</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
<span class="s2">Hello, my name is David Johnson and I live in Maine.</span>
<span class="s2">My credit card number is 4095-2609-9393-4932 and my crypto wallet id is 16Yeky6GMjeNkAiNcBY7ZhrLoMSgg1BoyZ.</span>
<span class="s2">On September 18 I visited microsoft.com and sent an email to test@presidio.site, from the IP 192.168.0.1.</span>
<span class="s2">My passport: 191280342 and my phone number: (212) 555-1234.</span>
<span class="s2">This is a valid International Bank Account Number: IL150120690000003111111 . Can you please check the status on bank account 954567876544?</span>
<span class="s2">Kate&#39;s social security number is 078-05-1126. Her driver license? it is 1234567A.</span>
<span class="s2">&quot;&quot;&quot;</span>
<span class="n">results</span> <span class="o">=</span> <span class="n">analyzer</span><span class="o">.</span><span class="n">analyze</span><span class="p">(</span><span class="n">sample</span><span class="p">,</span> <span class="n">language</span><span class="o">=</span><span class="s2">&quot;en&quot;</span><span class="p">)</span>
<span class="n">anonymized</span> <span class="o">=</span> <span class="n">anonymizer</span><span class="o">.</span><span class="n">anonymize</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">sample</span><span class="p">,</span> <span class="n">analyzer_results</span><span class="o">=</span><span class="n">results</span><span class="p">)</span>
<span class="n">anonymized_text</span> <span class="o">=</span> <span class="n">anonymized</span><span class="o">.</span><span class="n">text</span>
<span class="nb">print</span><span class="p">(</span><span class="n">anonymized_text</span><span class="p">)</span>
</code></pre></div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>
Hello, my name is &lt;PERSON&gt; and I live in &lt;LOCATION&gt;.
My credit card number is &lt;CREDIT_CARD&gt; and my crypto wallet id is &lt;CRYPTO&gt;.
On &lt;DATE_TIME&gt; I visited &lt;URL&gt; and sent an email to &lt;EMAIL_ADDRESS&gt;, from the IP &lt;IP_ADDRESS&gt;.
My passport: &lt;US_PASSPORT&gt; and my phone number: &lt;PHONE_NUMBER&gt;.
This is a valid International Bank Account Number: &lt;IBAN_CODE&gt; . Can you please check the status on bank account &lt;US_BANK_NUMBER&gt;?
&lt;PERSON&gt;'s social security number is &lt;US_SSN&gt;. Her driver license? it is &lt;US_DRIVER_LICENSE&gt;.
</code>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="create-prompt-instructions-text-to-manipulate">Create prompt (instructions + text to manipulate)</h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">create_prompt</span><span class="p">(</span><span class="n">anonymized_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&amp;</span><span class="n">gt</span><span class="p">;</span> <span class="nb">str</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create the prompt with instructions to GPT-3.</span>
<span class="sd"> :param anonymized_text: Text with placeholders instead of PII values, e.g. My name is &lt;person&gt;.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">prompt</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> Your role is to create synthetic text based on de-identified text with placeholders instead of personally identifiable information.</span>
<span class="s2"> Replace the placeholders (e.g. , , </span><span class="se">{{</span><span class="s2">DATE</span><span class="se">}}</span><span class="s2">, </span><span class="se">{{</span><span class="s2">ip_address</span><span class="se">}}</span><span class="s2">) with fake values.</span>
<span class="s2"> Instructions:</span>
<span class="s2"> Use completely random numbers, so every digit is drawn between 0 and 9.</span>
<span class="s2"> Use realistic names that come from diverse genders, ethnicities and countries.</span>
<span class="s2"> If there are no placeholders, return the text as is and provide an answer.</span>
<span class="s2"> input: How do I change the limit on my credit card </span><span class="se">{{</span><span class="s2">credit_card_number</span><span class="se">}}</span><span class="s2">?</span>
<span class="s2"> output: How do I change the limit on my credit card 2539 3519 2345 1555?</span>
<span class="s2"> input: </span><span class="si">{</span><span class="n">anonymized_text</span><span class="si">}</span>
<span class="s2"> output:</span>
<span class="s2"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">prompt</span>
</code></pre></div>
</person></div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;This is the prompt with de-identified values:&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">create_prompt</span><span class="p">(</span><span class="n">anonymized_text</span><span class="p">))</span>
</code></pre></div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>This is the prompt with de-identified values:
Your role is to create synthetic text based on de-identified text with placeholders instead of personally identifiable information.
Replace the placeholders (e.g. , , {DATE}, {ip_address}) with fake values.
Instructions:
Use completely random numbers, so every digit is drawn between 0 and 9.
Use realistic names that come from diverse genders, ethnicities and countries.
If there are no placeholders, return the text as is and provide an answer.
If there is any additional PII/PHI in the sentence, replace it too.
input: How do I change the limit on my credit card {credit_card_number}?
output: How do I change the limit on my credit card 2539 3519 2345 1555?
input:
Hello, my name is &lt;PERSON&gt; and I live in &lt;LOCATION&gt;.
My credit card number is &lt;CREDIT_CARD&gt; and my crypto wallet id is &lt;CRYPTO&gt;.
On &lt;DATE_TIME&gt; I visited &lt;URL&gt; and sent an email to &lt;EMAIL_ADDRESS&gt;, from the IP &lt;IP_ADDRESS&gt;.
My passport: &lt;US_PASSPORT&gt; and my phone number: &lt;PHONE_NUMBER&gt;.
This is a valid International Bank Account Number: &lt;IBAN_CODE&gt; . Can you please check the status on bank account &lt;US_BANK_NUMBER&gt;?
&lt;PERSON&gt;'s social security number is &lt;US_SSN&gt;. Her driver license? it is &lt;US_DRIVER_LICENSE&gt;.
output:
</code>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="call-gpt-3">Call GPT-3</h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="n">gpt_res</span> <span class="o">=</span> <span class="n">call_completion_model</span><span class="p">(</span><span class="n">create_prompt</span><span class="p">(</span><span class="n">anonymized_text</span><span class="p">))</span>
</code></pre></div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="n">gpt_res</span><span class="p">)</span>
</code></pre></div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code> Hello, my name is Kalyn Carranza and I live in Kenya.
My credit card number is 9871 8047 5709 9872 and my crypto wallet id is FV7POW12.
On 12th August 2021, 12:31pm I visited http://www.example.com and sent an email to vrystrkbnb@example.com, from the IP 109.98.184.102.
My passport: 975-56-3481 and my phone number: 501-678-2198.
This is a valid International Bank Account Number: GB89 CPFX 4256 1763 8810 31 . Can you please check the status on bank account 855-31-6381?
Kalyn Carranza's social security number is 270-10-8543. Her driver license? it is 1183 2066 152 66.
</code>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="alternatively-run-on-a-list-of-template-sentences">Alternatively, run on a list of template sentences:</h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">urllib</span>
<span class="n">templates</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;https://raw.githubusercontent.com/microsoft/presidio-research/master/presidio_evaluator/data_generator/raw_data/templates.txt&quot;</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">urlopen</span><span class="p">(</span><span class="n">url</span><span class="p">):</span>
<span class="n">templates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">))</span>
</code></pre></div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Example templates:&quot;</span><span class="p">)</span>
<span class="n">templates</span><span class="p">[:</span><span class="mi">5</span><span class="p">]</span>
</code></pre></div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>Example templates:
</code>
</pre>
</div>
</div>
<div class="output_area">
<div class="output_text output_subarea output_execute_result">
<pre>
<code>['I want to increase limit on my card # {{credit_card_number}} for certain duration of time. is it possible?\n',
'My credit card {{credit_card_number}} has been lost, Can I request you to block it.\n',
'Need to change billing date of my card {{credit_card_number}}\n',
'I want to update my primary and secondary address to the same: {{address}}\n',
"In case of my child's account, we need to add {{person}} as guardian\n"]</code>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">time</span>
<span class="n">pp</span> <span class="o">=</span> <span class="n">pprint</span><span class="o">.</span><span class="n">PrettyPrinter</span><span class="p">(</span><span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">110</span><span class="p">)</span>
<span class="n">sentences</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">template</span> <span class="ow">in</span> <span class="n">templates</span><span class="p">:</span>
<span class="n">synth_sentence</span> <span class="o">=</span> <span class="n">call_completion_model</span><span class="p">(</span><span class="n">create_prompt</span><span class="p">(</span><span class="n">template</span><span class="p">))</span>
<span class="n">sentence_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;original&quot;</span><span class="p">:</span> <span class="n">template</span><span class="p">,</span> <span class="s2">&quot;synthetic&quot;</span><span class="p">:</span><span class="n">synth_sentence</span><span class="o">.</span><span class="n">strip</span><span class="p">()}</span>
<span class="n">sentences</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sentence_dict</span><span class="p">)</span>
<span class="n">pp</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">sentence_dict</span><span class="p">)</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># wait to not get blocked by service (only applicable for the free tier)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;--------------&quot;</span><span class="p">)</span>
</code></pre></div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>{ 'original': 'I want to increase limit on my card # {{credit_card_number}} for certain duration of time. is '
'it possible?\n',
'synthetic': 'I want to increase limit on my card # 2539 3519 2345 1555 for certain duration of time. Is '
'it possible?'}
--------------
{ 'original': 'My credit card {{credit_card_number}} has been lost, Can I request you to block it.\n',
'synthetic': 'My credit card 2539 3519 2345 1555 has been lost, Can I request you to block it.'}
--------------
{ 'original': 'Need to change billing date of my card {{credit_card_number}}\n',
'synthetic': 'Need to change billing date of my card 2539 3519 2345 1555?'}
--------------
{ 'original': 'I want to update my primary and secondary address to the same: {{address}}\n',
'synthetic': 'I want to update my primary and secondary address to the same: 3241 Tulip Lane, London, NW9 '
'5RX.'}
--------------
{ 'original': "In case of my child's account, we need to add {{person}} as guardian\n",
'synthetic': "In case of my child's account, we need to add Abigail Jones as guardian."}
--------------
{ 'original': 'Are there any charges applied for money transfer from {{iban}} to other bank accounts\n',
'synthetic': 'Are there any charges applied for money transfer from GB55TRRX92363841637179 to other bank '
'accounts?'}
--------------
{ 'original': 'Are there any charges applied to withdraw money from ATM with the card '
'{{credit_card_number}}\n',
'synthetic': 'Are there any charges applied to withdraw money from ATM with the card 2539 3519 2345 1555?'}
--------------
{ 'original': 'Not getting bank documents to my address. Can you please validate the following? '
'{{address}}\n',
'synthetic': 'Not getting bank documents to my address. Can you please validate the following? 943 Elm '
'Street, Fort Wayne, IN 46825.'}
--------------
{ 'original': 'Please update the billing address with {{address}} for this card: {{credit_card_number}}\n',
'synthetic': 'Please update the billing address with 3989 Elm Street, San Francisco, CA 94103 for this '
'card: 2539 3519 2345 1555.'}
--------------
{ 'original': 'Need to see last 10 transaction of card {{credit_card_number}}\n',
'synthetic': 'Need to see last 10 transactions of card 2539 3519 2345 1555'}
--------------
{ 'original': 'I have lost my card {{credit_card_number}}. Could you please block my credit card ASAP ? My '
'name is {{person}}.\n',
'synthetic': 'I have lost my card 2539 3519 2345 1555. Could you please block my credit card ASAP ? My '
'name is John Smith.'}
--------------
{ 'original': "My card {{credit_card_number}} is expiring this month. Please let me know process to it's "
'extend validity.\n',
'synthetic': "My card 2539 3519 2345 1555 is expiring this month. Please let me know process to it's "
'extend validity.'}
--------------
{ 'original': "I have done an online order but didn't get any message on my registered {{phone_number}}. "
'Could you please look into it ?\n',
'synthetic': "I have done an online order but didn't get any message on my registered (502) 183-3752. "
'Could you please look into it?'}
--------------
{ 'original': 'What is procedure to redeem points won on credit card {{credit_card_number}} transactions ?\n',
'synthetic': 'What is procedure to redeem points won on credit card 2539 3519 2345 1555 transactions?'}
--------------
{ 'original': 'My card {{credit_card_number}} expires soon <20> when will I get a new one?\n',
'synthetic': 'My card 2539 3519 2345 1555 expires soon <20> when will I get a new one?'}
--------------
{ 'original': 'How do I check my balance on my credit card?\n',
'synthetic': 'How do I check my balance on my credit card?'}
--------------
{ 'original': 'Could I change the payment due date of my credit card?\n',
'synthetic': 'Could I change the payment due date of my credit card?'}
--------------
{ 'original': 'How can I request a new credit card pin ?\n',
'synthetic': 'How can I request a new credit card pin?'}
--------------
{ 'original': 'Can I withdraw cash using my card {{credit_card_number}} at aTM center ?\n',
'synthetic': 'Can I withdraw cash using my card 2539 3519 2345 1555 at ATM center?'}
--------------
{ 'original': 'How do I change the address linked to my credit card to {{address}}?\n',
'synthetic': 'How do I change the address linked to my credit card to 1325 Valley View Rd, Yelm, WA 98597?'}
--------------
{ 'original': 'How do I open my credit card statement?\n',
'synthetic': 'How do I open my credit card statement?'}
--------------
{'original': "I'm originally from {{country}}\n", 'synthetic': "I'm originally from Canada."}
--------------
{ 'original': 'I will be travelling to {{country}} next week, so I need my passport to be ready by then\n',
'synthetic': 'I will be travelling to Mexico next week, so I need my passport to be ready by then.'}
--------------
{'original': "Who's coming to {{country}} with me?\n", 'synthetic': "Who's coming to Mexico with me?"}
--------------
{'original': '{{country}} was super fun to visit!\n', 'synthetic': 'France was super fun to visit!'}
--------------
{ 'original': 'Could you please email me the statement for last month , my credit card number is '
'{{credit_card_number}}?\n',
'synthetic': 'Could you please email me the statement for last month, my credit card number is 2539 3519 '
'2345 1555?'}
--------------
{ 'original': 'Could you please send me the last billed amount for cc {{credit_card_number}} on my e-mail '
'{{email}}?\n',
'synthetic': 'Could you please send me the last billed amount for cc 2539 3519 2345 1555 on my email '
'sue.perkins@example.com?'}
--------------
{ 'original': 'How do I change my address to {{address}} for post mail?\n',
'synthetic': 'How do I change my address to 2514 Golden Street, San Diego, CA 90203 for post mail?'}
--------------
{ 'original': 'My name appears incorrectly on credit card statement could you please correct it to '
'{{prefix_male}} {{name_male}}?\n',
'synthetic': 'My name appears incorrectly on credit card statement could you please correct it to Mr. '
'Gregor?'}
--------------
{ 'original': 'My name appears incorrectly on credit card statement could you please correct it to '
'{{prefix_female}} {{name_female}}?\n',
'synthetic': 'My name appears incorrectly on credit card statement could you please correct it to Ms. '
'Emma?'}
--------------
{ 'original': 'card number {{credit_card_number}} is lost, can you please send a new one to {{address}}? I '
'am in {{city}} for a business trip\n',
'synthetic': 'card number 2539 3519 2345 1555 is lost, can you please send a new one to 16 Meadow Lane, '
'Hicksville, NY 11801? I am in New York City for a business trip.'}
--------------
{ 'original': "Please transfer all funds from my account to this hackers' {{email}}\n",
'synthetic': "Please transfer all funds from my account to this hackers' mitchellejess@gmail.com"}
--------------
{ 'original': "I can't browse to your site, keep getting address {{ip_address}} blocked error\n",
'synthetic': "I can't browse to your site, keep getting address 135.238.125.181 blocked error."}
--------------
{ 'original': 'My religion does not allow speaking to bots, they are evil and hacked by the Devil\n',
'synthetic': 'My religion does not allow speaking to bots, they are evil and hacked by the Devil'}
--------------
{ 'original': "Excuse me, Sir bot, but I really don't like this tone\n",
'synthetic': "Excuse me, Sir bot, but I really don't like this tone"}
--------------
{ 'original': "WHAT ??? I DON'T KNOW WHAT TO PRESS NEXT!!! ? !! ?!\n",
'synthetic': "WHAT ??? I DON'T KNOW WHAT TO PRESS NEXT!!! ? !! ?!"}
--------------
{ 'original': "Please have the manager call me at {{phone_number}} I'd like to join accounts with ms. "
'{{first_name}}\n',
'synthetic': "Please have the manager call me at 443-214-5568 I'd like to join accounts with ms. Tanya."}
</code>
</pre>
</div>
</div>
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>--------------
{ 'original': 'Inject SELECT * FROM Users WHERE client_ip = ?%//!%20\\|{{ip_address}}|%20/\n',
'synthetic': 'Inject SELECT * FROM Users WHERE client_ip = 192.162.94.21'}
--------------
{ 'original': '{{first_name}}, can I please speak to your boss?\n',
'synthetic': 'Abigail, can I please speak to your boss?'}
--------------
{ 'original': 'May I request to have the statement sent to {{address}}?\n',
'synthetic': 'May I request to have the statement sent to 14 Maple Street, Chicago, IL 60647?'}
--------------
{ 'original': "Will my account stay active? It's under my partner's name {{person}}\n",
'synthetic': "Will my account stay active? It's under my partner's name John Smith."}
--------------
{'original': 'What are my options?\n', 'synthetic': 'What are my options?'}
--------------
{ 'original': 'Bot: Where would you like this to be sent to? User: {{address}}\n',
'synthetic': 'Bot: Where would you like this to be sent to? User: 369 Center Street, New York, NY 10018'}
--------------
{ 'original': "Bot: What's the name on the account? User: {{person}}\n",
'synthetic': "Bot: What's the name on the account? User: John Smith"}
--------------
{ 'original': 'I would like to stop receiving messages to {{phone_number}}\n',
'synthetic': 'I would like to stop receiving messages to 714-572-8764.'}
--------------
{'original': 'CAN I SPEAK TO A REAL PERSON?!?!\n', 'synthetic': 'CAN I SPEAK TO A REAL PERSON?!?!'}
--------------
{ 'original': "I'll meet you at {{address}} after the concert.\n",
'synthetic': "I'll meet you at 4465 West Street after the concert."}
--------------
{ 'original': 'I would like to remove my kid {{first_name}} from the will. How do I do that?\n',
'synthetic': 'I would like to remove my kid Sarah from the will. How do I do that?'}
--------------
{ 'original': 'The name in the account is not correct, please change it to {{person}}\n',
'synthetic': 'The name in the account is not correct, please change it to Mary Smith.'}
--------------
{ 'original': 'Hello I moved, please update my new address is {{address}}\n',
'synthetic': 'Hello I moved, please update my new address is 14 Benson Street, Dolton, Illinois, 60419.'}
--------------
{ 'original': 'I need to add my addresses, here they are: {{address}}, and {{address}}\n',
'synthetic': 'I need to add my addresses, here they are: 4284 Taloncourt Road, Lake Travis, TX 76884, and '
'12 Needle Street, Lawrenceburg, IN 47025.'}
--------------
{ 'original': 'Please send my portfolio to this email {{email}}\n',
'synthetic': 'Please send my portfolio to this email johnsmith@example.com'}
--------------
{ 'original': 'Hello, this is {{prefix_male}} {{name_male}}. Who are you?\n',
'synthetic': 'Hello, this is Mr. Jackson. Who are you?'}
--------------
{ 'original': 'I want to add {{person}} as a beneficiary to my account\n',
'synthetic': 'I want to add Mary Smith as a beneficiary to my account.'}
--------------
{ 'original': 'I want to cancel my card {{credit_card_number}} because I lost it\n',
'synthetic': 'I want to cancel my card 2539 3519 2345 1555 because I lost it'}
--------------
{ 'original': 'Please block card no {{credit_card_number}}\n',
'synthetic': 'Please block card no 2539 3519 2345 1555'}
--------------
{ 'original': 'What is the limit for card {{credit_card_number}}?\n',
'synthetic': 'What is the limit for card 2539 3519 2345 1555?'}
--------------
{ 'original': 'Can someone call me on {{phone_number}}? I have some questions about opening an account.\n',
'synthetic': 'Can someone call me on 639-243-7534? I have some questions about opening an account.'}
--------------
{'original': 'My name is {{first_name}}\n', 'synthetic': 'My name is Olivia.'}
--------------
{ 'original': "I'm moving out of the country, so please cancel my subscription\n",
'synthetic': "I'm moving out of the country, so please cancel my subscription."}
--------------
{ 'original': 'My name is {{person}} but everyone calls me {{first_name}}\n',
'synthetic': 'My name is Zara Smith but everyone calls me Zara.'}
--------------
{ 'original': "Please tell me your date of birth. It's {{date_of_birth}}\n",
'synthetic': "Please tell me your date of birth. It's May 18th 1996."}
--------------
{ 'original': 'You said your email is {{email}}. Is that correct?\n',
'synthetic': 'You said your email is jane.doe99@example.com. Is that correct?'}
--------------
{ 'original': 'I once lived in {{address}}. I now live in {{address}}\n',
'synthetic': 'I once lived in 189 Maple Street. I now live in 45 McLeod Avenue.'}
--------------
{ 'original': "I'd like to call a taxi to {{address}}. Please call me when you're here.\n",
'synthetic': "I'd like to call a taxi to 125 Washington Street. Please call me when you're here."}
--------------
{ 'original': 'Please charge my credit card. Number is {{credit_card_number}}\n',
'synthetic': 'Please charge my credit card. Number is 9147 3623 4882 7568.'}
--------------
{'original': "What's your email? {{email}}\n", 'synthetic': "What's your email? janet.smith@example.com"}
--------------
{ 'original': "What's your credit card? {{credit_card_number}}\n",
'synthetic': "What's your credit card? 6527 4235 1093 1522?"}
--------------
{'original': "What's your name? {{person}}\n", 'synthetic': "What's your name? Ibrahim Karim"}
--------------
{'original': "What's your last name? {{last_name}}\n", 'synthetic': "What's your last name? Lopez"}
--------------
{ 'original': 'How can we reach you? You can call {{phone_number}}\n',
'synthetic': 'How can we reach you? You can call 029 7783 8252.'}
--------------
{ 'original': "I'd like it to be sent to {{address}}\n",
'synthetic': "I'd like it to be sent to 1234 Smith Street, Chicago, IL 60616."}
--------------
{'original': 'Meet me at {{address}}\n', 'synthetic': 'Meet me at 328 Anderson Street, Boston, MA 02109.'}
--------------
{ 'original': 'The restaurant is located at {{address}}. It serves great {{nationality}} food.\n',
'synthetic': 'The restaurant is located at 1214 W. Main Ave. It serves great Italian food.'}
--------------
{ 'original': "So where are we meeting? There's this nice new {{nationality}} place downtown. Cool, what's "
"the address? Oh do they serve vegan stuff? It's in {{address}}\n",
'synthetic': "So where are we meeting? There's this nice new Mexican place downtown. Cool, what's the "
"address? Oh do they serve vegan stuff? It's in 9083 Holcomb Street."}
--------------
{ 'original': "Hi {{first_name}}, I'm contacting you about a problem I have with sending a wire transfer "
'using this IBAN {{iban}}\n',
'synthetic': "Hi Kim, I'm contacting you about a problem I have with sending a wire transfer using this "
'IBAN DE56 8123 6888 0139 8956 61.'}
--------------
{ 'original': 'She was born on {{date_of_birth}}. Her maiden name is {{last_name}}\n',
'synthetic': 'She was born on 02/15/1965. Her maiden name is Garcia.'}
--------------
{'original': 'Sometimes people call me {{first_name}}\n', 'synthetic': 'Sometimes people call me Evan'}
--------------
{'original': "Maybe it's under {{person}}\n", 'synthetic': "Maybe it's under Malik Robinson"}
--------------
{'original': "It's like that since {{date_of_birth}}\n", 'synthetic': "It's like that since 06/14/1988"}
--------------
{ 'original': 'Just posted a photo {{url}}\n',
'synthetic': 'Just posted a photo http://www.example.com/q3jx1zgca2.'}
--------------
{'original': 'My website is {{url}}\n', 'synthetic': 'My website is www.synthetictestwebsite.com'}
--------------
{'original': 'My IBAN is {{iban}}\n', 'synthetic': 'My IBAN is FR14 2004 1010 0505 0001 3M02 606.'}
--------------
{ 'original': "I've shared files with you {{url}}\n",
'synthetic': "I've shared files with you https://www.myfilesharing.com/agfsosid90"}
--------------
{'original': 'I work for {{organization}}\n', 'synthetic': 'I work for CorporationX.'}
--------------
{ 'original': '{{person}} from {{organization}} is the keynote speaker\n',
'synthetic': 'John Smith from Harvard University is the keynote speaker.'}
--------------
{'original': '{{first_name}} is from {{organization}}\n', 'synthetic': 'Maxwell is from Acme Corporation.'}
</code>
</pre>
</div>
</div>
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>--------------
{ 'original': 'The address of {{organization}} is {{address}}\n',
'synthetic': 'The address of Acme Corporation is 1020 Grand Avenue, Los Angeles, CA 90015.'}
--------------
{ 'original': 'His social security number is {{ssn}}\n',
'synthetic': 'His social security number is 271-97-6469.'}
--------------
{'original': "Here's my SSN: {{ssn}}\n", 'synthetic': "Here's my SSN: 697-18-3566"}
--------------
{ 'original': '{{first_name_nonbinary}} is a very sympathetic person. They are also good listeners.\n',
'synthetic': 'Piper is a very sympathetic person. They are also good listeners.'}
--------------
{ 'original': '{{first_name}} is very reliable. You can always depend on him.\n',
'synthetic': 'Fred is very reliable. You can always depend on him.'}
--------------
{'original': 'Why is {{first_name}} so impulsive?\n', 'synthetic': 'Why is Daniella so impulsive?'}
--------------
{ 'original': '{{person}} will be talking in the conference\n',
'synthetic': 'Sally Smith will be talking in the conference.'}
--------------
{'original': 'have you heard {{person}} speak yet?\n', 'synthetic': 'Have you heard Keira Emerson speak yet?'}
--------------
{ 'original': 'Have you been to a {{person}} concert before?\n',
'synthetic': 'Have you been to a John Smith concert before?'}
--------------
{ 'original': "I'm so jealous! said {{first_name}} to {{first_name}}\n",
'synthetic': "I'm so jealous! said Veronika to Trevor."}
--------------
{ 'original': 'The true gender of {{first_name}} has been under debate for years, but the riff and building '
'energy is a rock masterpiece regardless.\n',
'synthetic': 'The true gender of Miguel has been under debate for years, but the riff and building energy '
'is a rock masterpiece regardless.'}
--------------
{ 'original': 'For my take on {{prefix_female}} {{last_name_female}}, see Guilty Pleasures: 5 Musicians Of '
"The 70s You're Supposed To Hate (But Secretly Love)\n",
'synthetic': "For my take on Mrs. Miller, see Guilty Pleasures: 5 Musicians Of The 70s You're Supposed To "
'Hate (But Secretly Love)'}
--------------
{ 'original': "Unlike the {{last_name}} novel, it's not about necrophilia. What it is about, I suppose is "
"anyone's guess. A brilliant piece of baroque pop.\n",
'synthetic': "Unlike the Smith novel, it's not about necrophilia. What it is about, I suppose is anyone's "
'guess. A brilliant piece of baroque pop.'}
--------------
{ 'original': "One of the most depressing songs on the list. He's injured from the waist down from "
"{{country}}, but {{first_name}} just has to get laid. Don't go to town, {{first_name}}!\n",
'synthetic': "One of the most depressing songs on the list. He's injured from the waist down from Uganda, "
"but Stacey just has to get laid. Don't go to town, Stacey!"}
--------------
{ 'original': 'Is there a better crafted pop song on this list? {{last_name}} and {{last_name}} were '
'precision engineers.\n',
'synthetic': 'Is there a better crafted pop song on this list? Smith and Jones were precision engineers.'}
--------------
{ 'original': 'C\'mon, sing it with me: "You picked a fine time to leave me {{first_name}}, four hungry '
'children and a crop in the field..."\n',
'synthetic': 'C\'mon, sing it with me: "You picked a fine time to leave me Lucas, four hungry children and '
'a crop in the field..."'}
--------------
{ 'original': "A tribute to {{person}} sadly, she wasn't impressed.\n",
'synthetic': "A tribute to Paula Harris sadly, she wasn't impressed."}
--------------
{ 'original': "When they weren't singing about Hobbits, satanic felines and interstellar journeys, they were "
"singing about the verses from {{person}}'s Cautionary Tales. Is there a better example of "
'unbridled creativity than early {{last_name}}?\n',
'synthetic': "When they weren't singing about Hobbits, satanic felines and interstellar journeys, they "
"were singing about the verses from Sally Smith's Cautionary Tales. Is there a better example "
"of unbridled creativity than early Jones'?"}
--------------
{ 'original': 'A great song made even greater by a mandolin coda (not by {{person}}).\n',
'synthetic': 'A great song made even greater by a mandolin coda (not by Justin Bieber).'}
--------------
{ 'original': '{{name_male}} listed his top 20 songs for Entertainment Weekly and had the balls to list this '
'song at #15. (What did he put at #1 you ask? Answer:"Tube Snake Boogie" by {{person}} go '
'figure)\n',
'synthetic': 'John listed his top 20 songs for Entertainment Weekly and had the balls to list this song at '
'#15. (What did he put at #1 you ask? Answer:"Tube Snake Boogie" by ZZ Top go figure)'}
--------------
{ 'original': "From the film {{nationality}} graffiti (also features {{person}}. What's not to love?\n",
'synthetic': "From the film Canadian graffiti (also features Zakari Rigori. What's not to love?"}
--------------
{ 'original': 'You can tell {{first_name}} was a huge {{person}} fan. Written when he was {{age}}.\n',
'synthetic': 'You can tell Isabella was a huge basketball fan. Written when she was 19.'}
--------------
{ 'original': "This song by ex-Zombie {{last_name}} is a perfect example of why you shouldn't concentrate on "
'the order of this list. An argument could be made that this should be at number one, and I '
"wouldn't argue with it.\n",
'synthetic': "This song by ex-Zombie Williams is a perfect example of why you shouldn't concentrate on the "
'order of this list. An argument could be made that this should be at number one, and I '
"wouldn't argue with it."}
--------------
{ 'original': 'The title refers to {{street_name}} street in {{city}}. It was on this street that many of '
'the clubs where Metallica first played were situated. "Battery is found in me" shows that '
'these early shows on {{street_name}} Street were important to them. Battery is where "lunacy '
'finds you" and you "smash through the boundaries."\n',
'synthetic': 'The title refers to Washington Street in Chicago. It was on this street that many of the '
'clubs where Metallica first played were situated. "Battery is found in me" shows that these '
'early shows on Washington Street were important to them. Battery is where "lunacy finds you" '
'and you "smash through the boundaries."'}
--------------
{ 'original': 'Blink-182 pay tribute here to the {{country}}. Producer {{person}} explained to Fuse TV: "We '
"all liked the idea of writing a song about our state, where we live and love. To me it's the "
'most beautiful place in the world, this song was us giving credit to how lucky we are to have '
'lived here and grown up here, raising families here, the whole thing."\n',
'synthetic': 'Blink-182 pay tribute here to the United States. Producer Kim Johnson explained to Fuse TV: '
'"We all liked the idea of writing a song about our state, where we live and love. To me '
"it's the most beautiful place in the world, this song was us giving credit to how lucky we "
'are to have lived here and grown up here, raising families here, the whole thing."'}
--------------
{ 'original': 'It may be too that {{last_name}} was influenced by an earlier song, "Carry Me Back To '
'{{country}}," which was arranged and sung by {{person}} in {{year}} (though {{last_name}}\'s '
'song was actually about a boat!).\n',
'synthetic': 'It may be too that Jenkins was influenced by an earlier song, "Carry Me Back To Trinidad," '
"which was arranged and sung by Mark Twain in 1901 (though Jenkins's song was actually about "
'a boat!).'}
--------------
{ 'original': 'The {{person}} version recorded for {{organization}} became the first celebrity recording by '
'a classical musician to sell one million copies. The song was awarded the seventh gold disc '
'ever granted.\n',
'synthetic': 'The Helen Smith version recorded for Universal Music Group became the first celebrity '
'recording by a classical musician to sell one million copies. The song was awarded the '
'seventh gold disc ever granted.'}
</code>
</pre>
</div>
</div>
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>--------------
{ 'original': 'In {{country}} they have company songs, musical expressions of employee loyalty sung by '
'salarymen. Unfortunately, as regular RR commenter {{person}} points out, "most are '
'horrible".\n',
'synthetic': 'In Japan they have company songs, musical expressions of employee loyalty sung by salarymen. '
'Unfortunately, as regular RR commenter Hannah Jackson points out, "most are horrible".'}
--------------
{ 'original': '"The big three" of The Big Three Killed My Baby are the car manufacturers that dominate the '
"economy of the White Stripes' home city {{city}}: {{organization}}, {{organization}} and "
'{{organization}}. "Don\'t feed me planned obsolescence," says {{person}} in an '
'uncharacteristically political song, lamenting the demise of the unions in the 60s.\n',
'synthetic': '"The big three" of The Big Three Killed My Baby are the car manufacturers that dominate the '
'economy of the White Stripes\' home city Detroit: Ford, General Motors and Chrysler. "Don\'t '
'feed me planned obsolescence," says Thomas Johnson in an uncharacteristically political '
'song, lamenting the demise of the unions in the 60s.'}
--------------
{ 'original': '{{organization}} songwriter {{name_female}} employs corporate lingo in the first verse of her '
'{{organization}} resignation Letter\n',
'synthetic': 'Acme Corporation songwriter Hannah Smith employs corporate lingo in the first verse of her '
'Acme Corporation resignation Letter.'}
--------------
{ 'original': 'Mission Statement: This non-profit founded by radio executives "serves as an advocate for the '
'value of music" and "supports its songwriters, composers and publishers by taking care of an '
'important aspect of their careers getting paid," according to the {{organization}} website. '
'They offer blanket music licenses to businesses and organizations that allow them to play '
'nearly 13 million musical works.\n',
'synthetic': 'Mission Statement: This non-profit founded by radio executives "serves as an advocate for '
'the value of music" and "supports its songwriters, composers and publishers by taking care '
'of an important aspect of their careers getting paid," according to the Music Alliance '
'website. They offer blanket music licenses to businesses and organizations that allow them '
'to play nearly 13 million musical works.'}
--------------
{ 'original': 'The {{organization}} Orchestra was founded in {{year}}. Since then, it has grown from a '
'volunteer community orchestra to a fully professional orchestra serving Southern '
'{{country}}\n',
'synthetic': 'The Chaz Symphony Orchestra was founded in 2015. Since then, it has grown from a volunteer '
'community orchestra to a fully professional orchestra serving Southern France.'}
--------------
{ 'original': 'Celebrating its 10th year in {{city}}, {{organization}} is a 501(c)3 that invites songwriters '
'from around the world to {{city}} to share the universal language of music in collaborations '
'designed to bridge cultures, build friendships and cultivate peace.\n',
'synthetic': 'Celebrating its 10th year in Honolulu, Artslana is a 501(c)3 that invites songwriters from '
'around the world to Honolulu to share the universal language of music in collaborations '
'designed to bridge cultures, build friendships and cultivate peace.'}
--------------
{ 'original': '{{organization}} is the brainchild of our 3 founders: {{last_name}}, {{last_name}} and '
'{{last_name}}. The idea was born (on the beach) while they were constructing a website to be '
'the basis of another start-up idea.\n',
'synthetic': 'Acme Co. is the brainchild of our 3 founders: Smith, Nguyen and Takahashi. The idea was born '
'(on the beach) while they were constructing a website to be the basis of another start-up '
'idea.'}
--------------
{ 'original': '{{organization}} is an {{nationality}} multinational investment bank and financial services '
'company\n',
'synthetic': 'Goldman Sachs is an American multinational investment bank and financial services company.'}
--------------
{ 'original': 'Zoolander is a {{year}} {{nationality}} action-comedy film directed by {{person}} and '
'starring {{last_name}}\n',
'synthetic': 'Zoolander is a 2001 American action-comedy film directed by Ben Stiller and starring '
'Stiller.'}
--------------
{ 'original': 'During {{year}}, {{organization}} invested heavily in new microprocessor designs fostering '
'the rapid growth of the computer industry.\n',
'synthetic': 'During 2019, Acme Technologies invested heavily in new microprocessor designs fostering the '
'rapid growth of the computer industry.'}
--------------
{ 'original': 'On {{date_time}}, the {{nationality}} government formally began the process of withdrawal by '
'invoking Article 50 of the Treaty on European Union\n',
'synthetic': 'On June 23rd, 2020, the British government formally began the process of withdrawal by '
'invoking Article 50 of the Treaty on European Union.'}
--------------
{ 'original': '{{first_name}} shouted at {{first_name}}: "What are you doing here?"\n',
'synthetic': 'Shadeed shouted at Latonya: "What are you doing here?"'}
--------------
{ 'original': '{{first_name}} spent a year at {{organization}} as the assistant to {{person}}, and the '
'following year at {{organization}} in {{city}}, which later became {{organization}} in '
'{{year}}.\n',
'synthetic': 'Nina spent a year at Kingsley Academy as the assistant to Dean Roberts, and the following '
'year at Brighty Design in San Francisco, which later became Thompkins Designs in 2005.'}
--------------
{ 'original': '{{last_name}} began writing as a teenager, publishing her first story, "The Dimensions of a '
'Shadow", in {{year}} while studying English and journalism at the University of {{city}}.\n',
'synthetic': 'Smith began writing as a teenager, publishing her first story, "The Dimensions of a Shadow", '
'in 1994 while studying English and journalism at the University of Chicago.'}
--------------
{ 'original': "My driver's license number is {{us_driver_license}}\n",
'synthetic': "My driver's license number is VFJ600DN5051EA1N"}
--------------
{ 'original': '{{person}}\\n\\n{{building_number}} {{street_name}}\\n {{secondary_address}}\\n {{city}}\\n '
'{{country}} {{postcode}}\n',
'synthetic': 'John Smith \n123 Main Street \nApartment 6 \nNew York City \nUSA 12254'}
--------------
{ 'original': '{{person}}\\n\\n{{building_number}} {{street_name}}\\n {{secondary_address}}\\n '
'{{city}}\\n\\n {{country}} {{postcode}}\n',
'synthetic': 'John Smith\n 843 Easton Street\n Suite 3\n Hamden\n \nUnited States 12345'}
--------------
{ 'original': '{{prefix_female}} {{name_female}} {{secondary_address}} {{building_number}} '
'{{street_name}}\\n{{city}} {{state_abbr}} {{zipcode}}\n',
'synthetic': 'Ms. Allison Grobman Apt 12 975 Hamilton Street\\\\New York NY 11111'}
--------------
{ 'original': '{{building_number}} {{street_name}}\\n {{secondary_address}}\\n {{city}}\\n {{country}} '
'{{postcode}}\n',
'synthetic': '456 Maple Street\\n Apt 5D\\n San Francisco \\n USA 94110'}
--------------
{ 'original': 'The corner of {street_name} and {street_name}\n',
'synthetic': 'The corner of Johnson Street and Monroe Avenue'}
--------------
{ 'original': 'The restaurant is at {{building_number}} {{street_name}}\n',
'synthetic': 'The restaurant is at 1243 Willow Street.'}
--------------
{'original': 'My friend lives in {{city}}\n', 'synthetic': 'My friend lives in Cairo.'}
--------------
{ 'original': '{{first_name}} lives on {{street_name}} street.\n',
'synthetic': 'Maria lives on Liberty Street.'}
</code>
</pre>
</div>
</div>
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>--------------
{ 'original': '{{name}} lives at {{building_number}} {{street_name}}, {{city}}\n',
'synthetic': 'John Smith lives at 635 Poplar Street, Houston'}
--------------
{ 'original': '{{first_name_male}} had given {{first_name}} his address: {{building_number}} '
'{{street_name}}\n',
'synthetic': 'Adam had given Sarah his address: 44 Apple Street'}
--------------
{ 'original': '{{first_name_male}} had given {{first_name}} his address: {{building_number}} '
'{{street_name}}, {{city}}\n',
'synthetic': 'David had given Emma his address: 515 Elm Street, Camden.'}
--------------
{ 'original': 'What is your address? it is {{address}}\n',
'synthetic': 'What is your address? it is 3498 Allensby Street, Los Angeles, CA 90011.'}
--------------
{'original': 'We moved here from {{city}}\n', 'synthetic': 'We moved here from Paris.'}
--------------
{'original': 'We moved here from {{country}}\n', 'synthetic': 'We moved here from Venezuela.'}
--------------
{ 'original': '{{person}}\\n\\n{{building_number}} {{street_name}}\\n {{secondary_address}}\\n {{city}}\\n '
'{{country}} {{postcode}}\\n{{phone_number}}-Office\\,{{phone_number}}-Fax\n',
'synthetic': 'Jessica Thompson\n'
' 8745 West Drive\n'
' Suite 1402\n'
' Brooklyn, NY USA 12009\n'
' 789-534-9921-Office, 567-945-0023-Fax'}
--------------
{ 'original': '{{person}}\\n{{job}}\\n{{organization}}\\n{{address}}\n',
'synthetic': 'John Smith\\nAccountant\\nGlobalTech Solutions\\n25 Speedwell Street, Richmond, VA 23223'}
--------------
{ 'original': 'Our offices are located at {{address}}\n',
'synthetic': 'Our offices are located at 1234 Main St, Los Angeles, CA 91234.'}
--------------
{ 'original': 'Please return to {{address}} in case of an issue.\n',
'synthetic': 'Please return to 123 Cherry Street, El Monte, CA 91731 in case of an issue.'}
--------------
{ 'original': '{{organization}}\\n\\n{{address}}\n',
'synthetic': 'ABC Inc.\n 1234 Main Street, Anytown, ST 12345'}
--------------
{ 'original': 'The {{organization}} office is at {{address}}\n',
'synthetic': 'The ABC Corporation office is at 123 Redwood Street, Anytown, USA.'}
--------------
{ 'original': '{{name}}\\n{{organization}}\\n{{address}}\\n{{phone_number}} office\\n{{phone_number}} '
'fax\\n{{phone_number}} mobile\\n\n',
'synthetic': 'Larry Fernandez\\nStar Enterprises\\n421 5th Avenue, Los Angeles, CA 90012\\n123-456-7890 '
'office\\n456-789-0123 fax\\n256-454-2397 mobile\\n'}
--------------
{ 'original': '{{name}}\\n{{organization}}\\n{{address}}\\nMobile: {{phone_number}}\\nDesk: '
'{{phone_number}}\\nFax: {{phone_number}}\\n\n',
'synthetic': 'John Brown\n'
' ABC Consulting\n'
' 5th St., Suite 116, LA CA 90004\n'
' Mobile: 213-294-4497\n'
' Desk: 424-348-1275\n'
' Fax: 323-456-2545'}
--------------
{ 'original': 'Billing address: {{name}}\\n {{building_number}} {{street_name}} '
'{{secondary_address}}\\n {{city}}\\n {{state_abbr}}\\n {{zipcode}}\\n\n',
'synthetic': 'Billing address: Mariam Rajput\n'
' 576 Broadway Street Apartment A8\n'
' Sacramento\n'
' CA\n'
' 95349'}
--------------
{ 'original': "As promised, here's {{first_name}}'s address:\\n\\n{{address}}\n",
'synthetic': "As promised, here's Aamir's address:\\n\\n2166 Sesame Street, Fortaleza, Ceará, Brazil."}
--------------
{ 'original': '&gt;{{name}}\\n&gt;{{organization}}\\n&gt;{{person}}\\n&gt;{{building_number}} '
'{{street_name}}\\n&gt;{{secondary_address}}\\n&gt;{{city}}\\n&gt;{{country}} {{postcode}}\n',
'synthetic': '&gt;Freda Chen\n'
'&gt;Example Inc.\n'
'&gt;John Doe\n'
'&gt;50 Main Street\n'
'&gt;Apt. 2\n'
'&gt;New York\n'
'&gt;United States 10005'}
--------------
{ 'original': '??? {{name}}\\n??? {{organization}}\\n??? {{building_number}} {{street_name}}\\n??? '
'{{secondary_address}}\\n??? {{city}}\\n??? {{country}} {{postcode}}\n',
'synthetic': 'John Smith\n'
' ABC Corporation\n'
' 192 Main Street\n'
' Suite 100\n'
' Austin\n'
' United States 78701'}
--------------
{ 'original': '&gt; \\n&gt; {{name}}\\n&gt; {{organization}}\\n&gt; {{person}}\\n&gt; {{building_number}} '
'{{street_name}}\\n&gt; {{secondary_address}}\\n&gt; {{city}}\\n&gt; {{country}} {{postcode}}\n',
'synthetic': '&gt; John Doe\n'
' &gt; ABC Corp\n'
' &gt; Jane Smith\n'
' &gt; 123 Main Street\n'
' &gt; APT 8\n'
' &gt; San Francisco\n'
' &gt; United States 12345'}
--------------
{ 'original': 'Pedestrians must enter on {{street_name}} St. the first three months\n',
'synthetic': 'Pedestrians must enter on Jericho Avenue St. the first three months'}
--------------
{ 'original': 'When: {{date_time}}\\nWhere: {{city}} Country Club.\n',
'synthetic': 'When: 05/01/2020 10:00am\\nWhere: Richmond Country Club.'}
--------------
{ 'original': "We'll meet {{day_of_week}} at {{organization}}, {{building_number}} {{street_name}}, "
'{{city}}\n',
'synthetic': "We'll meet Monday at Smartdel Solutions, 145 King Street, San Diego."}
--------------
{ 'original': 'They had 6: {{first_name}}, {{first_name}}, {{first_name}}, {{first_name}}, {{first_name}} '
'and {{first_name}}.\n',
'synthetic': 'They had 6: Sarah, Micheal, Kanak, Hana, Mei and Dan.'}
--------------
{'original': 'She moved here from {{country}}\n', 'synthetic': 'She moved here from Mexico.'}
--------------
{'original': 'My zip code is {{zipcode}}\n', 'synthetic': 'My zip code is 47713.'}
--------------
{'original': 'ZIP: {{zipcode}}\n', 'synthetic': 'ZIP: 08547'}
--------------
{'original': 'The bus station is on {{street_name}}\n', 'synthetic': 'The bus station is on Wilson Avenue.'}
--------------
{ 'original': "They're not answering at {{phone_number}}\n",
'synthetic': "They're not answering at 654-339-1013."}
--------------
{ 'original': 'God gave rock and roll to you, gave rock and roll to you, put it in the soul of everyone.\n',
'synthetic': 'God gave rock and roll to you, gave rock and roll to you, put it in the soul of everyone.'}
--------------
{'original': '3... 2... 1... liftoff!\n', 'synthetic': '3... 2... 1... liftoff!'}
--------------
{ 'original': 'My great great grandfather was called {{name_male}}, and my great great grandmother was '
'called {{name_female}}\n',
'synthetic': 'My great great grandfather was called Michael, and my great great grandmother was called '
'Emma.'}
--------------
{'original': 'She named him {{first_name_male}}\n', 'synthetic': 'She named him Juan.'}
--------------
{ 'original': 'Name: {{name}}\\nAddress: {{address}}\n',
'synthetic': 'Name: Amari Walters\\nAddress: 32 Webster Street, Salem, MA 01819'}
--------------
{ 'original': 'Follow up with {{name}} in a couple of months.\n',
'synthetic': 'Follow up with Beatriz Lawrence in a couple of months.'}
--------------
{ 'original': '{{prefix_male}} {{last_name_male}} is a {{age}} year old man who grew up in {{city}}.\n',
'synthetic': 'Mr.Williams is a 28 year old man who grew up in Dallas.'}
--------------
{ 'original': 'Date: {{date_time}}\\nName: {{name}}\\nPhone: {{phone_number}}\n',
'synthetic': 'Date: 01/03/2021 13:45 \\nName: Pratima Joshi \\nPhone: 467-562-8954'}
--------------
{ 'original': '{{first_name}}: "Who are you?"\\n{{first_name_female}}:"I\'m {{first_name}}\'s daughter".\n',
'synthetic': 'Bob: "Who are you?"\\nMaria:"I\'m Bob\'s daughter".'}
--------------
{ 'original': 'At my suggestion, one morning over breakfast, she agreed, and on the last Sunday before Labor '
'Day we returned to {{city}} by helicopter.\n',
'synthetic': 'At my suggestion, one morning over breakfast, she agreed, and on the last Sunday before '
'Labor Day we returned to Paris by helicopter.'}
</code>
</pre>
</div>
</div>
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>--------------
{ 'original': "It was a done thing between him and {{first_name}}'s kid; and everybody thought so.\n",
'synthetic': "It was a done thing between him and Jeffery's kid; and everybody thought so."}
--------------
{ 'original': 'Capitalized words like Wisdom and Discipline are often mistaken with names.\n',
'synthetic': 'Capitalized words like Wisdom and Discipline are often mistaken with names.'}
--------------
{ 'original': 'The letter arrived at {{address}} last night.\n',
'synthetic': 'The letter arrived at 1143 Orange Street last night.'}
--------------
{ 'original': 'The Princess Royal arrived at {{city}} this morning from {{country}}.\n',
'synthetic': 'The Princess Royal arrived at London this morning from France.'}
--------------
{'original': "I'm in {{city}}, at the conference\n", 'synthetic': "I'm in Toronto, at the conference."}
--------------
{ 'original': '{{name}}, the {{job}}, said: "I\'m glad to hear that this has been withdrawn quite why they '
'thought this would go down well is beyond me."\n',
'synthetic': 'Gloria Green, the Nurse Practitioner, said: "I\'m glad to hear that this has been withdrawn '
' quite why they thought this would go down well is beyond me."'}
--------------
{ 'original': '"I\'m glad to hear that {{country}} is moving in that direction," says {{last_name}}.\n',
'synthetic': '"I\'m glad to hear that Canada is moving in that direction," says Smith.'}
--------------
{ 'original': 'I am {{nation_woman}} but I live in {{country}}.\n',
'synthetic': 'I am Marianna Montenegro but I live in Ukraine.'}
--------------
{'original': 'We are proud {{nation_plural}}\n', 'synthetic': 'We are proud Americans.'}
--------------
{ 'original': "{{person}}'s killers sentenced to life in prison\n",
'synthetic': "John Smith's killers sentenced to life in prison"}
--------------
{ 'original': "{{country}} leader gives 'kill without warning' order\n",
'synthetic': "Brazilian leader gives 'kill without warning' order"}
--------------
{ 'original': 'The {{nationality}} Border Force have detained top-flight tennis player {{name_female}} over '
'visa disputes.\n',
'synthetic': 'The British Border Force have detained top-flight tennis player Maria Rodriguez over visa '
'disputes.'}
--------------
{ 'original': 'You will be responsible for the husbandry and care of a large variety of species including '
'lemurs, antelope, camels, and more\n',
'synthetic': 'You will be responsible for the husbandry and care of a large variety of species including '
'lemurs, antelope, camels, and more.'}
--------------
{ 'original': '{{name}}\\n\\n{{job}}\\n\\nPersonal '
'Info:\\nPhone:\\n{{phone_number}}\\n\\nE-mail:\\n{{email}}\\n\\nWebsite:\\n{{url}}\\n\\nAddress:\\n{{address}}.\n',
'synthetic': 'Robert James\\n\\nSoftware Engineer\\n\\nPersonal '
'Info:\\nPhone:\\n555-847-8915\\n\\nE-mail:\\nrobertjames@example.com\\n\\nWebsite:\\nwww.example.com\\n\\nAddress:\\n277 '
'Park Ave North, Denver, CO 80100.'}
--------------
{ 'original': '{{name}}\\n\\n{{city}}\\n{{country}}\n',
'synthetic': 'John Smith\n Los Angeles\n United States'}
--------------
{ 'original': 'Title VII of the Civil Rights Act of {{year}} protects individuals against employment '
'discrimination on the basis of race and color as well as national origin, sex, or religion.\n',
'synthetic': 'Title VII of the Civil Rights Act of 1964 protects individuals against employment '
'discrimination on the basis of race and color as well as national origin, sex, or religion.'}
--------------
{ 'original': 'Energetic and driven salesperson with 8+ years of professional experience in inbound and '
'outbound sales. Awarded Salesperson of the Month three times. Helped increase inbound sales '
'by 16% within the first year of employment. Looking to support {{organization}} in {{city}} '
'{{zipcode}} in its mission to become a market-leading solution.\n',
'synthetic': 'Energetic and driven salesperson with 8+ years of professional experience in inbound and '
'outbound sales. Awarded Salesperson of the Month three times. Helped increase inbound sales '
'by 16% within the first year of employment. Looking to support Acme Corporation in Los '
'Angeles 90018 in its mission to become a market-leading solution.'}
--------------
{ 'original': 'The bus drops you off at {{building_number}} {{street_name}} St.\n',
'synthetic': 'The bus drops you off at 2774 Chestnut St.'}
--------------
{ 'original': 'Ask the driver to stop at the corner of {{street_name}} St. and {{street_name}} St.\n',
'synthetic': 'Ask the driver to stop at the corner of Maple St. and Sycamore St.'}
--------------
{ 'original': 'He lives on the north side of {{street_name}}.\n',
'synthetic': 'He lives on the north side of Abbey Road.'}
--------------
{ 'original': "I used to work for {{organization}} as {{job}}, but quit a few months ago. Now I'm "
'unemployed.\n',
'synthetic': "I used to work for ABC Corporation as Software Engineer, but quit a few months ago. Now I'm "
'unemployed.'}
--------------
{'original': '{{city}} bridge is falling down.\n', 'synthetic': 'Berlin bridge is falling down.'}
--------------
{ 'original': '{{name}} of {{organization}} is the CEO of the year. ABC Business considered several other '
"influential CEOs for this year's honor, including {{name}} of {{organization}}, "
"{{organization}}'s {{name}}, {{name}} of {{organization}}'s, {{name}} of {{organization}}, "
"and {{organization}}'s {{name}}.\n",
'synthetic': 'Franklin Smith of Technology Solutions International is the CEO of the year. ABC Business '
"considered several other influential CEOs for this year's honor, including Madison Chang of "
"Radiance Digital, Radiance Digital's Ashleigh Jones, Cash Huang of Clark &amp; Partner's, Sierra "
"Urbina of Intelicity, and Clark &amp; Partners's Asher Kenney."}
--------------
{ 'original': '{{organization}} is a design agency based in {{city}}.\n',
'synthetic': 'Maestro Design Inc. is a design agency based in Amsterdam.'}
--------------
{ 'original': 'Action &amp; Adventure, Animation, Comedy, Kids &amp; Family, Mystery &amp; Suspense\\nDirected By: '
'{{name}}\n',
'synthetic': 'Action &amp; Adventure, Animation, Comedy, Kids &amp; Family, Mystery &amp; Suspense\n'
'Directed By: Esther Jones'}
--------------
{ 'original': '{{first_name}}: What a wife.\\n{{first_name}}: Remember me, {{first_name}}? When I killed '
'your brother, I talked just like this!\\n{{first_name}}: You saved my life! How can I ever '
'repay you?\n',
'synthetic': 'Emma: What a wife.\n'
' Emma: Remember me, Emma? When I killed your brother, I talked just like this!\n'
' Emma: You saved my life! How can I ever repay you?'}
--------------
{'original': 'He just turned {{age}} years old\n', 'synthetic': 'He just turned 7 years old'}
--------------
{ 'original': "I'm {{name}}, originally from {{city}}, and i'm {{age}} y/o.\n",
'synthetic': "I'm Emily Evanston, originally from London, and I'm 24 y/o."}
--------------
{ 'original': 'Patient is a {{age}}-year-old male with a history of headaches\n',
'synthetic': 'Patient is a 35-year-old male with a history of headaches'}
--------------
{'original': 'I just turned {{age}}\n', 'synthetic': 'I just turned 24.'}
--------------
{'original': 'My father retired at the age of {{age}}\n', 'synthetic': 'My father retired at the age of 60.'}
--------------
{ 'original': 'This {{age}} year old female complaining of stomach pain.\n',
'synthetic': 'This 28 year old female complaining of stomach pain.'}
--------------
{ 'original': "My birthday is on the weekend. I'll turn {{age}}.\n",
'synthetic': "My birthday is on the weekend. I'll turn 20."}
--------------
{'original': 'My brother just turned {{age}}\n', 'synthetic': 'My brother just turned 18.'}
</code>
</pre>
</div>
</div>
<div class="output_area">
<div class="output_subarea output_stream output_stdout output_text">
<pre>
<code>--------------
{ 'original': '{{prefix}} {{last_name}} flew to {{city}} on {{day_of_week}} morning.',
'synthetic': 'Dr. Nguyen flew to Los Angeles on Tuesday morning.'}
--------------
</code>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>This notebook demonstrates how to leverage OpenAI models for fake/surrogate data generation. It uses Presidio to first de-identify data (as de-identification might be required prior to passing the model to OpenAI), and then uses OpenAI completion models to create synthetic/fake/surrogate data based on real data. OpenAI models would also potentially remove additional PII entities, if those are not detected by Presidio.</p>
<p>Some impressions:
1. GPT-3 sometimes gives additonal output, especially if the text is a question or concerning a human/bot interaction. Engineering the prompt can mitigate some of these issues. Potential post-processing might be required.
2. GPT-3 sometimes creates fake values even in the absence of placeholders.
3. GPT-3 re-uses context from other sentences, which could cause phone numbers are sometimes generated using a credit card pattern or other similar mistakes.
4. Co-references are sometimes missed (i.e. two name placeholders that should be filled with the same name, or referencing he/she to a male/female name)</p>
</div>
</div>
</div>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://github.com/microsoft/presidio" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</a>
<a href="https://hub.docker.com/_/microsoft-presidio" target="_blank" rel="noopener" title="hub.docker.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"/></svg>
</a>
<a href="mailto:presidio@microsoft.com" target="_blank" rel="noopener" title="" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4l217.6 163.2c11.4 8.5 27 8.5 38.4 0l217.6-163.2c12.1-9.1 19.2-23.3 19.2-38.4 0-26.5-21.5-48-48-48H48zM0 176v208c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V176L294.4 339.2a63.9 63.9 0 0 1-76.8 0L0 176z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.instant", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.c011b7c0.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../../assets/javascripts/bundle.7389ff0e.min.js"></script>
</body>
</html>