public async Task RecognizePiiEntitiesBatchWithStatisticsTest()
        {
            TextAnalyticsClient client = GetClient();
            var inputs = new List <TextDocumentInput>
            {
                new TextDocumentInput("1", "A developer with SSN 555-55-5555 whose phone number is 555-555-5555 is building tools with our APIs.")
                {
                    Language = "en",
                },
                new TextDocumentInput("2", "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check.")
                {
                    Language = "en",
                }
            };

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(inputs, new TextAnalyticsRequestOptions { IncludeStatistics = true });

            foreach (RecognizePiiEntitiesResult result in results)
            {
                Assert.GreaterOrEqual(result.Entities.Count(), 2);
            }

            Assert.IsNotNull(results.Statistics.DocumentCount);
            Assert.IsNotNull(results.Statistics.InvalidDocumentCount);
            Assert.IsNotNull(results.Statistics.TransactionCount);
            Assert.IsNotNull(results.Statistics.ValidDocumentCount);
        }
Exemple #2
0
        public async Task RecognizePiiEntitiesBatchTest()
        {
            TextAnalyticsClient      client    = GetClient();
            List <TextDocumentInput> documents = batchDocuments;

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(documents);

            foreach (RecognizePiiEntitiesResult result in results)
            {
                Assert.GreaterOrEqual(result.Entities.Count(), 2);
            }
        }
Exemple #3
0
        public async Task RecognizePiiEntitiesBatchWithStatisticsTest()
        {
            TextAnalyticsClient client = GetClient();
            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(s_batchDocuments, new RecognizePiiEntitiesOptions { IncludeStatistics = true });

            var expectedOutput = new Dictionary <string, List <string> >()
            {
                { "1", s_document1ExpectedOutput },
                { "2", s_document2ExpectedOutput },
            };

            ValidateBatchDocumentsResult(results, expectedOutput, includeStatistics: true);
        }
Exemple #4
0
        public async Task RecognizePiiEntitiesBatchTest()
        {
            TextAnalyticsClient client = GetClient();
            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(s_batchDocuments);

            var expectedOutput = new Dictionary <string, List <string> >()
            {
                { "1", s_document1ExpectedOutput },
                { "2", s_document2ExpectedOutput },
            };

            ValidateBatchDocumentsResult(results, expectedOutput);
        }
        public async Task RecognizePiiEntitiesBatchConvenienceTest()
        {
            TextAnalyticsClient client = GetClient();
            var inputs = new List <string>
            {
                "A developer with SSN 555-55-5555 whose phone number is 555-555-5555 is building tools with our APIs.",
                "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check."
            };

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(inputs);

            foreach (RecognizePiiEntitiesResult result in results)
            {
                Assert.GreaterOrEqual(result.Entities.Count(), 2);
            }
        }
Exemple #6
0
        public async Task RecognizePiiEntitiesBatchWithStatisticsTest()
        {
            TextAnalyticsClient      client    = GetClient();
            List <TextDocumentInput> documents = batchDocuments;

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(documents, new RecognizePiiEntitiesOptions { IncludeStatistics = true });

            foreach (RecognizePiiEntitiesResult result in results)
            {
                Assert.GreaterOrEqual(result.Entities.Count(), 2);
            }

            Assert.Greater(results.Statistics.DocumentCount, 0);
            Assert.AreEqual(0, results.Statistics.InvalidDocumentCount);
            Assert.Greater(results.Statistics.TransactionCount, 0);
            Assert.Greater(results.Statistics.ValidDocumentCount, 0);
        }
        public async Task RecognizePiiEntitiesBatchWithDomainTest()
        {
            TextAnalyticsClient client = GetClient();

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(s_batchDocuments, new RecognizePiiEntitiesOptions()
            {
                DomainFilter = PiiEntityDomainType.ProtectedHealthInformation
            });

            var expectedOutput = new Dictionary <string, List <string> >()
            {
                { "1", s_document1ExpectedOutput },
                { "2", s_document2ExpectedOutput },
            };

            ValidateBatchDocumentsResult(results, expectedOutput);
        }
