class_docstr: Assigns values to the items chosen for masking.
  
  `MaskValuesChooser` encapsulates the logic for deciding the value to assign
  items that where chosen for masking. The following are the behavior in the
  default implementation:
  
  For `mask_token_rate` of the time, replace the item with the `[MASK]` token:
  
  ```
  my dog is hairy -> my dog is [MASK]
  ```
  
  For `random_token_rate` of the time, replace the item with a random word:
  
  ```
  my dog is hairy -> my dog is apple
  ```
  
  For `1 - mask_token_rate - random_token_rate` of the time, keep the item
  unchanged:
  
  ```
  my dog is hairy -> my dog is hairy.
  ```
  
  The default behavior is consistent with the methodology specified in
  `Masked LM and Masking Procedure` described in `BERT: Pre-training of Deep
  Bidirectional Transformers for Language Understanding`
  (https://arxiv.org/pdf/1810.04805.pdf).
  
  Users may further customize this with behavior through subclassing and
  overriding `get_mask_values()`.
code: def mask_token(self):
      return self._mask_token
  
imports: from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import control_flow_assert
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import random_ops
  from tensorflow.python.ops.ragged import ragged_array_ops
  from tensorflow.python.ops.ragged import ragged_math_ops
  from tensorflow.python.ops.ragged import ragged_tensor
  from tensorflow.python.ops.ragged import ragged_where_op
  from tensorflow_text.python.ops import item_selector_ops
label_desc: Use image node_id 2 for calling the MaskValuesChooser obj's underlying member method code with example usage: obj.mask_token() and returns: self