docs: def create_corpus(src, out_dir, no_below=20, keep_words=_DEFAULT_KEEP_WORDS):
      """\
  
      """
      wordid_filename = os.path.join(out_dir, 'cables_wordids.pickle')
      bow_filename = os.path.join(out_dir, 'cables_bow.mm')
      tfidf_filename = os.path.join(out_dir, 'cables_tfidf.mm')
      predicate = None # Could be set to something like pred.origin_filter(pred.origin_germany)
      # 1. Create word dict
      dct = Dictionary()
      dct_handler = DictionaryHandler(dct)
      handler = create_filter(dct_handler)
      handle_source(src, handler, predicate)
      dct.filter_extremes(no_below=no_below, no_above=0.1, keep_n=keep_words)
      dct.save(wordid_filename)
      # 2. Reiterate through the cables and create the vector space
      corpus_handler = CorpusHandler(out_dir, dct=dct, allow_dict_updates=False)
      handler = create_filter(corpus_handler)
      handle_source(src, handler, predicate)
      # 3. Load corpus
      mm = MmCorpus(bow_filename)
      # 4. Create TF-IDF model
      tfidf = TfidfModel(mm, id2word=dct, normalize=True)
      # 5. Save the TF-IDF model
      MmCorpus.serialize(tfidf_filename, tfidf[mm], progress_cnt=10000)