Exemple #8
0
        public async Task RecognizePiiEntitiesBatchWithErrorTest()
        {
            TextAnalyticsClient client = GetClient();
            var inputs = new List <string>
            {
                "A developer with SSN 555-55-5555 whose phone number is 555-555-5555 is building tools with our APIs.",
                "",
                "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check.",
            };

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(inputs);

            Assert.IsTrue(!results[0].HasError);
            Assert.IsTrue(!results[2].HasError);

            Assert.IsTrue(results[1].HasError);
            Assert.Throws <InvalidOperationException>(() => results[1].Entities.GetType());
        }
Exemple #9
0
        public async Task RecognizePiiEntitiesBatchWithErrorTest()
        {
            TextAnalyticsClient client = GetClient();
            var documents = new List <string>
            {
                "A developer with SSN 859-98-0987 whose phone number is 800-102-1100 is building tools with our APIs.",
                "",
                "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check.",
            };

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(documents);

            Assert.IsFalse(results[0].HasError);
            Assert.IsFalse(results[2].HasError);

            var exceptionMessage = "Cannot access result for document 1, due to error InvalidDocument: Document text is empty.";

            Assert.IsTrue(results[1].HasError);
            InvalidOperationException ex = Assert.Throws <InvalidOperationException>(() => results[1].Entities.GetType());

            Assert.AreEqual(exceptionMessage, ex.Message);
        }
Exemple #10
0
        public async Task RecognizePiiEntitiesBatchTest()
        {
            TextAnalyticsClient client = GetClient();
            var documents = new List <TextDocumentInput>
            {
                new TextDocumentInput("1", "A developer with SSN 555-55-5555 whose phone number is 555-555-5555 is building tools with our APIs.")
                {
                    Language = "en",
                },
                new TextDocumentInput("2", "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check.")
                {
                    Language = "en",
                }
            };

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(documents);

            foreach (RecognizePiiEntitiesResult result in results)
            {
                Assert.GreaterOrEqual(result.Entities.Count(), 2);
            }
        }
Exemple #11
0
        public async Task RecognizePiiEntitiesBatchWitCategoryTest()
        {
            TextAnalyticsClient client = GetClient();

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(s_batchDocuments, new RecognizePiiEntitiesOptions()
            {
                CategoriesFilter = { PiiEntityCategory.PhoneNumber }
            });

            var expectedOutput = new Dictionary <string, List <string> >()
            {
                { "1", new List <string>()
                  {
                      "800-102-1100"
                  } },
                { "2", new List <string>()
                  {
                      "111000025"
                  } },
            };

            ValidateBatchDocumentsResult(results, expectedOutput);
        }
Exemple #12
0
        public async Task RecognizePiiEntitiesBatchConvenienceAsync()
        {
            string endpoint = TestEnvironment.Endpoint;
            string apiKey   = TestEnvironment.ApiKey;

            // Instantiate a client that will be used to call the service.
            var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey));

            var documents = new List <string>
            {
                "A developer with SSN 859-98-0987 whose phone number is 800-102-1100 is building tools with our APIs.",
                "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check."
            };

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(documents);

            int i = 0;

            foreach (RecognizePiiEntitiesResult result in results)
            {
                Console.WriteLine($"For document: {documents[i++]}");
                if (result.Entities.Count > 0)
                {
                    Console.WriteLine($"Redacted Text: {result.Entities.RedactedText}");
                    Console.WriteLine($"The following {result.Entities.Count} PII entit{(result.Entities.Count > 1 ? "ies were" : "y was")} found:");

                    foreach (PiiEntity entity in result.Entities)
                    {
                        Console.WriteLine($"    Text: {entity.Text}, Category: {entity.Category}, SubCategory: {entity.SubCategory}, Confidence score: {entity.ConfidenceScore}");
                    }
                }
                else
                {
                    Console.WriteLine("No entities were found.");
                }
            }
        }
        public async Task RecognizePiiEntitiesBatchConvenienceAsync()
        {
            string endpoint = TestEnvironment.Endpoint;
            string apiKey   = TestEnvironment.ApiKey;

            // Instantiate a client that will be used to call the service.
            var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey), CreateSampleOptions());

            string documentA = @"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";

            string documentB = @"Yesterday, Dan Doe was asking where they could find the ABA number. I explained
                                that it is the first 9 digits in the lower left hand corner of their personal check.
                                After looking at their account they confirmed the number was 111000025";

            string documentC = string.Empty;

            var documents = new List <string>
            {
                documentA,
                documentB,
                documentC
            };

            Response <RecognizePiiEntitiesResultCollection> response = await client.RecognizePiiEntitiesBatchAsync(documents);

            RecognizePiiEntitiesResultCollection entititesPerDocuments = response.Value;

            int i = 0;

            Console.WriteLine($"Results of \"PII Entity Recognition\" Model, version: \"{entititesPerDocuments.ModelVersion}\"");
            Console.WriteLine("");

            foreach (RecognizePiiEntitiesResult piiEntititesInDocument in entititesPerDocuments)
            {
                Console.WriteLine($"On document with Text: \"{documents[i++]}\"");
                Console.WriteLine("");

                if (piiEntititesInDocument.HasError)
                {
                    Console.WriteLine("  Error!");
                    Console.WriteLine($"  Document error code: {piiEntititesInDocument.Error.ErrorCode}.");
                    Console.WriteLine($"  Message: {piiEntititesInDocument.Error.Message}");
                }
                else
                {
                    Console.WriteLine($"  Redacted Text: {piiEntititesInDocument.Entities.RedactedText}");
                    Console.WriteLine("");
                    Console.WriteLine($"  Recognized {piiEntititesInDocument.Entities.Count} PII entities:");
                    foreach (PiiEntity piiEntity in piiEntititesInDocument.Entities)
                    {
                        Console.WriteLine($"    Text: {piiEntity.Text}");
                        Console.WriteLine($"    Category: {piiEntity.Category}");
                        if (!string.IsNullOrEmpty(piiEntity.SubCategory))
                        {
                            Console.WriteLine($"    SubCategory: {piiEntity.SubCategory}");
                        }
                        Console.WriteLine($"    Confidence score: {piiEntity.ConfidenceScore}");
                        Console.WriteLine("");
                    }
                }
                Console.WriteLine("");
            }
        }
