input: Write a function to implement a fuzzy search algorithm that can match strings with near similarities based on a given threshold. The output should be a list of choices that are similar to the query string.
  assert find_matches("apple", ["appel", "aple", "appl", "orange"], 2)==["appel", "aple", "appl"]
  assert find_matches("banana", ["banan", "bana", "bananan", "apple"], 1)==["banan", "bana"]
  assert find_matches("grape", ["grpe", "grap", "grapeft", "cherry"], 3)==["grpe", "grap", "grapeft"]
  assert find_matches("strawberry", ["strawbery", "straw", "berry", "pineapple"], 4)==["strawbery"]
  assert find_matches("", ["apple", "banana", "cherry"], 0)==[]
output: def find_matches(query, choices, threshold):
      from difflib import SequenceMatcher
      return [choice for choice in choices if SequenceMatcher(None, query, choice).ratio() * len(query) >= threshold]