class_docstr: `UnexpecTEDIntentPolicy` has the same model architecture as `TEDPolicy`.
  
  The difference is at a task level.
  Instead of predicting the next probable action, this policy
  predicts whether the last predicted intent is a likely intent
  according to the training stories and conversation context.
class_docstr_tok: ["`","UnexpecTEDIntentPolicy","`","has","the","same","model","architecture","as","`","TEDPolicy","`",".","The","difference","is","at","a","task","level",".","Instead","of","predicting","the","next","probable","action",",","this","policy","predicts","whether","the","last","predicted","intent","is","a","likely","intent","according","to","the","training","stories","and","conversation","context","."]
docstr: Checks if the policy should skip making a prediction.
  
  A prediction can be skipped if:
      1. There is no event of type `UserUttered` in the tracker.
      2. If the `UserUttered` event's intent is new and not in domain
          (a new intent can be created from rasa interactive and not placed in
          domain yet)
      3. There is an event of type `ActionExecuted` after the last
          `UserUttered` event. This is to prevent the dialogue manager
          from getting stuck in a prediction loop.
          For example, if the last `ActionExecuted` event
          contained `action_unlikely_intent` predicted by
          `UnexpecTEDIntentPolicy` and
          if `UnexpecTEDIntentPolicy` runs inference
          on the same tracker, it will predict `action_unlikely_intent`
          again which would make the dialogue manager get stuck in a
          prediction loop.
  
  Returns:
      Whether prediction should be skipped.
docstr_tok: ["Checks","if","the","policy","should","skip","making","a","prediction",".","A","prediction","can","be","skipped","if",":","1",".","There","is","no","event","of","type","`","UserUttered","`","in","the","tracker",".","2",".","If","the","`","UserUttered","`","event","'s","intent","is","new","and","not","in","domain","(","a","new","intent","can","be","created","from","rasa","interactive","and","not","placed","in","domain","yet",")","3",".","There","is","an","event","of","type","`","ActionExecuted","`","after","the","last","`","UserUttered","`","event",".","This","is","to","prevent","the","dialogue","manager","from","getting","stuck","in","a","prediction","loop",".","For","example",",","if","the","last","`","ActionExecuted","`","event","contained","`","action_unlikely_intent","`","predicted","by","`","UnexpecTEDIntentPolicy","`","and","if","`","UnexpecTEDIntentPolicy","`","runs","inference","on","the","same","tracker",",","it","will","predict","`","action_unlikely_intent","`","again","which","would","make","the","dialogue","manager","get","stuck","in","a","prediction","loop",".","Returns",":","Whether","prediction","should","be","skipped","."]
code: def _should_skip_prediction(
      tracker: DialogueStateTracker, domain: Domain
  ) -> bool:
      """Checks if the policy should skip making a prediction.
  
      A prediction can be skipped if:
          1. There is no event of type `UserUttered` in the tracker.
          2. If the `UserUttered` event's intent is new and not in domain
              (a new intent can be created from rasa interactive and not placed in
              domain yet)
          3. There is an event of type `ActionExecuted` after the last
              `UserUttered` event. This is to prevent the dialogue manager
              from getting stuck in a prediction loop.
              For example, if the last `ActionExecuted` event
              contained `action_unlikely_intent` predicted by
              `UnexpecTEDIntentPolicy` and
              if `UnexpecTEDIntentPolicy` runs inference
              on the same tracker, it will predict `action_unlikely_intent`
              again which would make the dialogue manager get stuck in a
              prediction loop.
  
      Returns:
          Whether prediction should be skipped.
      """
      applied_events = tracker.applied_events()
  
      for event in reversed(applied_events):
          if isinstance(event, ActionExecuted):
              return True
          elif isinstance(event, UserUttered):
              if event.intent_name not in domain.intents:
                  return True
              return False
      # No event of type `ActionExecuted` and `UserUttered` means
      # that there is nothing for `UnexpecTEDIntentPolicy` to predict on.
      return True
  
imports: import dataclasses
  import logging
  from pathlib import Path
  from typing import Any, List, Optional, Text, Dict, Type, Union
  import numpy
  import tensorflow
  import rasa.utils.common
  from rasa.engine.graph import ExecutionContext
  from rasa.engine.recipes.default_recipe import DefaultV1Recipe
  from rasa.engine.storage.resource import Resource
  from rasa.engine.storage.storage import ModelStorage
  from rasa.nlu.classifiers import LABEL_RANKING_LENGTH
  from rasa.shared.nlu.training_data.features import Features
  from rasa.shared.core.domain import Domain
  from rasa.shared.core.trackers import DialogueStateTracker
  from rasa.shared.core.constants import SLOTS, ACTIVE_LOOP, ACTION_UNLIKELY_INTENT_NAME
  from rasa.shared.core.events import UserUttered, ActionExecuted
  from rasa.shared.nlu.constants import INTENT, TEXT, ENTITIES, ACTION_NAME, SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE
  from rasa.nlu.extractors.extractor import EntityTagSpec
  from rasa.core.featurizers.precomputation import MessageContainerForCoreFeaturization
  from rasa.core.featurizers.tracker_featurizers import TrackerFeaturizer
  from rasa.core.featurizers.tracker_featurizers import IntentMaxHistoryTrackerFeaturizer
  from rasa.core.featurizers.single_state_featurizer import IntentTokenizerSingleStateFeaturizer
  from rasa.shared.core.generator import TrackerWithCachedStates
  from rasa.core.constants import DIALOGUE, POLICY_MAX_HISTORY, POLICY_PRIORITY, UNLIKELY_INTENT_POLICY_PRIORITY
  from rasa.core.policies.policy import PolicyPrediction
  from rasa.core.policies.ted_policy import LABEL_KEY, LABEL_SUB_KEY, TEDPolicy, TED, SEQUENCE_LENGTH, SEQUENCE, PREDICTION_FEATURES
  from rasa.utils import train_utils
  from rasa.utils.tensorflow.models import RasaModel
  from rasa.utils.tensorflow.constants import LABEL, DENSE_DIMENSION, ENCODING_DIMENSION, UNIDIRECTIONAL_ENCODER, TRANSFORMER_SIZE, NUM_TRANSFORMER_LAYERS, NUM_HEADS, BATCH_SIZES, BATCH_STRATEGY, EPOCHS, RANDOM_SEED, RANKING_LENGTH, LOSS_TYPE, SIMILARITY_TYPE, NUM_NEG, EVAL_NUM_EXAMPLES, EVAL_NUM_EPOCHS, REGULARIZATION_CONSTANT, SCALE_LOSS, EMBEDDING_DIMENSION, DROP_RATE_DIALOGUE, DROP_RATE_LABEL, DROP_RATE, DROP_RATE_ATTENTION, CONNECTION_DENSITY, KEY_RELATIVE_ATTENTION, VALUE_RELATIVE_ATTENTION, MAX_RELATIVE_POSITION, INNER, BALANCED, TENSORBOARD_LOG_DIR, TENSORBOARD_LOG_LEVEL, CHECKPOINT_MODEL, FEATURIZERS, ENTITY_RECOGNITION, IGNORE_INTENTS_LIST, BILOU_FLAG, LEARNING_RATE, CROSS_ENTROPY, SPARSE_INPUT_DROPOUT, DENSE_INPUT_DROPOUT, MASKED_LM, HIDDEN_LAYERS_SIZES, CONCAT_DIMENSION, TOLERANCE, LABEL_PAD_ID, POSITIVE_SCORES_KEY, NEGATIVE_SCORES_KEY, USE_GPU
  from rasa.utils.tensorflow import layers
  from rasa.utils.tensorflow.model_data import RasaModelData, FeatureArray, Data
  import rasa.utils.io
  from rasa.core.exceptions import RasaCoreException
  from rasa.shared.utils import common
label_desc: Use image node_id 14 for calling the UnexpecTEDIntentPolicy obj's underlying member method code with example usage: obj._should_skip_prediction(tracker, domain) and returns: True, True, False, True