Source code for deepparse.embeddings_models.embeddings_model_factory

from .. import download_fasttext_embeddings, download_fasttext_magnitude_embeddings, download_model2vec_embeddings
from . import (
    BPEmbEmbeddingsModel,
    EmbeddingsModel,
    FastTextEmbeddingsModel,
    MagnitudeEmbeddingsModel,
    Model2VecEmbeddingsModel,
)


[docs] class EmbeddingsModelFactory: """ A factory for the creation of embeddings models. """
[docs] def create(self, embedding_model_type: str, cache_dir: str, verbose: bool = True) -> EmbeddingsModel: """ Embeddings model creation method. Args: embedding_model_type (str): the type of the embeddings model to create. Valid options are ``"bpemb"``, ``"fasttext"``, ``"fasttext-light"`` (the Magnitude embeddings), ``"model2vec-8m"``, ``"model2vec-32m"`` and ``"model2vec-multilingual"``. cache_dir (str): Path to the cache directory where the embeddings model exists or is to be downloaded. verbose (bool): Whether or not to make the loading of the embeddings verbose. Return: An :class:`~EmbeddingsModel` """ if "bpemb" in embedding_model_type: embeddings_model = BPEmbEmbeddingsModel(verbose=verbose, cache_dir=cache_dir) elif "fasttext" in embedding_model_type: if "fasttext-light" in embedding_model_type: file_name = download_fasttext_magnitude_embeddings(cache_dir=cache_dir, verbose=verbose) embeddings_model = MagnitudeEmbeddingsModel(file_name, verbose=verbose) else: file_name = download_fasttext_embeddings(cache_dir=cache_dir, verbose=verbose) embeddings_model = FastTextEmbeddingsModel(file_name, verbose=verbose) elif "model2vec" in embedding_model_type: embeddings_path, _ = download_model2vec_embeddings( embedding_model_type, cache_dir=cache_dir, verbose=verbose ) embeddings_model = Model2VecEmbeddingsModel(embeddings_path, verbose=verbose) else: raise NotImplementedError(f""" The {embedding_model_type} embeddings model does not exist. Existing embeddings models are: bpemb, fasttext, fasttext_magnitude and model2vec""") return embeddings_model