簡體   English   中英

無法使用 gensim FastText 加載模型

[英]Cannot load model with gensim FastText

我在使用 gensim.model.FastText.load() 加載模型時遇到了麻煩。

這是我得到的一些代碼和錯誤:

from gensim.models import FastText

class FastTextModel:
    def __init__(self, model_path, dim=300):
        self.dim = dim
        self.model = FastText.load(model_path).wv

...

class GeneralModel:
    def __init__(self, config):
        if config["type"] == "fasttext":
            # path - path to model
            # dim -  dimension, here 300
            self.model = FastTextModel(config["path"], config["dim"])
  File "/project/preprocessing/pipeline.py", line 15, in __init__
    self.model_ru = GeneralModel(config["models"]["ru"])
  File "/project/models/nlp_models.py", line 101, in __init__
    self.model = FastTextModel(config["path"], config["dim"])
  File "/project/models/nlp_models.py", line 16, in __init__
    self.model = FastText.load(model_path).wv
  File "/usr/local/lib64/python3.6/site-packages/gensim/models/fasttext.py", line 936, in load
    model = super(FastText, cls).load(*args, **kwargs)
  File "/usr/local/lib64/python3.6/site-packages/gensim/models/base_any2vec.py", line 1244, in load
    model = super(BaseWordEmbeddingsModel, cls).load(*args, **kwargs)
  File "/usr/local/lib64/python3.6/site-packages/gensim/models/base_any2vec.py", line 603, in load
    return super(BaseAny2VecModel, cls).load(fname_or_handle, **kwargs)
  File "/usr/local/lib64/python3.6/site-packages/gensim/utils.py", line 423, in load
    obj._load_specials(fname, mmap, compress, subname)
  File "/usr/local/lib64/python3.6/site-packages/gensim/utils.py", line 453, in _load_specials
    getattr(self, attrib)._load_specials(cfname, mmap, compress, subname)
  File "/usr/local/lib64/python3.6/site-packages/gensim/utils.py", line 464, in _load_specials
    val = np.load(subname(fname, attrib), mmap_mode=mmap)
  File "/usr/local/lib64/python3.6/site-packages/numpy/lib/npyio.py", line 447, in load
    pickle_kwargs=pickle_kwargs)
  File "/usr/local/lib64/python3.6/site-packages/numpy/lib/format.py", line 738, in read_array
    array.shape = shape
ValueError: cannot reshape array of size 67239904 into shape (445446,300)

我已經從 Google Drive 文件夾下載了模型,盡管它會以某種方式損壞 .npy 文件(因為它們非常大),所以我分別下載了每個文件(該模型有 7 個文件),但這並沒有幫我。

另外,我讀到有時它可能是由於“加載”方法中的解壓縮錯誤造成的,但我將已經解壓縮的文件傳遞給它,所以這對我也不起作用。

將不勝感激!

模型起源於哪里? gensim FastText.load()方法僅適用於從 gensim 創建和保存的 FastText 模型(通過其.save()方法)。 此類模型使用 Python- .npy和兄弟.npy原始數組文件(用於存儲大型數組)的組合,這些文件必須保存在一起。

從 Facebook 的原始 FastText 實現中保存的模型是一種不同的格式,您可以使用load_facebook_model()實用程序函數:

https://radimrehurek.com/gensim/models/fasttext.html#gensim.models.fasttext.load_facebook_model

如果你只需要向量——就像你直接使用.wv屬性一樣——你也可以使用load_facebook_vectors()函數:

https://radimrehurek.com/gensim/models/fasttext.html#gensim.models.fasttext.load_facebook_vectors

(另外,不確定為什么您將加載的模型包裝在您自己的FastTextModel類中,該類允許調用者指定維度。您無法更改加載模型的維度,因此只閱讀模型中現有的vector_size ,而不是在外部指定它。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM