gensim - fasttext - 为什么 `load_facebook_vectors` 不起作用?

frh*_*yme 7 python gensim fasttext

我尝试从fastext - wiki 词向量加载预先训练的 FastText 向量。

我的代码如下,并且运行良好。

from gensim.models import FastText
model = FastText.load_fasttext_format('./wiki.en/wiki.en.bin')
Run Code Online (Sandbox Code Playgroud)

但是,警告消息有点烦人。

gensim_fasttext_pretrained_vector.py:13: DeprecationWarning: Call to deprecated `load_fasttext_format` (use load_facebook_vectors (to use pretrained embeddings)
Run Code Online (Sandbox Code Playgroud)

该消息表示,load_fasttext_format将被弃用,因此,最好使用load_facebook_vectors.

所以我决定更改代码。我更改的代码如下所示。

gensim_fasttext_pretrained_vector.py:13: DeprecationWarning: Call to deprecated `load_fasttext_format` (use load_facebook_vectors (to use pretrained embeddings)
Run Code Online (Sandbox Code Playgroud)

但是,错误发生了,错误信息是这样的。

Traceback (most recent call last):
  File "gensim_fasttext_pretrained_vector.py", line 13, in <module>
    model = FastText.load_facebook_vectors('./wiki.en/wiki.en.bin')
AttributeError: type object 'FastText' has no attribute 'load_facebook_vectors'
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会发生这些事情。我只是改变了消息所说的内容,但它不起作用。如果您对此有所了解,请告诉我。

总是,谢谢你们的帮助。

Anw*_*vic 6

你已经快到了,你需要改变两件事:

  • 首先,都是fasttext小写字母,不是Fasttext
  • 其次,要使用load_facebook_vectors,您需要先创建一个datapath对象,然后再使用它。

所以,你应该这样做:

from gensim.models import fasttext
from gensim.test.utils import datapath

wv = fasttext.load_facebook_vectors(datapath("./wiki.en/wiki.en.bin"))
Run Code Online (Sandbox Code Playgroud)

  • 我很高兴它能起作用;但请注意,您不需要使用“datapath”。模块“gensim.models.fasttext”上的“load_facebook_vectors()”方法将采用纯字符串,只要它是有效的文件。 (6认同)