解决fasttext内存不足无法读取模型的问题

来源:互联网 发布:淘宝联盟推广软件 编辑:程序博客网 时间:2024/06/06 02:39

fasttext是个好东西,是由facebook在2016年推出的一个训练词向量的模型。相比于之前Google的word2vec,fasttext可以解决out of vocabulary的问题。fasttext还能够用于有监督的文本分类。更赞的是,facebook提供了200多种语言的预训练模型和词向量。
然而,在安装完fasttext后,当我读取了3GB的中文模型时,却出了下面的问题:

Traceback (most recent call last):  File "text_fasttext.py", line 7, in <module>    text()  File "text_fasttext.py", line 4, in text    model = fasttext.load_model('wiki.zh.bin')  File "fasttext/fasttext.pyx", line 154, in fasttext.fasttext.load_modelException: fastText: Cannot load wiki.zh.bin due to C++ extension failed to allocate the memory

上网查了下,大概意思是C++扩展无法分配足够的内存用于存储模型。然而,我的mac内存明明是够的,上网搜了很久也没发现解决方法。
最后,终于看到了一种解决方法:使用pyfasttext。 这是fasttext的另一种实现,文档链接:https://pypi.python.org/pypi/pyfasttext/ 。 看来是原版的实现有点问题。
执行 pip3 install pyfasttext 进行安装
读取模型:
from pyfasttext import FastText
model = FastText(‘wiki.zh.bin’)
ok,模型可以读取了!