/// <summary> /// Выделение предложений из текста параграфа /// </summary> /// <param name="text">текст параграфа</param> /// <param name="isBlogText">флаг, что парсится блоговский текст</param> /// <returns>список предложений</returns> public List <Sentence> Select(string paragraph, bool isBlogText) { var paragraphMap = new ParagraphMap(_tokenSelector, paragraph, PotencialSentenceEnd.Select(paragraph)); Filter(paragraphMap); var sentenceEnds = paragraphMap.SentenceEndPositions().ToList(); if (isBlogText) { sentenceEnds = sentenceEnds .Union(_tokenSelector.SelectTokens(paragraph, TokenType.Smile).Select(_ => new PotencialSentenceEnd(_.Index, _.Index + _.Length))) .OrderBy(_ => _.Index) .ToList(); } return(CreateSentences(paragraphMap.Text, sentenceEnds)); }
/// <summary> /// Проверка, что параграф заканчивается на потенциальный конец предложения /// </summary> /// <param name="paragraph">параграф</param> /// <returns>результат проверки</returns> private bool IsPotencialParagraphEnd(Paragraph paragraph) { return(PotencialSentenceEnd.Select(paragraph.Text.Trim().LastOrDefault().ToString()).Any()); }