input: Write a function to extract the top 10 most frequent words from a given text using natural language processing. The function should return a list of tuples where each tuple contains a word and its frequency. If the text is empty, the function should return an empty list.
  assert get_top_10_words("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") == [('sit', 1), ('Lorem', 1), ('incididunt', 1), ('labore', 1), ('ut', 1), ('magna', 1), ('dolore', 1), ('aliqua', 1), ('eiusmod', 1), ('tempor', 1)]
  assert get_top_10_words("") == []
  assert get_top_10_words("Python Python Python is fun but C is also fun") == [('fun', 2), ('Python', 3), ('is', 1), ('but', 1), ('C', 1), ('also', 1)]
  assert get_top_10_words("The quick brown fox jumps over the lazy dog") == [('The', 1), ('quick', 1), ('brown', 1), ('fox', 1), ('jumps', 1), ('over', 1), ('the', 1), ('lazy', 1), ('dog', 1)]
  assert get_top_10_words("A man a plan a canal Panama") == [('a', 3), ('Panama', 1), ('canal', 1), ('plan', 1), ('man', 1)]
output: def get_top_10_words(text):
      if not text:
          return []
      words = text.split()
      freq = {}
      for word in words:
          if word in freq:
              freq[word] += 1
          else:
              freq[word] = 1
      sorted_words = sorted(freq.items(), key=lambda x: x[1], reverse=True)
      return sorted_words[:10]