我在我的python库中使用了快速文本模型(来自官方的fasttext库)。为了运行我的u-test,我需要一个尽可能轻的模型(fasttext.FastText._FastText对象),这样我就可以在我的存储库中对其进行版本控制。
我尝试创建了一个包含5行"fake.txt“和几个单词的假文本数据集,并调用
model = fasttext.train_unsupervised("./fake.txt")
fasttext.util.reduce_model(model, 2)
model.save_model("fake_model.bin")它基本上可以工作,但模型是16Mb。这对于一个U-test资源来说是可以的,但是你认为我可以比这个更低吗?
发布于 2020-10-25 01:43:51
请注意,当使用玩具大小的数据或参数时,FastText (&类似的密集词向量模型)不会有意义地执行。(它们的所有有用/可预测/可测试的好处都依赖于大型的、多种多样的数据集&许多最终向量的微妙排列。)
但是,如果您只需要一个类型正确的相对无意义的对象/文件,那么您的方法应该是可行的。在不考虑微小训练集的情况下,使FastText模型变大的主要参数是bucket参数,其默认值为2000000。它将分配许多字符-ngram(单词-片段)槽,即使您所有实际单词都没有那么多ngram。
在初始模型创建中将bucket设置为某个小得多的值,应该也会使您的插件/替代文件小得多。
https://stackoverflow.com/questions/64501290
复制相似问题