コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }