class_docstr: Designed for use only in the term_scorer argument.
  This should really be inherit specific type.
  
  term_scorer = (BM25Difference(corpus, k1 = 1.4, b=0.9)
          .set_categories('Positive', ['Negative'], ['Plot']))
  
  html = st.produce_frequency_explorer(
          corpus,
          category='Positive',
          not_categories=['Negative'],
          neutral_categories=['Plot'],
          term_scorer=term_scorer,
          metadata=rdf['movie_name'],
          grey_threshold=0,
          show_neutral=True
  )
  file_name = 'output/rotten_fresh_bm25.html'
  open(file_name, 'wb').write(html.encode('utf-8'))
  IFrame(src=file_name, width=1300, height=700)
docstr: In this case, args aren't used, since this information is taken
  directly from the corpus categories.
  
  Returns
  -------
  np.array, scores
docstr_tok: ["In","this","case",",","args","are","n't","used",",","since","this","information","is","taken","directly","from","the","corpus","categories",".","Returns","--","--","--","-","np.array",",","scores"]
code: def get_scores(self, *args) -> np.array:
      """
      In this case, args aren't used, since this information is taken
      directly from the corpus categories.
  
      Returns
      -------
      np.array, scores
      """
      if self.tdf_ is None:
          raise Exception(
              "Use set_category_name('category name', ['not category name', ...]) "
              + "to set the category of interest"
          )
  
      avgdl = self.tdf_.sum(axis=0).mean()
  
      def idf(cat):
          # Number of categories with term
          n_q = (self.tdf_ > 0).astype(int).max(axis=1).sum()
          N = len(self.tdf_)
          return (N - n_q + 0.5) / (n_q + 0.5)
  
      def length_adjusted_tf(cat):
          tf = self.tdf_[cat]
          dl = self.tdf_[cat].sum()
          return (tf * (self.k1 + 1)) / (
              tf + self.k1 * (1 - self.b + self.b * (dl / avgdl))
          )
  
      def bm25_score(cat):
          return -length_adjusted_tf(cat) * np.log(idf(cat))
  
      scores = bm25_score("cat") - bm25_score("ncat")
      return scores
  
imports: import numpy
  from scattertext.termscoring.CorpusBasedTermScorer import CorpusBasedTermScorer
label_desc: Use image node_id 2 for calling the BM25Difference obj's underlying member method code with example usage: obj.get_scores() and returns: scores, unknown, unknown, unknown