input: Write a function to generate n-grams of a given text with a specified window size. The function should return a Counter object containing the frequency of each n-gram. If the input text is empty, the function should return an empty Counter.
  
  
  from collections import Counter
  
  def generate_ngrams(text, window_size):
      text = text.lower().split()
      ngrams = []
      for n in range(window_size, len(text) + 1):
          for i in range(len(text) - n + 1):
              ngrams.append(' '.join(text[i:i + n]))
      return Counter(ngrams)
  
  assert generate_ngrams("The quick brown fox jumps over the lazy dog", 3) == Counter({'the quick brown': 1, 'quick brown fox': 1, 'brown fox jumps': 1, 'fox jumps over': 1, 'jumps over the': 1, 'over the lazy': 1, 'the lazy dog': 1})
  assert generate_ngrams("", 3) == Counter()
  assert generate_ngrams("The The The", 2) == Counter({'the the': 2, 'the the the': 1})
  assert generate_ngrams("Sing a song of sixpence", 1) == Counter({'sing': 1, 'a': 1, 'song': 1, 'of': 1, 'sixpence': 1})
  assert generate_ngrams("Repeat repeat repeat", 3) == Counter({'repeat repeat repeat': 1, 'repeat repeat': 2})
  
output: from collections import Counter
  
  def generate_ngrams(text, window_size):
      text = text.lower().split()
      ngrams = []
      for n in range(window_size, len(text) + 1):
          for i in range(len(text) - n + 1):
              ngrams.append(' '.join(text[i:i + n]))
      return Counter(ngrams)