public async Task AnalyzeOperationBatchWithPHIDomain()
        {
            TextAnalyticsClient client = GetClient();

            var documents = new List <string>
            {
                "A patient with medical id 12345678 whose phone number is 800-102-1100 is going under heart surgery",
            };

            TextAnalyticsActions batchActions = new TextAnalyticsActions()
            {
                RecognizePiiEntitiesOptions = new List <RecognizePiiEntitiesOptions>()
                {
                    new RecognizePiiEntitiesOptions()
                    {
                        DomainFilter = PiiEntityDomainType.ProtectedHealthInformation
                    }
                },
                DisplayName = "AnalyzeOperationWithPHIDomain",
            };

            AnalyzeBatchActionsOperation operation = await client.StartAnalyzeBatchActionsAsync(documents, batchActions, "en");

            await operation.WaitForCompletionAsync(PollingInterval);

            //Take the first page
            AnalyzeBatchActionsResult resultCollection = operation.Value.ToEnumerableAsync().Result.FirstOrDefault();

            RecognizePiiEntitiesResultCollection result = resultCollection.RecognizePiiEntitiesActionsResults.ElementAt(0).Result;

            Assert.IsNotNull(result);

            Assert.AreEqual(1, result.Count);

            Assert.IsNotEmpty(result[0].Entities.RedactedText);

            Assert.IsFalse(result[0].HasError);
            Assert.AreEqual(2, result[0].Entities.Count);
        }
Exemplo n.º 2
0
        public async Task AnalyzeOperationBatchWithErrorTest()
        {
            TextAnalyticsClient client = GetClient();

            var documents = new List <string>
            {
                "Subject is taking 100mg of ibuprofen twice daily",
                "Can cause rapid or irregular heartbeat, delirium, panic, psychosis, and heart failure.",
                "",
            };
            TextAnalyticsActions batchActions = new TextAnalyticsActions()
            {
                ExtractKeyPhrasesOptions = new List <ExtractKeyPhrasesOptions>()
                {
                    new ExtractKeyPhrasesOptions(),
                    new ExtractKeyPhrasesOptions()
                    {
                        ModelVersion = "InvalidVersion"
                    }
                },
                RecognizeEntitiesOptions = new List <RecognizeEntitiesOptions>()
                {
                    new RecognizeEntitiesOptions(),
                    new RecognizeEntitiesOptions()
                    {
                        ModelVersion = "InvalidVersion"
                    }
                },
                RecognizePiiEntitiesOptions = new List <RecognizePiiEntitiesOptions>()
                {
                    new RecognizePiiEntitiesOptions(),
                    new RecognizePiiEntitiesOptions()
                    {
                        ModelVersion = "InvalidVersion"
                    }
                },
                RecognizeLinkedEntitiesOptions = new List <RecognizeLinkedEntitiesOptions>()
                {
                    new RecognizeLinkedEntitiesOptions(),
                    new RecognizeLinkedEntitiesOptions()
                    {
                        ModelVersion = "InvalidVersion"
                    }
                },

                DisplayName = "AnalyzeOperationBatchWithErrorTest",
            };

            AnalyzeBatchActionsOperation operation = await client.StartAnalyzeBatchActionsAsync(documents, batchActions, "en");

            await operation.WaitForCompletionAsync(PollingInterval);

            //Take the first page
            AnalyzeBatchActionsResult resultCollection = operation.Value.ToEnumerableAsync().Result.FirstOrDefault();

            //Key phrases
            var keyPhrasesActions = resultCollection.ExtractKeyPhrasesActionsResults.ToList();

            Assert.IsFalse(keyPhrasesActions[0].HasError);
            Assert.AreEqual(3, keyPhrasesActions[0].Result.Count);
            var kpEmptyDocument = keyPhrasesActions[0].Result.ElementAt(2);

            Assert.IsTrue(kpEmptyDocument.HasError);
            Assert.AreEqual(TextAnalyticsErrorCode.InvalidDocument, kpEmptyDocument.Error.ErrorCode.ToString());

            Assert.IsTrue(keyPhrasesActions[1].HasError);
            Assert.AreEqual(TextAnalyticsErrorCode.InvalidRequest, keyPhrasesActions[1].Error.ErrorCode.ToString());

            // Entities
            var entitiesActions = resultCollection.RecognizeEntitiesActionsResults.ToList();

            Assert.IsFalse(entitiesActions[0].HasError);
            Assert.AreEqual(3, entitiesActions[0].Result.Count);
            var entitiesEmptyDocument = entitiesActions[0].Result.ElementAt(2);

            Assert.IsTrue(entitiesEmptyDocument.HasError);
            Assert.AreEqual(TextAnalyticsErrorCode.InvalidDocument, entitiesEmptyDocument.Error.ErrorCode.ToString());

            Assert.IsTrue(entitiesActions[1].HasError);
            Assert.AreEqual(TextAnalyticsErrorCode.InvalidRequest, entitiesActions[1].Error.ErrorCode.ToString());

            // PII entities
            var piiEntitiesActions = resultCollection.RecognizePiiEntitiesActionsResults.ToList();

            Assert.IsFalse(piiEntitiesActions[0].HasError);
            Assert.AreEqual(3, piiEntitiesActions[0].Result.Count);
            var piiEntitiesEmptyDocument = piiEntitiesActions[0].Result.ElementAt(2);

            Assert.IsTrue(piiEntitiesEmptyDocument.HasError);
            Assert.AreEqual(TextAnalyticsErrorCode.InvalidDocument, piiEntitiesEmptyDocument.Error.ErrorCode.ToString());

            Assert.IsTrue(piiEntitiesActions[1].HasError);
            Assert.AreEqual(TextAnalyticsErrorCode.InvalidRequest, piiEntitiesActions[1].Error.ErrorCode.ToString());

            // Entity Linking

            var linkedEntitiesActions = resultCollection.RecognizeLinkedEntitiesActionsResults.ToList();

            Assert.IsFalse(linkedEntitiesActions[0].HasError);
            Assert.AreEqual(3, linkedEntitiesActions[0].Result.Count);
            var linkedEntitiesEmptyDocument = linkedEntitiesActions[0].Result.ElementAt(2);

            Assert.IsTrue(linkedEntitiesEmptyDocument.HasError);
            Assert.AreEqual(TextAnalyticsErrorCode.InvalidDocument, linkedEntitiesEmptyDocument.Error.ErrorCode.ToString());

            Assert.IsTrue(linkedEntitiesActions[1].HasError);
            Assert.AreEqual(TextAnalyticsErrorCode.InvalidRequest, linkedEntitiesActions[1].Error.ErrorCode.ToString());
        }
