public InquirerDescription Construct(InquirerRecord record)
        {
            InquirerDescription      description = new InquirerDescription();
            ILookup <string, string> lookup      = record.RawCategories.ToLookup(item => item, item => item);

            if (lookup.Contains("Positiv"))
            {
                description.Harward.Sentiment = new SentimentData(PositivityType.Positive);
            }

            if (lookup.Contains("Negativ"))
            {
                description.Harward.Sentiment = new SentimentData(PositivityType.Negative);
            }

            DataTree tree       = new DataTree(description, map);
            var      leafLookup = tree.AllLeafs.ToLookup(item => item.Name);
            int      total      = 0;

            foreach (var category in record.RawCategories)
            {
                total++;
                if (total == record.RawCategories.Length)
                {
                    int index = category.IndexOf("|");
                    description.Information = index == 0
                                                  ? category.Substring(1)
                                              .Trim()
                                                  : category;
                }
                else if (string.IsNullOrEmpty(category) ||
                         ignoreTable.ContainsKey(category))
                {
                }
                else
                {
                    ParseSubCategories(category, leafLookup, description);
                }
            }

            description.Attributes = tree.AllLeafs.Where(item => Equals(item.Value, true))
                                     .Select(item => item.Description)
                                     .ToArray();
            return(description);
        }
        private static void ParseSubCategories(string category, ILookup <string, IDataItem> leafLookup, InquirerDescription description)
        {
            var           subCategories = category.Split(' ');
            List <string> unknown       = new List <string>();

            foreach (var item in subCategories)
            {
                if (!map.ContainsField(item))
                {
                    unknown.Add(item);
                }
                else
                {
                    foreach (var dataItem in leafLookup[item])
                    {
                        dataItem.Value = true;
                    }
                }
            }

            if (unknown.Count > 0)
            {
                description.OtherTags = unknown.AccumulateItems(" ");
                log.LogTrace($"Other tags: {description.OtherTags}");
            }
        }