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); }
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()); }
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); } } }