class_docstr: A simple heuristic based on average word length.
  
  A value is classified as NL iff all the conditions are met:
  1. It contains at least min_words_per_value.
  2. The average length is in [avg_word_length_min, avg_word_length_max].
  For efficiency, the value is cropped to at most crop_at_length chars.
  
  This heuristic is lenient and targets efficiency. For more accurate results
  consider replacing with a model-based classifier.
code: def classify(self, value: Text) -> bool:
      words = value[0 : self._crop_at_length].split()
      if not words:
          return False
      # Expanded for loop efficiency.
      sum_word_length = 0
      for w in words:
          sum_word_length += len(w)
      avg_word_length = float(sum_word_length) / len(words)
      if (
          self._avg_word_length_min
          <= avg_word_length
          <= self._avg_word_length_max
          and len(words) >= self._min_words_per_value
      ):
          return True
      return False
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import abc
  from typing import Optional
  import numpy
  import pyarrow
  import six
  from tensorflow_data_validation import types
  from tensorflow_data_validation.statistics.generators import stats_generator
  from tensorflow_data_validation.utils import stats_util
  from tfx_bsl.arrow import array_util
  from typing import Iterable, Text
  from tensorflow_metadata.proto.v0 import statistics_pb2
label_desc: Use image node_id 2 for calling the AverageWordHeuristicNLClassifier obj's underlying member method code with example usage: obj.classify(value) and returns: False, False, True