class_docstr: Language model base class for creating custom language models to use with the decoder.
docstr: Evaluate the language model based on the current LM state and new word.
  
  Args:
      state (CTCDecoderLMState): current LM state
      usr_token_idx (int): index of the word
  
  Returns:
      (CTCDecoderLMState, float)
          CTCDecoderLMState:
              new LM state
          float:
              score
docstr_tok: ["Evaluate","the","language","model","based","on","the","current","LM","state","and","new","word",".","Args",":","state","(","CTCDecoderLMState",")",":","current","LM","state","usr_token_idx","(","int",")",":","index","of","the","word","Returns",":","(","CTCDecoderLMState",",","float",")","CTCDecoderLMState",":","new","LM","state","float",":","score"]
code: def score(
      self, state: CTCDecoderLMState, usr_token_idx: int
  ) -> Tuple[CTCDecoderLMState, float]:
      """Evaluate the language model based on the current LM state and new word.
  
      Args:
          state (CTCDecoderLMState): current LM state
          usr_token_idx (int): index of the word
  
      Returns:
          (CTCDecoderLMState, float)
              CTCDecoderLMState:
                  new LM state
              float:
                  score
      """
      raise NotImplementedError
  
imports: from __future__ import annotations
  import itertools
  from abc import abstractmethod
  from collections import namedtuple
  from typing import Dict, List, NamedTuple, Optional, Tuple, Union
  import torch
  from flashlight.lib.text.decoder import CriterionType, LexiconDecoder, LexiconDecoderOptions, LexiconFreeDecoder, LexiconFreeDecoderOptions, LM, LMState, SmearingMode, Trie, ZeroLM
  from flashlight.lib.text.dictionary import create_word_dict, Dictionary, load_words
  from torchaudio.utils import download_asset
label_desc: Use image node_id 2 for calling the CTCDecoderLM obj's underlying member method code with example usage: obj.score(state, usr_token_idx) without return types