code: def project(self, projection_model=None):
          '''
          :param projection_model: sklearn unsupervised model (e.g., PCA) by default the recommended model is umap.UMAP,
          which requires UMAP in to be installed
  
          :return: array, shape (num dimension, vocab size)
          '''
          if self.embeddings_ is None:
              raise Exception("Run set_embeddings_model or set_embeddings to get embeddings")
          if projection_model is None:
              try:
                  import umap
              except:
                  raise Exception("Please install umap (pip install umap-learn) to use the default projection_model.")
              projection_model = umap.UMAP(min_dist=0.5, metric='cosine')
          axes = projection_model.fit_transform(self.embeddings_)
          return axef project(self, projection_model=None):
          '''
          :param projection_model: sklearn unsupervised model (e.g., PCA) by default the recommended model is umap.UMAP,
          which requires UMAP in to be installed
  
          :return: array, shape (num dimension, vocab size)
          '''
          if self.embeddings_ is None:
              raise Exception("Run set_embeddings_model or set_embeddings to get embeddings")
          if projection_model is None:
              try:
                  import umap
              except:
                  raise Exception("Please install umap (pip install umap-learn) to use the default projection_model.")
              projection_model = umap.UMAP(min_dist=0.5, metric='cosine')
          axes = projection_model.fit_transform(self.embeddings_)
          return axes
docs: :param projection_model: sklearn unsupervised model (e.g., PCA) by default the recommended model is umap.UMAP,
          which requires UMAP in to be installed
  
          :return: array, shape (num dimension, vocab size)