protected Dictionary <string, double> TagByProximity(Dictionary <string, double> scoredStatements) { scoredStatements = scoredStatements .OrderBy(x => x.Value) .Reverse() .ToDictionary(x => x.Key, x => x.Value); var proximityScoredStatements = new Dictionary <string, double>(); var originalSentenceOrder = SummarizationHelper.ConvertStatementToSentences(InitialStatement); var keys = scoredStatements.Keys.ToList(); var values = scoredStatements.Values.ToList(); for (int idx = 0; idx < scoredStatements.Count; idx++) { int currentStatementIndex = 0; int parentIndex = scoredStatements.Count; int childIndex = 0; for (int originalIdx = 0; originalIdx < originalSentenceOrder.Count; originalIdx++) { string currentStatement = originalSentenceOrder[originalIdx]; string parentStatement = (originalIdx == 0) ? null : originalSentenceOrder[originalIdx - 1]; // parent is it's self if root node. string childStatement = (originalIdx == originalSentenceOrder.Count - 1) ? null: originalSentenceOrder[originalIdx + 1]; // child is it's self if last node if (parentStatement == null) { parentIndex = 0; } else if (childStatement == null) { childIndex = originalSentenceOrder.Count - 1; } if (keys[idx] == currentStatement) { currentStatementIndex = originalIdx; } else if (keys[idx] == parentStatement) { parentIndex = originalIdx; } else if (keys[idx] == childStatement) { childIndex = originalIdx; } } int distanceFromParent = Math.Abs(currentStatementIndex - parentIndex); int distanceFromChild = Math.Abs(currentStatementIndex - childIndex); double parentScore = _ratedScore(VectorWeight, distanceFromParent, keys.Count); double childScore = _ratedScore(VectorWeight, distanceFromChild, keys.Count); proximityScoredStatements.Add(keys[idx], values[idx] + (parentScore + childScore) * Math.Abs(currentStatementIndex - idx + 1)); } return(proximityScoredStatements); }
public Dictionary <string, double> Invoke(string statement) { var sentences = SummarizationHelper.ConvertStatementToSentences(statement); var emptyInitializedSentences = sentences .Select(x => new KeyValuePair <string, double>(x, 0.0)) .ToDictionary(x => x.Key, x => x.Value); return(_synonymize(emptyInitializedSentences)); }
private static Dictionary <string, double> _initializeEmpty(string statement) { var baseStatements = new Dictionary <string, double>(); List <string> sentences = SummarizationHelper.ConvertStatementToSentences(statement); foreach (string sentence in sentences) { baseStatements.Add(sentence, 0); } return(baseStatements); }