class_docstr: A deterministic Intent parser implementation based on a dictionary
  
  This intent parser is very strict by nature, and tends to have a very good
  precision but a low recall. For this reason, it is interesting to use it
  first before potentially falling back to another parser.
class_docstr_tok: ["A","deterministic","Intent","parser","implementation","based","on","a","dictionary","This","intent","parser","is","very","strict","by","nature",",","and","tends","to","have","a","very","good","precision","but","a","low","recall",".","For","this","reason",",","it","is","interesting","to","use","it","first","before","potentially","falling","back","to","another","parser","."]
code: def _get_candidates(self, text, intents):
      candidates = defaultdict(list)
      for grouped_entity_scope in self._entity_scopes:
          entity_scope = grouped_entity_scope["entity_scope"]
          intent_group = grouped_entity_scope["intent_group"]
          intent_group = [
              intent_
              for intent_ in intent_group
              if intents is None or intent_ in intents
          ]
          if not intent_group:
              continue
  
          builtin_entities = self.builtin_entity_parser.parse(
              text, scope=entity_scope["builtin"], use_cache=True
          )
          custom_entities = self.custom_entity_parser.parse(
              text, scope=entity_scope["custom"], use_cache=True
          )
          all_entities = builtin_entities + custom_entities
          all_entities = deduplicate_overlapping_entities(all_entities)
  
          # We generate all subsets of entities to match utterances
          # containing ambivalent words which can be both entity values or
          # random words
          for entities in _get_entities_combinations(all_entities):
              processed_text = self._replace_entities_with_placeholders(
                  text, entities
              )
              for intent in intent_group:
                  cleaned_text = self._preprocess_text(text, intent)
                  cleaned_processed_text = self._preprocess_text(
                      processed_text, intent
                  )
  
                  raw_candidate = cleaned_text, []
                  placeholder_candidate = (
                      cleaned_processed_text,
                      entities,
                  )
                  intent_candidates = [
                      raw_candidate,
                      placeholder_candidate,
                  ]
                  for text_input, text_entities in intent_candidates:
                      if (
                          text_input not in candidates
                          or text_entities not in candidates[text_input]
                      ):
                          candidates[text_input].append(text_entities)
                          yield text_input, text_entities
  
imports: from __future__ import unicode_literals
  import json
  import logging
  from builtins import str
  from collections import defaultdict
  from itertools import combinations
  from pathlib import Path
  from future.utils import iteritems, itervalues
  from snips_nlu_utils import normalize, hash_str
  from snips_nlu.common.log_utils import log_elapsed_time, log_result
  from snips_nlu.common.utils import check_persisted_path, deduplicate_overlapping_entities, fitted_required, json_string
  from snips_nlu.constants import DATA, END, ENTITIES, ENTITY, ENTITY_KIND, INTENTS, LANGUAGE, RES_INTENT, RES_INTENT_NAME, RES_MATCH_RANGE, RES_SLOTS, SLOT_NAME, START, TEXT, UTTERANCES, RES_PROBA
  from snips_nlu.dataset import validate_and_format_dataset, extract_intent_entities
  from snips_nlu.dataset.utils import get_stop_words_whitelist
  from snips_nlu.entity_parser.builtin_entity_parser import is_builtin_entity
  from snips_nlu.exceptions import IntentNotFoundError, LoadingError
  from snips_nlu.intent_parser.intent_parser import IntentParser
  from snips_nlu.pipeline.configs import LookupIntentParserConfig
  from snips_nlu.preprocessing import tokenize_light
  from snips_nlu.resources import get_stop_words
  from snips_nlu.result import empty_result, intent_classification_result, parsing_result, unresolved_slot, extraction_result
label_desc: Use image node_id 8 for calling the LookupIntentParser obj's underlying member method code with example usage: obj._get_candidates(text, intents) without return types