public async Task RecognizePiiEntitiesWithLanguageTest() { TextAnalyticsClient client = GetClient(); PiiEntityCollection entities = await client.RecognizePiiEntitiesAsync(EnglishDocument1, "en"); ValidateInDocumenResult(entities, s_document1ExpectedOutput); }
private static async Task RecognizePIIExampleAsync(TextAnalyticsClient client) { WriteLine("****** Personally Identifiable Information recognition ******"); WriteLine(); var document = "A developer with SSN 859-98-0987 whose phone number is 800-102-1100 is building tools with our APIs."; WriteLine($"Document: {document}"); WriteLine(); PiiEntityCollection entities = await client.RecognizePiiEntitiesAsync(document); Console.WriteLine($"Redacted Text: {entities.RedactedText}"); if (entities.Count > 0) { Console.WriteLine($"Recognized {entities.Count} PII entit{(entities.Count > 1 ? "ies" : "y")}:"); foreach (PiiEntity entity in entities) { Console.WriteLine($"Text: {entity.Text}, Category: {entity.Category}, SubCategory: {entity.SubCategory}, Confidence score: {entity.ConfidenceScore}"); } } else { Console.WriteLine("No entities were found."); } WriteLine(); }
public async Task RecognizePiiEntitiesWithAADTest() { TextAnalyticsClient client = GetClient(useTokenCredential: true); PiiEntityCollection entities = await client.RecognizePiiEntitiesAsync(EnglishDocument1); ValidateInDocumenResult(entities, s_document1ExpectedOutput); }
public void RecognizePiiEntities() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #region Snippet:TextAnalyticsSample5CreateClient var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #endregion #region Snippet:RecognizePiiEntities string document = "A developer with SSN 859-98-0987 whose phone number is 800-102-1100 is building tools with our APIs."; PiiEntityCollection entities = client.RecognizePiiEntities(document).Value; Console.WriteLine($"Redacted Text: {entities.RedactedText}"); if (entities.Count > 0) { Console.WriteLine($"Recognized {entities.Count} PII entit{(entities.Count > 1 ? "ies" : "y")}:"); foreach (PiiEntity entity in entities) { Console.WriteLine($"Text: {entity.Text}, Category: {entity.Category}, SubCategory: {entity.SubCategory}, Confidence score: {entity.ConfidenceScore}"); } } else { Console.WriteLine("No entities were found."); } #endregion }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log) { try { if (!RIPAAuthorization.ValidateUserOrAdministratorRole(req, log).ConfigureAwait(false).GetAwaiter().GetResult()) { return(new UnauthorizedResult()); } } catch (Exception ex) { log.LogError(ex.Message); return(new UnauthorizedResult()); } string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); string document = data?.Document; if (string.IsNullOrEmpty(document)) { document = data?.document; } if (string.IsNullOrEmpty(document)) { return(new BadRequestObjectResult("Must Provide Document")); } try { PiiEntityCollection piiEntities = await _piiTextAnalyticsService.GetPiiEntities(document); PiiResponse piiResponse = new PiiResponse() { RedactedText = piiEntities.RedactedText, PiiEntities = new List <PiiEntity>(), MinimumConfidenceScore = _minimumConfidenceScore, AllowedCategories = _allowedCategories }; foreach (var entity in piiEntities.Where(x => (x.ConfidenceScore > _minimumConfidenceScore) && _allowedCategories.Any(x.Category.ToString().Equals))) { piiResponse.PiiEntities.Add(new PiiEntity { EntityText = entity.Text, ConfidenceScore = $"{entity.ConfidenceScore:F2}", Category = entity.Category.ToString() }); } return(new OkObjectResult(piiResponse)); } catch (Exception ex) { log.LogError("There was an error checking for PII: ", ex.Message, ex.InnerException); return(new BadRequestObjectResult(ex.Message)); } }
public async Task RecognizePiiEntitiesWithLanguageTest() { TextAnalyticsClient client = GetClient(); string document = singleEnglish; PiiEntityCollection entities = await client.RecognizePiiEntitiesAsync(document, "en"); Assert.AreEqual(2, entities.Count); Assert.IsNotNull(entities.RedactedText); }
public async Task RecognizePiiEntitiesWithAADTest() { TextAnalyticsClient client = GetClient(useTokenCredential: true); string document = singleEnglish; PiiEntityCollection entities = await client.RecognizePiiEntitiesAsync(document); Assert.AreEqual(2, entities.Count); Assert.IsNotNull(entities.RedactedText); }
public async Task RecognizePiiEntitiesWithDomainTest() { TextAnalyticsClient client = GetClient(); string document = "I work at Microsoft and my email is [email protected]"; PiiEntityCollection entities = await client.RecognizePiiEntitiesAsync(document, "en", new RecognizePiiEntitiesOptions() { DomainFilter = PiiEntityDomainType.ProtectedHealthInformation }); ValidateInDocumenResult(entities, new List <string>() { "*****@*****.**", "Microsoft" }); }
public async Task RecognizePiiEntitiesWithDomainTest() { TextAnalyticsClient client = GetClient(); string document = "I work at Microsoft and my email is [email protected]"; PiiEntityCollection entities = await client.RecognizePiiEntitiesAsync(document, "en", new RecognizePiiEntitiesOptions() { DomainFilter = PiiEntityDomainType.ProtectedHealthInformation }); Assert.AreEqual(1, entities.Count); Assert.AreEqual("*****@*****.**", entities.FirstOrDefault().Text); Assert.AreEqual(EntityCategory.Email, entities.FirstOrDefault().Category); Assert.IsNotNull(entities.RedactedText); }
public async Task RecognizePiiEntitiesTest() { TextAnalyticsClient client = GetClient(); string document = singleEnglish; PiiEntityCollection entities = await client.RecognizePiiEntitiesAsync(document); Assert.AreEqual(2, entities.Count); Assert.IsNotNull(entities.RedactedText); var entitiesList = new List <string> { "859-98-0987", "800-102-1100" }; foreach (PiiEntity entity in entities) { Assert.IsTrue(entitiesList.Contains(entity.Text)); } }
private void ValidateInDocumenResult(PiiEntityCollection entities, List <string> minimumExpectedOutput) { Assert.IsNotNull(entities.Warnings); Assert.That(entities.RedactedText, Is.Not.Null.And.Not.Empty); Assert.GreaterOrEqual(entities.Count, minimumExpectedOutput.Count); foreach (PiiEntity entity in entities) { Assert.That(entity.Text, Is.Not.Null.And.Not.Empty); Assert.IsTrue(minimumExpectedOutput.Contains(entity.Text, StringComparer.OrdinalIgnoreCase)); Assert.IsNotNull(entity.Category); Assert.GreaterOrEqual(entity.ConfidenceScore, 0.0); Assert.GreaterOrEqual(entity.Offset, 0); if (entity.SubCategory != null) { Assert.IsNotEmpty(entity.SubCategory); } } }
public async Task RecognizePiiEntitiesWithResultCategoriesTest() { TextAnalyticsClient client = GetClient(); PiiEntityCollection originalEntities = await client.RecognizePiiEntitiesAsync(EnglishDocument1); List <PiiEntityCategory> piiCategories = new(); foreach (var entity in originalEntities) { piiCategories.Add(entity.Category); } PiiEntityCollection newEntities = await client.RecognizePiiEntitiesAsync(EnglishDocument1, "en", new RecognizePiiEntitiesOptions() { CategoriesFilter = piiCategories }); ValidateInDocumenResult(newEntities, s_document1ExpectedOutput); }
static void RecognizePIIExample(TextAnalyticsClient client) { string document = "A developer with SSN 859-98-0987 whose phone number is 800-102-1100 is building tools with our APIs."; PiiEntityCollection entities = client.RecognizePiiEntities(document).Value; Console.WriteLine($"Redacted Text: {entities.RedactedText}"); if (entities.Count > 0) { Console.WriteLine($"Recognized {entities.Count} PII entit{(entities.Count > 1 ? "ies" : "y")}:"); foreach (PiiEntity entity in entities) { Console.WriteLine($"Text: {entity.Text}, Category: {entity.Category}, SubCategory: {entity.SubCategory}, Confidence score: {entity.ConfidenceScore}"); } } else { Console.WriteLine("No entities were found."); } }
public void RecognizePiiEntitiesWithCategories() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); string document = @"Parker Doe has repaid all of their loans as of 2020-04-25. Their SSN is 859-98-0987. To contact them, use their phone number 800-102-1100. They are originally from Brazil and have document ID number 998.214.865-68"; try { // For sample purposes we want the service to only return SSN. RecognizePiiEntitiesOptions options = new() { CategoriesFilter = { PiiEntityCategory.USSocialSecurityNumber } }; Response <PiiEntityCollection> response = client.RecognizePiiEntities(document, options: options); PiiEntityCollection entities = response.Value; Console.WriteLine($"Redacted Text: {entities.RedactedText}"); Console.WriteLine(""); Console.WriteLine($"Recognized {entities.Count} PII entities:"); foreach (PiiEntity entity in entities) { Console.WriteLine($" Text: {entity.Text}"); Console.WriteLine($" Category: {entity.Category}"); if (!string.IsNullOrEmpty(entity.SubCategory)) { Console.WriteLine($" SubCategory: {entity.SubCategory}"); } Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); Console.WriteLine(""); } } catch (RequestFailedException exception) { Console.WriteLine($"Error Code: {exception.ErrorCode}"); Console.WriteLine($"Message: {exception.Message}"); } }
public async Task RecognizePiiEntitiesAsync() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey), CreateSampleOptions()); string document = @"Parker Doe has repaid all of their loans as of 2020-04-25. Their SSN is 859-98-0987. To contact them, use their phone number 800-102-1100. They are originally from Brazil and have document ID number 998.214.865-68"; try { Response <PiiEntityCollection> response = await client.RecognizePiiEntitiesAsync(document); PiiEntityCollection entities = response.Value; Console.WriteLine($"Redacted Text: {entities.RedactedText}"); Console.WriteLine(""); Console.WriteLine($"Recognized {entities.Count} PII entities:"); foreach (PiiEntity entity in entities) { Console.WriteLine($" Text: {entity.Text}"); Console.WriteLine($" Category: {entity.Category}"); if (!string.IsNullOrEmpty(entity.SubCategory)) { Console.WriteLine($" SubCategory: {entity.SubCategory}"); } Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); Console.WriteLine(""); } } catch (RequestFailedException exception) { Console.WriteLine($"Error Code: {exception.ErrorCode}"); Console.WriteLine($"Message: {exception.Message}"); } }
private void ValidateInDocumenResult(PiiEntityCollection entities, List <string> minimumExpectedOutput) { Assert.IsNotNull(entities.Warnings); Assert.That(entities.RedactedText, Is.Not.Null.And.Not.Empty); Assert.GreaterOrEqual(entities.Count, minimumExpectedOutput.Count); foreach (PiiEntity entity in entities) { Assert.That(entity.Text, Is.Not.Null.And.Not.Empty); Assert.IsNotNull(entity.Category); Assert.GreaterOrEqual(entity.ConfidenceScore, 0.0); Assert.GreaterOrEqual(entity.Offset, 0); Assert.Greater(entity.Length, 0); if (entity.SubCategory != null) { Assert.IsNotEmpty(entity.SubCategory); } } foreach (var text in minimumExpectedOutput) { Assert.IsTrue(entities.Any(e => e.Text == text)); } }