ulvis.paste.net

Paste Search Dynamic
Recent pastes
Activity
  1. using system;
  2. using system.Collections.Generic;
  3. using system.Linq;
  4. using system.Text;
  5. using system.Text.RegularExpressions;
  6. using system.Threading.Tasks;
  7.  
  8. namespace Activity
  9. {
  10.     public static class Extensions
  11.     {
  12.         public static IEnumerable<string> Ngrams(string text, int n)
  13.         {
  14.             var words = new Queue<string>();
  15.             var pattern = new Regex(@"\p{L}+");
  16.             var matches = pattern.Matches(text);
  17.             foreach (Match match in matches)
  18.             {
  19.                 words.Enqueue(match.Value);
  20.                 if (words.Count == n)
  21.                 {
  22.                     var a = words.Select(word => new string(word.Select(char.ToLower).ToArray()));
  23.                     yield return string.Join(" ", a);
  24.                     words.Dequeue();
  25.                 }
  26.             }
  27.         }
  28.     }
  29.  
  30.     class Program
  31.     {
  32.         static void Main(string[] args)
  33.         {
  34.            // var text1 = args[1];
  35.            // var text2 = args[2];
  36.            // var n = int.Parse(args[3]);
  37.             var text1 = "А. С. Пушкин был... [самым] настоящим (!) поэтом. Пушкин был";
  38.             var text2 = "А. С. Пушкин был... [самым] настоящим (!) поэтом";
  39.             var n = 2;
  40.             var ngrams1 = Extensions.Ngrams(text1, n).ToArray();
  41.             var ngrams2 = Extensions.Ngrams(text2, n).ToArray();
  42.             var freq1 = ngrams1.GroupBy(ngram => ngram).ToDictionary(group=>group.Key, group=>group.ToArray().Length);
  43.             var freq2 = ngrams2.GroupBy(ngram => ngram).ToDictionary(group => group.Key, group => group.ToArray().Length);
  44.             var g = ngrams1.Union(ngrams2);
  45.  
  46.             // var freq2 = Extensions.Ngrams(text2, n).GroupBy(ngram => ngram);
  47.             // var common = Math.Min(freq1.Min(group=>group))
  48.         }
  49.  
  50.  
  51.     }
  52. }
Parsed in 0.015 seconds