public int GetDistinctPunctuationsCount(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(item.Message.Where(char.IsPunctuation).Distinct().Count());
        }
        public bool IsFormWordsContained(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(IsWordsFromCollectionContained(item.Message, formWords));
        }
        public int ThreadLength(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(buhonlineDataProvider.ReadTopicMessages(item.TopicID).Count());
        }
        public int GetUserQuotesCount(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(FeatureRegex.QuoteExpression.Matches(item.Message).Count);
        }
        public bool IsSmileContained(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(smiles.Any(item.Message.Contains));
        }
        public bool IsTextHighlighted(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(FeatureRegex.HighlightBBTag.IsMatch(item.Message));
        }
        public int GetUpperLettersCount(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(item.Message.Count(char.IsUpper));
        }
        public int GetHtmlTagsCount(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(FeatureRegex.HtmlTags.Matches(item.Message).Count);
        }
        public int GetNumbersCount(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(FeatureRegex.Numbers.Split(item.Message).Length - 1);
        }
        public int GetQuestionMarksFeature(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(item.Message.Split('?').Length - 1);
        }
        public int GetPostLengthFeature(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(item.Message.Length);
        }
        public bool IsDateContained(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(FeatureRegex.Date.IsMatch(item.Message));
        }
        public int GetPoints(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(item.Points);
        }
        public bool IsEdited(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(item.Edited != null);
        }
        public bool IsThankwordsContained(FeatureParameters parameters)
        {
            int              messageId  = parameters.MessageId;
            yaf_Message      item       = buhonlineDataProvider.ReadMessage(messageId);
            HashSet <string> thankwords = Preprocessing.ThankWords;

            return(FeatureRegex.Words.Split(item.Message.ToLower()).Any(thankwords.Contains));
        }
        public bool IsHelloContained(FeatureParameters parameters)
        {
            HashSet <string> helloWords = Preprocessing.HelloWords;
            int         messageId       = parameters.MessageId;
            yaf_Message item            = buhonlineDataProvider.ReadMessage(messageId);

            return(helloWords.Any(item.Message.ToLower().StartsWith));
        }
        public bool IsSameAuthorAsTopicStarter(FeatureParameters parameters)
        {
            int         messageId            = parameters.MessageId;
            yaf_Message item                 = buhonlineDataProvider.ReadMessage(messageId);
            int         topicStarterAuthorID = GetTopicStarter(item.TopicID).UserID;

            return(item.UserID == topicStarterAuthorID);
        }
        public double QuotientPostLengthToAvarageInTopic(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);
            IEnumerable <yaf_Message> messages = buhonlineDataProvider.ReadTopicMessages(item.TopicID);

            return(messages.Average(m => m.Message.Length));
        }
        public double TimeFromTopicStarter(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);
            yaf_Message ts        = buhonlineDataProvider.ReadTopicStarter(item.TopicID);

            return((item.Posted - ts.Posted).TotalMinutes);
        }
        private static bool IsTopicStarterCited(yaf_Message item)
        {
            var topicStarter = GetTopicStarter(item);

            return
                (FeatureRegex.QuoteExpression.Matches(item.Message).Cast <Match>().Any(
                     m => m.Groups[1].Value.Trim().ToLower() == topicStarter.Message.Trim().ToLower()));
        }
Пример #21
0
 public void AddMessage(yaf_Message message)
 {
     if (messages.Count == keepMaxMessages)
     {
         messages = new Dictionary <int, yaf_Message>();
     }
     messages.Add(message.MessageID, message);
 }
        private static bool IsSmileContained(yaf_Message item)
        {
            var smiles =
                ":) ;-) :( \\:d/ :-\" =d&gt; o:) [-o&lt; [-x #-o =p~ :-k =; :-$ :-# [-( :-s :-({|= 8-[ :-& :^o ](*,) @}-\\-- :-n"
                .Split(' ');

            return(smiles.Any(item.Message.Contains));
        }
        private string GetQuestion(int messageId)
        {
            yaf_Message item         = buhonlineDataProvider.ReadMessage(messageId);
            int         topicId      = item.TopicID;
            yaf_Message topicStarter = buhonlineDataProvider.ReadTopicStarter(topicId);

            return(topicStarter.Message);
        }
        public bool IsFormulaContained(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            string[] parts = item.Message.Split(new[] { ']', '?' });
            return(parts.Any(FeatureRegex.Formula.IsMatch));
        }
        public int GetMessageCitedCount(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(Preprocessing.MessageCitedCounts.ContainsKey(item.MessageID)
                       ? Preprocessing.MessageCitedCounts[item.MessageID]
                       : 0);
        }
        public int GetAccentedWordsCount(FeatureParameters parameters)
        {
            int         messageId = parameters.MessageId;
            yaf_Message item      = buhonlineDataProvider.ReadMessage(messageId);

            return(GetTaggedWordsCount(item.Message, new List <string> {
                "b", "s", "color", "colour"
            }));
        }
        public double GetStopWordsToAllWordsCount(FeatureParameters parameters)
        {
            int              messageId = parameters.MessageId;
            yaf_Message      item      = buhonlineDataProvider.ReadMessage(messageId);
            HashSet <string> stopwords = Preprocessing.StopWords;

            return((double)FeatureRegex.Words.Split(item.Message.ToLower()).Count(stopwords.Contains) /
                   GetWordsCount(parameters));
        }
        private static int GetAuthorPostsCount(yaf_Message item)
        {
            var author = GetAuthor(item);

            if (author == null)
            {
                return(0);
            }
            return(author.NumPosts);
        }
        private static int GetAuthorForumAge(yaf_Message item)
        {
            var author = GetAuthor(item);

            if (author == null || author.Joined > item.Posted)
            {
                return(0);
            }
            return((int)(item.Posted - author.Joined).TotalDays);
        }
        private static int GetAuthorRating(yaf_Message item)
        {
            var author = GetAuthor(item);

            if (author == null)
            {
                return(0);
            }
            return(author.Points);
        }