code: def compute(guess: str, answers: List[str]):
      if guess is None or answers is None:
          return None
      guess = normalize_answer(guess)
      for a in answers:
          if guess in normalize_answer(a):
              return CopiedSubstringMetric(1)
      return CopiedSubstringMetric(0)
  
imports: from abc import ABC, abstractmethod
  import os
  from typing import Tuple, List, Optional, Any, Dict
  import random
  from parlai.core.message import Message
  from parlai.core.metrics import F1Metric, BleuMetric, RougeMetric, AverageMetric, ExactMatchMetric, normalize_answer
  from parlai.core.opt import Opt
  from parlai.core.params import ParlaiParser
  from parlai.core.teachers import ChunkTeacher, ChunkOutput
  import parlai.tasks.wizard_of_internet.constants
  from parlai.utils.conversations import Conversations
  from parlai.utils.data import DatatypeHelper
  import parlai.utils.logging
  from parlai.tasks.wizard_of_wikipedia.agents import TOKEN_KNOWLEDGE, TOKEN_END_KNOWLEDGE
  from projects.seeker.utils import extract_entities, remove_possible_title_from_text
label_desc: Use image node_id 1 for calling the CopiedSubstringMetric obj's underlying member method code with example usage: obj.compute(guess, answers) and returns: CopiedSubstringMetric, None, CopiedSubstringMetric