public IEnumerable <TagData> GetTags(IEnumerable <TaggableContent> taggableContents) { try { var credentials = new AzureCognitiveServicesTextAnalyticsClientCredentials(Key); var client = new TextAnalyticsClient(credentials) { Endpoint = Endpoint }; //All of the Text Analytics API endpoints accept raw text data.The current limit is 5,120 characters for each document; //Limit Value //Maximum size of a single document 5,120 characters as measured by StringInfo.LengthInTextElements. //Maximum size of entire request 1 MB //Maximum number of documents in a request 1,000 documents var documents = new List <MultiLanguageInput>(); int id = 0; foreach (StringContent taggableContent in taggableContents) { var text = (taggableContent != null) ? taggableContent.Content : null; if (string.IsNullOrEmpty(text)) { continue; } if (text.Length > 5100) { text = text.Substring(0, 5100); } //just skip it if description is 500 characters or less, not enough content to process //if (text.Length > 500) documents.Add(new MultiLanguageInput() { Id = id.ToString(), Text = text }); id++; } if (!documents.Any()) { return(new List <TagData>()); } var inputDocuments = new MultiLanguageBatchInput(documents); var results = client.EntitiesBatch(inputDocuments); if (results.Errors.Count > 0) { var messageBus = MessageBus; if (messageBus != null) { foreach (var error in results.Errors) { messageBus.SendMessage(new Message() { Body = string.Format("Azure Cogntive Services Text Analytics Error: {0} Message: {1}", error.Id, error.Message), Level = MessageLevel.Error }); } } } var tagData = new List <TagData>(); var entityNames = new List <string>(); foreach (var document in results.Documents) { foreach (var entity in document.Entities) { if (!Exclude.Contains(entity.Name.ToLower()) && (entity.Type == "Organization" || entity.Type == "Location" || (entity.Type == "Other" && IncludeOther.Contains(entity.Name.ToLower())) || (entity.Type == "Quantity" && IncludeQuantity.Contains(entity.Name)))) { var name = NormalizeEntityName(entity.Name); if (entity.SubType != null) { entityNames.Add(string.Format("{0} - {1} - {2}", entity.Type, entity.SubType, name)); } else { entityNames.Add(string.Format("{0} - {1}", entity.Type, name)); } } } } return(entityNames.Distinct().Select(x => new TagData() { TagName = x })); } catch (Exception ex) { var messageBus = MessageBus; if (messageBus != null) { messageBus.SendMessage(new Message() { Body = string.Format("Azure Cogntive Services Text Analytics Error: {0}", ex.Message), Level = MessageLevel.Error }); } } return(new List <TagData>()); }