code: def __choose_persona_from_topic(self, topic):
      topic = topic.strip()
      persona_strings = self.wow_topics_to_persona_strings_map[topic]
      for p in persona_strings:
          for persona in self.personas:
              if p in persona:
                  return persona
      if self.no_persona_is_error:
          raise ValueError(
              f"ERROR: Found no persona for topic: {topic}."
          )
      else:
          warn_once(
              f"Found no persona for topic: {topic}. Returning first persona."
          )
          return self.personas[0]
  
imports: import copy
  import os
  import random
  import re
  from collections import defaultdict
  from typing import List, Optional, Dict, Tuple
  from parlai.core.opt import Opt
  from parlai.core.teachers import ParlAIDialogTeacher, create_task_agent_from_taskname
  from parlai.tasks.convai2.agents import BothTeacher
  from parlai.tasks.empathetic_dialogues.agents import EmpatheticDialoguesTeacher
  from parlai.tasks.wizard_of_wikipedia.agents import WizardDialogKnowledgeTeacher
  from parlai.utils.misc import warn_once
  from parlai.utils.io import PathManager
  from .build import build
label_desc: Use image node_id 5 for calling the PersonaTopicifier obj's underlying member method code with example usage: obj.__choose_persona_from_topic(topic) and returns: self, persona