private static bool IsMaskableEntityType(TextAnalyticsEntity entity) { switch (entity.Category) { case EntityCategory.Person: case EntityCategory.Organization: case EntityCategory.PhoneNumber: case EntityCategory.Email: case EntityCategory.URL: case EntityCategory.IPAddress: case EntityCategory.Quantity: return(true); default: return(false); } }
private static string RedactEntityInText(string text, TextAnalyticsEntity entity) { var preMask = text.Substring(0, entity.Offset); var postMask = text.Substring(entity.Offset + entity.Length, text.Length - (entity.Offset + entity.Length)); if (entity.Category == EntityCategory.Quantity && entity.SubCategory.Equals("Number", StringComparison.OrdinalIgnoreCase)) { text = preMask + new string('#', entity.Length) + postMask; } else { if (!string.IsNullOrEmpty(entity.SubCategory)) { text = $"{preMask}#{entity.Category}-{entity.SubCategory}#{postMask}"; } else { text = $"{preMask}#{entity.Category}#{postMask}"; } } return(text); }
private static RecognizedPhrase RedactEntityInRecognizedPhrase(RecognizedPhrase recognizedPhrase, TextAnalyticsEntity entity) { if (!IsMaskableEntityType(entity) || !recognizedPhrase.NBest.Any()) { return(recognizedPhrase); } var nBest = recognizedPhrase.NBest.FirstOrDefault(); // only keep first nBest: recognizedPhrase.NBest = new[] { nBest }; var displayForm = nBest.Display; var preMask = displayForm.Substring(0, entity.Offset); var postMask = displayForm.Substring(entity.Offset + entity.Length, displayForm.Length - (entity.Offset + entity.Length)); if (entity.Category == EntityCategory.Quantity && entity.SubCategory.Equals("Number", StringComparison.OrdinalIgnoreCase)) { displayForm = preMask + new string('#', entity.Length) + postMask; } else { if (!string.IsNullOrEmpty(entity.SubCategory)) { displayForm = $"{preMask}#{entity.Category}-{entity.SubCategory}#{postMask}"; } else { displayForm = $"{preMask}#{entity.Category}#{postMask}"; } } nBest.Display = displayForm; return(recognizedPhrase); }