code: def multi_choice_accuracy(prediction, reference, **kwargs):
      # Only find uppercase letters not surrounded by lowercase letters
      all_classes = kwargs.get("all_classes", None)
      if all_classes:
          pattern = (
              f"(?<![a-z])[{all_classes[0]}-{all_classes[-1]}](?![a-z])"
          )
      else:
          pattern = "(?<![a-z])[A-F](?![a-z])"
  
      prediction = re.findall(pattern, prediction)
      reference = re.findall(pattern, reference)
  
      prediction_set = set(prediction)
      reference_set = set(reference)
  
      score = 0.0
      for p in prediction_set:
          if p not in reference_set:
              return 0.0
          else:
              score += 1 / len(reference_set)
  
      return score
  
imports: import difflib
  import re
  import string
  from collections import Counter
  import jieba
  from fuzzywuzzy import fuzz
  from rouge import Rouge
label_desc: Use image node_id 8 for calling a global function with example usage: multi_choice_accuracy(prediction, reference) and returns: score, int