private void SerializeRecognizeEntitiesResultCollection(ref Utf8JsonWriter json, RecognizeEntitiesResultCollection resultCollection)
        {
            json.WriteStartObject();
            json.WriteStartArray("documents");
            if (resultCollection.FirstOrDefault(r => r.Entities.Count > 0) != default)
            {
                foreach (var result in resultCollection)
                {
                    if (!result.HasError)
                    {
                        json.WriteStartObject();
                        json.WriteString("id", result.Id);
                        json.WriteStartArray("entities");
                        foreach (var entity in result.Entities)
                        {
                            json.WriteStartObject();
                            json.WriteString("text", entity.Text);
                            json.WriteString("type", JsonSerializer.Serialize(entity.Category));
                            json.WriteString("subtype", JsonSerializer.Serialize(entity.SubCategory));
                            json.WriteNumber("offset", entity.GraphemeOffset);
                            json.WriteNumber("length", entity.GraphemeLength);
                            json.WriteNumber("score", entity.ConfidenceScore);
                            json.WriteEndObject();
                        }
                        json.WriteEndArray();
                        json.WriteEndObject();
                    }
                }
            }
            json.WriteEndArray();

            json.WriteStartArray("errors");
            if (resultCollection.FirstOrDefault(r => r.HasError) != default)
            {
                foreach (var result in resultCollection)
                {
                    if (result.HasError)
                    {
                        json.WriteStartObject();
                        json.WriteString("id", result.Id);
                        json.WriteStartObject("error");
                        json.WriteStartObject("innerError");
                        json.WriteString("message", result.Error.Message);
                        json.WriteEndObject();
                        json.WriteEndObject();
                        json.WriteEndObject();
                    }
                }
            }
            json.WriteEndArray();

            json.WriteString("modelVersion", resultCollection.ModelVersion);
            json.WriteEndObject();

            // TODO: add statistics if needed
        }
Esempio n. 2
0
        public async Task TextWithStringIndexType()
        {
            TextAnalyticsClient client = GetClient();
            string document            = "👨 Microsoft the company.";

            RecognizeEntitiesResultCollection responseWithUnicodeCodePoint = await client.RecognizeEntitiesBatchAsync(new List <string>() { document }, "en", new TextAnalyticsRequestOptions()
            {
                StringIndexType = StringIndexType.UnicodeCodePoint
            });

            RecognizeEntitiesResultCollection responseWithUtf16CodeUnit = await client.RecognizeEntitiesBatchAsync(new List <string>() { document }, "en");

            var entitiesWithUnicodeCodePoint = responseWithUnicodeCodePoint.FirstOrDefault().Entities;
            var entitiesWithUtf16CodeUnit    = responseWithUtf16CodeUnit.FirstOrDefault().Entities;

            Assert.AreEqual(1, entitiesWithUnicodeCodePoint.Count);
            Assert.AreEqual("Microsoft", entitiesWithUnicodeCodePoint.FirstOrDefault().Text);
            Assert.AreEqual(2, entitiesWithUnicodeCodePoint.FirstOrDefault().Offset);
            Assert.AreEqual(9, entitiesWithUnicodeCodePoint.FirstOrDefault().Length);

            Assert.AreEqual(1, entitiesWithUtf16CodeUnit.Count);
            Assert.AreEqual("Microsoft", entitiesWithUtf16CodeUnit.FirstOrDefault().Text);
            Assert.AreEqual(3, entitiesWithUtf16CodeUnit.FirstOrDefault().Offset);
            Assert.AreEqual(9, entitiesWithUtf16CodeUnit.FirstOrDefault().Length);
        }
Esempio n. 3
0
        public async Task RecognizeEntitiesWithSubCategoryTest()
        {
            TextAnalyticsRequestOptions options = new TextAnalyticsRequestOptions()
            {
                ModelVersion = "2020-04-01"
            };
            TextAnalyticsClient client = GetClient();
            string document            = "I had a wonderful trip to Seattle last week.";

            RecognizeEntitiesResultCollection result = await client.RecognizeEntitiesBatchAsync(new List <string>() { document }, options : options);

            var documentResult = result.FirstOrDefault();

            Assert.IsFalse(documentResult.HasError);

            Assert.GreaterOrEqual(documentResult.Entities.Count, 3);

            foreach (CategorizedEntity entity in documentResult.Entities)
            {
                if (entity.Text == "last week")
                {
                    Assert.AreEqual("DateRange", entity.SubCategory);
                }
            }

            // Assert the options classes since overloads were added and the original now instantiates a RecognizeEntitiesOptions.
            Assert.IsFalse(options.IncludeStatistics);
            Assert.AreEqual("2020-04-01", options.ModelVersion);
            Assert.AreEqual(StringIndexType.Utf16CodeUnit, options.StringIndexType);
        }
