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); }
public void SetUp() { categories = new HashSet<string> { "illness", "treatment", "kidhealth", "doctor" }; topicExclusions = new[] { 1, 6, 7, 11, 13, 15, 16, 17, 21, 24, 34, 36, 38, 41, 47, 49, 50, 51, 57, 60, 61, 64, 65, 76, 77, 78, 83, 87, 89 }; topicStatistics = new TopicsStatistics(Program.DefaultNotStemmedQuestionList); userTopicsWalking = new UserTopicsWalking(Program.DefaultNotStemmedQuestionList, categories, topicStatistics); }
public void DistributionInit() { topicsStatistics = new TopicsStatistics(Program.DefaultQuestionList); Console.WriteLine("Preparations have been done"); }
public QuestionList NewQuestionListFilteredByTopics(params int[] topics) { var ts = new TopicsStatistics(this, Program.DocIdsFileName); var qst = topics.SelectMany(topic => ts.GetQuestionsByTopic(topic)).Distinct(); return new QuestionList(qst); }
public UserStatistics(QuestionList questionList) : base(questionList) { var parser = new MailUserPageParser(Program.MailUsersDirectory); var questionUsers = questionList.GetAllQuestions().Select(q => q.AuthorEmail); var answerUsers = questionList.GetAllAnswers().Select(a => a.AuthorEmail); var questionListUsers = new HashSet<string>(questionUsers.Union(answerUsers)); users = parser.GetObjects().Where(u => questionListUsers.Contains(u.Email)).ToList(); TopicStatistics = new TopicsStatistics(questionList); }