Exemple #14
0
        public async Task RecognizePiiEntitiesBatchAsync()
        {
            string endpoint = TestEnvironment.Endpoint;
            string apiKey   = TestEnvironment.ApiKey;

            // Instantiate a client that will be used to call the service.
            var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey), CreateSampleOptions());

            string documentA = @"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";

            string documentB = @"Hoy recibí una llamada al medio día del usuario Juanito Perez, quien preguntaba
                                cómo acceder a su nuevo correo electrónico. Este trabaja en Microsoft y su correo es
                                [email protected]. El usuario accedió a compartir su número para futuras comunicaciones.
                                El número es 800-102-1101";

            string documentC = @"Yesterday, Dan Doe was asking where they could find the ABA number. I explained
                                that it is the first 9 digits in the lower left hand corner of their personal check.
                                After looking at their account they confirmed the number was 111000025";

            var documents = new List <TextDocumentInput>
            {
                new TextDocumentInput("1", documentA)
                {
                    Language = "en",
                },
                new TextDocumentInput("2", documentB)
                {
                    Language = "es",
                },
                new TextDocumentInput("3", documentC)
                {
                    Language = "en",
                }
            };

            var options = new RecognizePiiEntitiesOptions {
                IncludeStatistics = true
            };
            Response <RecognizePiiEntitiesResultCollection> response = await client.RecognizePiiEntitiesBatchAsync(documents, options);

            RecognizePiiEntitiesResultCollection entititesPerDocuments = response.Value;

            int i = 0;

            Console.WriteLine($"Results of \"PII Entity Recognition\" Model, version: \"{entititesPerDocuments.ModelVersion}\"");
            Console.WriteLine("");

            foreach (RecognizePiiEntitiesResult piiEntititesInDocument in entititesPerDocuments)
            {
                TextDocumentInput document = documents[i++];

                Console.WriteLine($"On document (Id={document.Id}, Language=\"{document.Language}\"):");

                if (piiEntititesInDocument.HasError)
                {
                    Console.WriteLine("  Error!");
                    Console.WriteLine($"  Document error code: {piiEntititesInDocument.Error.ErrorCode}.");
                    Console.WriteLine($"  Message: {piiEntititesInDocument.Error.Message}");
                }
                else
                {
                    Console.WriteLine($"  Redacted Text: {piiEntititesInDocument.Entities.RedactedText}");
                    Console.WriteLine("");
                    Console.WriteLine($"  Recognized {piiEntititesInDocument.Entities.Count} PII entities:");
                    foreach (PiiEntity piiEntity in piiEntititesInDocument.Entities)
                    {
                        Console.WriteLine($"    Text: {piiEntity.Text}");
                        Console.WriteLine($"    Category: {piiEntity.Category}");
                        if (!string.IsNullOrEmpty(piiEntity.SubCategory))
                        {
                            Console.WriteLine($"    SubCategory: {piiEntity.SubCategory}");
                        }
                        Console.WriteLine($"    Confidence score: {piiEntity.ConfidenceScore}");
                        Console.WriteLine("");
                    }

                    Console.WriteLine($"  Document statistics:");
                    Console.WriteLine($"    Character count: {piiEntititesInDocument.Statistics.CharacterCount}");
                    Console.WriteLine($"    Transaction count: {piiEntititesInDocument.Statistics.TransactionCount}");
                }
                Console.WriteLine("");
            }

            Console.WriteLine($"Batch operation statistics:");
            Console.WriteLine($"  Document count: {entititesPerDocuments.Statistics.DocumentCount}");
            Console.WriteLine($"  Valid document count: {entititesPerDocuments.Statistics.ValidDocumentCount}");
            Console.WriteLine($"  Invalid document count: {entititesPerDocuments.Statistics.InvalidDocumentCount}");
            Console.WriteLine($"  Transaction count: {entititesPerDocuments.Statistics.TransactionCount}");
            Console.WriteLine("");
        }
