docs: def classify_paragraphs(paragraphs, stoplist, length_low=LENGTH_LOW_DEFAULT,
          length_high=LENGTH_HIGH_DEFAULT, stopwords_low=STOPWORDS_LOW_DEFAULT,
          stopwords_high=STOPWORDS_HIGH_DEFAULT, max_link_density=MAX_LINK_DENSITY_DEFAULT,
          no_headings=NO_HEADINGS_DEFAULT):
      "Context-free paragraph classification."
  
      stoplist = frozenset(w.lower() for w in stoplist)
      for paragraph in paragraphs:
          length = len(paragraph)
          stopword_density = paragraph.stopwords_density(stoplist)
          link_density = paragraph.links_density()
          paragraph.heading = bool(not no_headings and paragraph.is_heading)
  
          if link_density > max_link_density:
              paragraph.cf_class = 'bad'
          elif ('\xa9' in paragraph.text) or ('&copy' in paragraph.text):
              paragraph.cf_class = 'bad'
          elif re.search('^select|\.select', paragraph.dom_path):
              paragraph.cf_class = 'bad'
          elif length < length_low:
              if paragraph.chars_count_in_links > 0:
                  paragraph.cf_class = 'bad'
              else:
                  paragraph.cf_class = 'short'
          elif stopword_density >= stopwords_high:
              if length > length_high:
                  paragraph.cf_class = 'good'
              else:
                  paragraph.cf_class = 'neargood'
          elif stopword_density >= stopwords_low:
              paragraph.cf_class = 'neargood'
          else:
              paragraph.cf_class = 'bad'