docstr: [summary]
  
  Args:
      pred_list (List[Dict]): List of Sentece, each sentence contains two List (offset, string) of Event List
          [
              {
                  'offset': [{'type': 'Attack', 'roles': [['Attacker', [5, 6]], ['Place', [23]], ['Target', [17]]], 'trigger': [16]}],
                  'string': [{'roles': [['Attacker', 'John Joseph'], ['Place', 'court'], ['Target', 'himself']], 'type': 'Attack', 'trigger': 'shot'}],
              },
              ...
          ]
  Returns:
      List[Dict]: List of Sentece, each sentence contains four List (offset, string) X (trigger, role) of Event List
          [
              {
                  'offset_trigger': [('Attack', (16,))],
                  'offset_role': [('Attack', 'Attacker', (5, 6)), ('Attack', 'Place', (23,)), ('Attack', 'Target', (17,))],
                  'string_trigger': [('Attack', 'shot')],
                  'string_role': [('Attack', 'Attacker', 'John Joseph'), ('Attack', 'Place', 'court'), ('Attack', 'Target', 'himself')],
              },
              ...
          ]
code: def load_pred_list(pred_list):
      """[summary]
  
      Args:
          pred_list (List[Dict]): List of Sentece, each sentence contains two List (offset, string) of Event List
              [
                  {
                      'offset': [{'type': 'Attack', 'roles': [['Attacker', [5, 6]], ['Place', [23]], ['Target', [17]]], 'trigger': [16]}],
                      'string': [{'roles': [['Attacker', 'John Joseph'], ['Place', 'court'], ['Target', 'himself']], 'type': 'Attack', 'trigger': 'shot'}],
                  },
                  ...
              ]
      Returns:
          List[Dict]: List of Sentece, each sentence contains four List (offset, string) X (trigger, role) of Event List
              [
                  {
                      'offset_trigger': [('Attack', (16,))],
                      'offset_role': [('Attack', 'Attacker', (5, 6)), ('Attack', 'Place', (23,)), ('Attack', 'Target', (17,))],
                      'string_trigger': [('Attack', 'shot')],
                      'string_role': [('Attack', 'Attacker', 'John Joseph'), ('Attack', 'Place', 'court'), ('Attack', 'Target', 'himself')],
                  },
                  ...
              ]
      """
      pred_instance_list = list()
      for pred in pred_list:
          pred_instance = defaultdict(list)
  
          for offset_pred in pred["offset"]:
              event_type, trigger_offset = offset_pred[
                  "type"
              ], tuple_offset(offset_pred["trigger"])
              pred_instance["offset_trigger"] += [
                  (event_type, trigger_offset)
              ]
              for role_type, role_offset in offset_pred["roles"]:
                  pred_instance["offset_role"] += [
                      (event_type, role_type, tuple_offset(role_offset))
                  ]
  
          for string_pred in pred["string"]:
              event_type, trigger_string = (
                  string_pred["type"],
                  string_pred["trigger"],
              )
              pred_instance["string_trigger"] += [
                  (event_type, trigger_string)
              ]
              for role_type, role_string in string_pred["roles"]:
                  pred_instance["string_role"] += [
                      (event_type, role_type, role_string)
                  ]
          pred_instance_list += [pred_instance]
      return pred_instance_list
  
imports: from collections import defaultdict
  from copy import deepcopy
  from typing import Dict, List
  import sys
label_desc: Use image node_id 2 for calling the EventScorer obj's underlying member method code with example usage: obj.load_pred_list(pred_list) and returns: pred_instance_list