尽管词向量模型目前看来已经有些过时了,但是有的旧模型还是会用预训练词向量模型,如果你跟我一样没机器,只能用个8G内存的笔记本的话,加载不了fastText提供的预训练模型怎么办?以前我都是直接拿份小语料自己训练个低维的模型,不仅浪费时间,而且质量得不到保证,有种感觉,无论是词向量模型还是BERT模型最好还是直接用官网提供的预训练模型。而且像现在的BERT延伸的模型,如果只有个笔记本,就别再想训练自己的模型了,况且本身训练模型这事也没啥意思,这里有点感想,不论对BERT延伸的多好,他们的评测都是在英文语料上进行的,除了bert和albert似乎没有看到有中文的预训练模型,那就算模型评测跟花一样漂亮,也是白扯。
fastText发布的预训练词向量维度为300维,如果你需要更小维度的模型,可以使用维度缩小器。为了使用该功能,你必须安装fastText的python包Get started · fastText。
示例:为了得到100维的向量,你可以使用下边的命令
$ ./reduce_model.py cc.en.300.bin 100
Loading model
Reducing matrix dimensions
Saving model
cc.en.100.bin saved
也可以在python程序中修改
>>> import fasttext
>>> import fasttext.util
>>> ft = fasttext.load_model('cc.en.300.bin')
>>> ft.get_dimension()
300
>>> fasttext.util.reduce_model(ft, 100)
>>> ft.get_dimension()
100
>>> ft.save_model('cc.en.100.bin')
参考:https://fasttext.cc/docs/en/crawl-vectors.html#adapt-the-dimension