Esempio n. 4
0
        public async Task RecognizeEntitiesCategories()
        {
            TextAnalyticsClient client   = GetClient();
            const string        document = "Bill Gates | Microsoft | New Mexico | 800-102-1100 | [email protected] | April 4, 1975 12:34 | April 4, 1975 | 12:34 | five seconds | 9 | third | 120% | €30 | 11m | 22 °C |" +
                                           "Software Engineer | Wedding | Microsoft Surface laptop | Coding | 127.0.0.1 | https://github.com/azure/azure-sdk-for-net";

            RecognizeEntitiesResultCollection response = await client.RecognizeEntitiesBatchAsync(new List <string>() { document }, "en", new TextAnalyticsRequestOptions()
            {
                ModelVersion = "2020-02-01"
            });

            var entities = response.FirstOrDefault().Entities.ToList();

            Assert.AreEqual(21, entities.Count);

            Assert.AreEqual(EntityCategory.Person, entities[0].Category);

            Assert.AreEqual(EntityCategory.Organization, entities[1].Category);

            Assert.AreEqual(EntityCategory.Location, entities[2].Category);

            Assert.AreEqual(EntityCategory.PhoneNumber, entities[3].Category);

            Assert.AreEqual(EntityCategory.Email, entities[4].Category);

            Assert.AreEqual(EntityCategory.DateTime, entities[5].Category);

            Assert.AreEqual(EntityCategory.DateTime, entities[6].Category);

            Assert.AreEqual(EntityCategory.DateTime, entities[7].Category);

            Assert.AreEqual(EntityCategory.DateTime, entities[8].Category);

            Assert.AreEqual(EntityCategory.Quantity, entities[9].Category);

            Assert.AreEqual(EntityCategory.Quantity, entities[10].Category);

            Assert.AreEqual(EntityCategory.Quantity, entities[11].Category);

            Assert.AreEqual(EntityCategory.Quantity, entities[12].Category);

            Assert.AreEqual(EntityCategory.Quantity, entities[13].Category);

            Assert.AreEqual(EntityCategory.Quantity, entities[14].Category);

            Assert.AreEqual(EntityCategory.PersonType, entities[15].Category);

            Assert.AreEqual(EntityCategory.Event, entities[16].Category);

            Assert.AreEqual(EntityCategory.Product, entities[17].Category);

            Assert.AreEqual(EntityCategory.Skill, entities[18].Category);

            Assert.AreEqual(EntityCategory.IPAddress, entities[19].Category);

            Assert.AreEqual(EntityCategory.Url, entities[20].Category);
        }
Esempio n. 5
0
        private void SerializeRecognizeEntitiesResultCollection(ref Utf8JsonWriter json, RecognizeEntitiesResultCollection resultCollection)
        {
            json.WriteStartObject();
            json.WriteStartArray("documents");
            if (resultCollection.FirstOrDefault(r => r.NamedEntities.Count > 0) != default)
            {
                foreach (var result in resultCollection)
                {
                    if (result.NamedEntities.Count > 0)
                    {
                        json.WriteStartObject();
                        json.WriteString("id", result.Id);
                        json.WriteStartArray("entities");
                        foreach (var entity in result.NamedEntities)
                        {
                            json.WriteStartObject();
                            json.WriteString("text", entity.Text);
                            json.WriteString("type", entity.Type);
                            json.WriteString("subtype", entity.SubType);
                            json.WriteNumber("offset", entity.Offset);
                            json.WriteNumber("length", entity.Length);
                            json.WriteNumber("score", entity.Score);
                            json.WriteEndObject();
                        }
                        json.WriteEndArray();
                        json.WriteEndObject();
                    }
                }
            }
            json.WriteEndArray();

            json.WriteStartArray("errors");
            if (resultCollection.FirstOrDefault(r => r.ErrorMessage != default) != default)
            {
                foreach (var result in resultCollection)
                {
                    if (result.ErrorMessage != null)
                    {
                        json.WriteStartObject();
                        json.WriteString("id", result.Id);
                        json.WriteStartObject("error");
                        json.WriteStartObject("innerError");
                        json.WriteString("message", result.ErrorMessage);
                        json.WriteEndObject();
                        json.WriteEndObject();
                        json.WriteEndObject();
                    }
                }
            }
            json.WriteEndArray();

            json.WriteString("modelVersion", resultCollection.ModelVersion);
            json.WriteEndObject();

            // TODO: add statistics if needed
        }
Esempio n. 6
0
        public async Task EntitiesCategories()
        {
            TextAnalyticsClient client   = GetClient();
            const string        document = "Bill Gates | Microsoft | New Mexico";

            RecognizeEntitiesResultCollection response = await client.RecognizeEntitiesBatchAsync(new List <string>() { document }, "en", new TextAnalyticsRequestOptions()
            {
                ModelVersion = "2020-02-01"
            });

            var entities = response.FirstOrDefault().Entities.ToList();

            Assert.AreEqual(3, entities.Count);

            Assert.AreEqual(EntityCategory.Person, entities[0].Category);

            Assert.AreEqual(EntityCategory.Organization, entities[1].Category);

            Assert.AreEqual(EntityCategory.Location, entities[2].Category);
        }
        public async Task RecognizeEntitiesWithSubCategoryTest()
        {
            TextAnalyticsClient client = GetClient();
            string document            = "I had a wonderful trip to Seattle last week.";

            RecognizeEntitiesResultCollection result = await client.RecognizeEntitiesBatchAsync(new List <string>() { document }, options : new TextAnalyticsRequestOptions()
            {
                ModelVersion = "2020-04-01"
            });

            var documentResult = result.FirstOrDefault();

            Assert.IsFalse(documentResult.HasError);

            Assert.GreaterOrEqual(documentResult.Entities.Count, 3);

            foreach (CategorizedEntity entity in documentResult.Entities)
            {
                if (entity.Text == "last week")
                {
                    Assert.AreEqual("DateRange", entity.SubCategory);
                }
            }
        }