/// <summary> /// Runs the content parsing part of the summarizing algorithm /// </summary> /// <param name="contentProvider"></param> /// <param name="contentParser"></param> /// <returns></returns> public ParsedDocument ParseContent(IContentProvider contentProvider, IContentParser contentParser) { if (contentProvider == null) { throw new ArgumentNullException(nameof(contentProvider)); } if (contentParser == null) { throw new ArgumentNullException(nameof(contentParser)); } var resultingParsedDocument = new ParsedDocument { Sentences = contentParser.SplitContentIntoSentences(contentProvider.Content) }; if (resultingParsedDocument.Sentences == null) { throw new InvalidOperationException( $"{contentProvider.GetType().FullName}.SplitContentIntoSentences must not return null"); } foreach (var workingSentence in resultingParsedDocument.Sentences) { workingSentence.TextUnits = contentParser.SplitSentenceIntoTextUnits(workingSentence.OriginalSentence); if (workingSentence.TextUnits == null) { throw new InvalidOperationException( $"{contentProvider.GetType().FullName}.SplitSentenceIntoTextUnits must not return null"); } } return resultingParsedDocument; }
/// <summary> /// Runs the content analyzis part of the summarizing algorithm /// </summary> /// <param name="parsedDocument"></param> /// <param name="contentAnalyzer"></param> /// <returns></returns> public AnalyzedDocument AnalyzeParsedContent(ParsedDocument parsedDocument, IContentAnalyzer contentAnalyzer) { if (parsedDocument == null) { throw new ArgumentNullException(nameof(parsedDocument)); } if (contentAnalyzer == null) { throw new ArgumentNullException(nameof(contentAnalyzer)); } var importantTextUnits = contentAnalyzer.GetImportantTextUnits(parsedDocument.Sentences); if (importantTextUnits == null) { throw new InvalidOperationException( $"{contentAnalyzer.GetType().FullName}.GetImportantTextUnits must not return null"); } var scoredSentences = contentAnalyzer.ScoreSentences(parsedDocument.Sentences, importantTextUnits); if (scoredSentences == null) { throw new InvalidOperationException( $"{contentAnalyzer.GetType().FullName}.ScoreSentences must not return null"); } return new AnalyzedDocument() { ScoredTextUnits = importantTextUnits.OrderByDescending(tus => tus.Score).ToList(), ScoredSentences = scoredSentences.OrderByDescending(ss => ss.Score).ToList() }; }