Exemple #15
0
        public async Task RecognizePiiEntitiesBatchAsync()
        {
            string endpoint = TestEnvironment.Endpoint;
            string apiKey   = TestEnvironment.ApiKey;

            // Instantiate a client that will be used to call the service.
            var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey));

            var documents = new List <TextDocumentInput>
            {
                new TextDocumentInput("1", "A developer with SSN 859-98-0987 whose phone number is 800-102-1100 is building tools with our APIs.")
                {
                    Language = "en",
                },
                new TextDocumentInput("2", "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check.")
                {
                    Language = "en",
                }
            };

            RecognizePiiEntitiesResultCollection results = await client.RecognizePiiEntitiesBatchAsync(documents, new RecognizePiiEntitiesOptions { IncludeStatistics = true });

            int i = 0;

            Console.WriteLine($"Results of Azure Text Analytics \"Pii Entity Recognition\" Model, version: \"{results.ModelVersion}\"");
            Console.WriteLine("");

            foreach (RecognizePiiEntitiesResult result in results)
            {
                TextDocumentInput document = documents[i++];

                Console.WriteLine($"On document (Id={document.Id}, Language=\"{document.Language}\", Text=\"{document.Text}\"):");

                if (result.HasError)
                {
                    Console.WriteLine($"    Document error code: {result.Error.ErrorCode}.");
                    Console.WriteLine($"    Message: {result.Error.Message}.");
                }
                else
                {
                    if (result.Entities.Count > 0)
                    {
                        Console.WriteLine($"    Redacted Text: {result.Entities.RedactedText}");
                        Console.WriteLine($"    Recognized the following {result.Entities.Count} PII entit{(result.Entities.Count > 1 ? "ies" : "y ")}:");
                        foreach (PiiEntity entity in result.Entities)
                        {
                            Console.WriteLine($"        Text: {entity.Text}, Category: {entity.Category}, SubCategory: {entity.SubCategory}, Confidence score: {entity.ConfidenceScore}");
                        }
                    }
                    else
                    {
                        Console.WriteLine("No entities were found.");
                    }

                    Console.WriteLine($"    Document statistics:");
                    Console.WriteLine($"        Character count (in Unicode graphemes): {result.Statistics.CharacterCount}");
                    Console.WriteLine($"        Transaction count: {result.Statistics.TransactionCount}");
                    Console.WriteLine("");
                }
            }

            Console.WriteLine($"Batch operation statistics:");
            Console.WriteLine($"    Document count: {results.Statistics.DocumentCount}");
            Console.WriteLine($"    Valid document count: {results.Statistics.ValidDocumentCount}");
            Console.WriteLine($"    Invalid document count: {results.Statistics.InvalidDocumentCount}");
            Console.WriteLine($"    Transaction count: {results.Statistics.TransactionCount}");
            Console.WriteLine("");
        }