public async Task AnalyzeOperationRecognizePiiEntitiesWithPiiOptions() { var mockResponse = new MockResponse(202); mockResponse.AddHeader(new HttpHeader("Operation-Location", "something/jobs/2a96a91f-7edf-4931-a880-3fdee1d56f15")); var mockTransport = new MockTransport(new[] { mockResponse, mockResponse }); var client = CreateTestClient(mockTransport); var documents = new List <string> { "Elon Musk is the CEO of SpaceX and Tesla." }; var options = new RecognizePiiEntitiesOptions(); var actions = new RecognizePiiEntitiesAction(options); TextAnalyticsActions batchActions = new TextAnalyticsActions() { RecognizePiiEntitiesActions = new List <RecognizePiiEntitiesAction>() { actions }, }; await client.StartAnalyzeActionsAsync(documents, batchActions); var contentString = GetString(mockTransport.Requests.Single().Content); ValidateRequestOptions(contentString); Assert.AreEqual(-1, contentString.IndexOf("domain")); Assert.AreEqual(-1, contentString.IndexOf("piiCategories")); }
public async Task AnalyzeOperationRecognizePiiEntitiesWithPiiOptionsFull() { var mockResponse = new MockResponse(202); mockResponse.AddHeader(new HttpHeader("Operation-Location", "something/jobs/2a96a91f-7edf-4931-a880-3fdee1d56f15")); var mockTransport = new MockTransport(new[] { mockResponse, mockResponse }); var client = CreateTestClient(mockTransport); var documents = new List <string> { "Elon Musk is the CEO of SpaceX and Tesla." }; var options = new RecognizePiiEntitiesOptions() { ModelVersion = "latest", DisableServiceLogs = true, IncludeStatistics = true, DomainFilter = PiiEntityDomain.ProtectedHealthInformation, CategoriesFilter = { PiiEntityCategory.USSocialSecurityNumber } }; var actions = new RecognizePiiEntitiesAction(options); TextAnalyticsActions batchActions = new TextAnalyticsActions() { RecognizePiiEntitiesActions = new List <RecognizePiiEntitiesAction>() { actions }, }; await client.StartAnalyzeActionsAsync(documents, batchActions); var contentString = GetString(mockTransport.Requests.Single().Content); ValidateRequestOptions(contentString, true); string domaintFilter = contentString.Substring(contentString.IndexOf("domain"), 13); var expectedDomainFilterContent = "domain\":\"phi\""; Assert.AreEqual(expectedDomainFilterContent, domaintFilter); string piiCategories = contentString.Substring(contentString.IndexOf("piiCategories"), 41); var expectedPiiCategoriesContent = "piiCategories\":[\"USSocialSecurityNumber\"]"; Assert.AreEqual(expectedPiiCategoriesContent, piiCategories); }
public async Task AnalyzeOperationRecognizePiiEntitiesWithDisableServiceLogs() { var mockResponse = new MockResponse(202); mockResponse.AddHeader(new HttpHeader("Operation-Location", "something/jobs/2a96a91f-7edf-4931-a880-3fdee1d56f15")); var mockTransport = new MockTransport(new[] { mockResponse, mockResponse }); var client = CreateTestClient(mockTransport); var documents = new List <string> { "Elon Musk is the CEO of SpaceX and Tesla." }; var options = new RecognizePiiEntitiesOptions() { DisableServiceLogs = true }; TextAnalyticsActions batchActions = new TextAnalyticsActions() { RecognizePiiEntitiesOptions = new List <RecognizePiiEntitiesOptions>() { options }, }; await client.StartAnalyzeBatchActionsAsync(documents, batchActions); var content = mockTransport.Requests.Single().Content; using var stream = new MemoryStream(); await content.WriteToAsync(stream, default); stream.Position = 0; using var streamReader = new StreamReader(stream); string contentString = streamReader.ReadToEnd(); string logging = contentString.Substring(contentString.IndexOf("loggingOptOut"), 19); var expectedContent = "loggingOptOut\":true"; Assert.AreEqual(expectedContent, logging); }
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(""); }
public abstract Response <RecognizePiiEntitiesResultCollection> RecognizePiiEntitiesBatch(IEnumerable <TextDocumentInput> documents, RecognizePiiEntitiesOptions options = default, CancellationToken cancellationToken = default);
public abstract Response <RecognizePiiEntitiesResultCollection> RecognizePiiEntitiesBatch(IEnumerable <string> documents, string language = default, RecognizePiiEntitiesOptions options = default, CancellationToken cancellationToken = default);
public abstract Response <PiiEntityCollection> RecognizePiiEntities(string document, string language = default, RecognizePiiEntitiesOptions options = default, CancellationToken cancellationToken = default);