public UserTopicsWalking(QuestionList questionList, ICollection<string> categories, TopicsStatistics topicStatistics)
        {
            this.topicStatistics = topicStatistics;

            UserQuestions = questionList.GetAllQuestions().Where(q => categories.Contains(q.Category))
                .GroupBy(q => q.AuthorEmail, (userEmail, hisQuestions) => new { userEmail, hisQuestions })
                .Where(u => u.hisQuestions.Count() >= 2)
                .ToDictionary(u => u.userEmail, u => u.hisQuestions);
            foreach (var questions in UserQuestions.Values)
            {
                foreach (var question in questions)
                {
                    var topic = topicStatistics.GetTopicByQuestionId(question.Id, Threshold);
                    if (topic == null) continue;

                    if (topicDistribution.ContainsKey(topic.Item1))
                    {
                        topicDistribution[topic.Item1]++;
                    }
                    else
                    {
                        topicDistribution[topic.Item1] = 1;
                    }
                }
            }
            userQuestionsCount = topicDistribution.Sum(it => it.Value);
            topicMoves = GetTopicSequenceFrequences(2);
        }