code: def setUp(self):
      self.documents = [
          ["cat", "dog", "mouse"],
          ["cat", "lion"],
          ["cat", "lion"],
      ]
      self.dictionary = Dictionary(self.documents)
      self.k1, self.b, self.epsilon = 1.5, 0.75, 0.25
  
      def get_idf(word):
          frequency = sum(
              map(lambda document: word in document, self.documents)
          )
          return math.log(
              (len(self.documents) - frequency + 0.5)
              / (frequency + 0.5)
          )
  
      dog_idf = get_idf("dog")
      cat_idf = get_idf("cat")
      mouse_idf = get_idf("mouse")
      lion_idf = get_idf("lion")
  
      average_idf = (dog_idf + cat_idf + mouse_idf + lion_idf) / len(
          self.dictionary
      )
      eps = self.epsilon * average_idf
  
      self.expected_dog_idf = dog_idf if dog_idf > 0 else eps
      self.expected_cat_idf = cat_idf if cat_idf > 0 else eps
      self.expected_mouse_idf = mouse_idf if mouse_idf > 0 else eps
      self.expected_lion_idf = lion_idf if lion_idf > 0 else eps
  
imports: from collections import defaultdict
  import math
  import unittest
  from gensim.models.bm25model import BM25ABC
  from gensim.models import OkapiBM25Model, LuceneBM25Model, AtireBM25Model
  from gensim.corpora import Dictionary
label_desc: Use image node_id 1 for calling the OkapiBM25ModelTest obj's underlying member method code with example usage: obj.setUp() and returns: math