Exemplo n.º 3
0
        public async Task AnalyzeOperationWithMultipleActions()
        {
            TextAnalyticsClient client = GetClient();

            var batchDocuments = new List <TextDocumentInput>
            {
                new TextDocumentInput("1", "Microsoft was founded by Bill Gates and Paul Allen.")
                {
                    Language = "en",
                },
                new TextDocumentInput("2", "Mi perro y mi gato tienen que ir al veterinario.")
                {
                    Language = "es",
                }
            };

            TextAnalyticsActions batchActions = new TextAnalyticsActions()
            {
                ExtractKeyPhrasesOptions = new List <ExtractKeyPhrasesOptions>()
                {
                    new ExtractKeyPhrasesOptions()
                },
                RecognizeEntitiesOptions = new List <RecognizeEntitiesOptions>()
                {
                    new RecognizeEntitiesOptions()
                },
                RecognizePiiEntitiesOptions = new List <RecognizePiiEntitiesOptions>()
                {
                    new RecognizePiiEntitiesOptions()
                },
                RecognizeLinkedEntitiesOptions = new List <RecognizeLinkedEntitiesOptions>()
                {
                    new RecognizeLinkedEntitiesOptions()
                },
                DisplayName = "AnalyzeOperationWithMultipleTasks"
            };

            AnalyzeBatchActionsOperation operation = await client.StartAnalyzeBatchActionsAsync(batchDocuments, batchActions);

            Assert.AreEqual(0, operation.ActionsFailed);
            Assert.AreEqual(0, operation.ActionsSucceeded);
            Assert.AreEqual(0, operation.ActionsInProgress);
            Assert.AreEqual(0, operation.TotalActions);

            await operation.WaitForCompletionAsync(PollingInterval);

            Assert.AreEqual(0, operation.ActionsFailed);
            Assert.AreEqual(4, operation.ActionsSucceeded);
            Assert.AreEqual(0, operation.ActionsInProgress);
            Assert.AreEqual(4, operation.TotalActions);
            Assert.AreNotEqual(new DateTimeOffset(), operation.CreatedOn);
            Assert.AreNotEqual(new DateTimeOffset(), operation.LastModified);
            Assert.AreNotEqual(new DateTimeOffset(), operation.ExpiresOn);

            //Take the first page
            AnalyzeBatchActionsResult resultCollection = operation.Value.ToEnumerableAsync().Result.FirstOrDefault();

            RecognizeEntitiesResultCollection entitiesResult = resultCollection.RecognizeEntitiesActionsResults.ElementAt(0).Result;

            ExtractKeyPhrasesResultCollection keyPhrasesResult = resultCollection.ExtractKeyPhrasesActionsResults.ElementAt(0).Result;

            RecognizePiiEntitiesResultCollection piiResult = resultCollection.RecognizePiiEntitiesActionsResults.ElementAt(0).Result;

            RecognizeLinkedEntitiesResultCollection entityLinkingResult = resultCollection.RecognizeLinkedEntitiesActionsResults.ElementAt(0).Result;

            Assert.IsNotNull(keyPhrasesResult);
            Assert.IsNotNull(entitiesResult);
            Assert.IsNotNull(piiResult);
            Assert.IsNotNull(entityLinkingResult);
            Assert.AreEqual("AnalyzeOperationWithMultipleTasks", operation.DisplayName);

            // Keyphrases
            Assert.AreEqual(2, keyPhrasesResult.Count);

            var keyPhrasesListId1 = new List <string> {
                "Bill Gates", "Paul Allen", "Microsoft"
            };
            var keyPhrasesListId2 = new List <string> {
                "gato", "perro", "veterinario"
            };

            foreach (string keyphrase in keyPhrasesResult[0].KeyPhrases)
            {
                Assert.IsTrue(keyPhrasesListId1.Contains(keyphrase));
            }

            foreach (string keyphrase in keyPhrasesResult[1].KeyPhrases)
            {
                Assert.IsTrue(keyPhrasesListId2.Contains(keyphrase));
            }

            // Entities
            Assert.AreEqual(2, entitiesResult.Count);

            Assert.AreEqual(3, entitiesResult[0].Entities.Count);

            var entitiesList = new List <string> {
                "Bill Gates", "Microsoft", "Paul Allen"
            };

            foreach (CategorizedEntity entity in entitiesResult[0].Entities)
            {
                Assert.IsTrue(entitiesList.Contains(entity.Text));
                Assert.IsNotNull(entity.Category);
                Assert.IsNotNull(entity.Offset);
                Assert.IsNotNull(entity.ConfidenceScore);
            }

            // PII

            Assert.AreEqual(2, entitiesResult.Count);

            Assert.AreEqual(3, entitiesResult[0].Entities.Count);
            Assert.IsNotNull(entitiesResult[0].Id);
            Assert.IsNotNull(entitiesResult[0].Entities);
            Assert.IsNotNull(entitiesResult[0].Error);

            // Entity Linking

            Assert.AreEqual(2, entityLinkingResult.Count);

            Assert.AreEqual(3, entityLinkingResult[0].Entities.Count);
            Assert.IsNotNull(entityLinkingResult[0].Id);
            Assert.IsNotNull(entityLinkingResult[0].Entities);
            Assert.IsNotNull(entityLinkingResult[0].Error);

            foreach (LinkedEntity entity in entityLinkingResult[0].Entities)
            {
                if (entity.Name == "Bill Gates")
                {
                    Assert.AreEqual("Bill Gates", entity.DataSourceEntityId);
                    Assert.AreEqual("Wikipedia", entity.DataSource);
                }

                if (entity.Name == "Microsoft")
                {
                    Assert.AreEqual("Microsoft", entity.DataSourceEntityId);
                    Assert.AreEqual("Wikipedia", entity.DataSource);
                }
            }
        }