我正在研究文本分类问题,也就是说,给定一些文本,我需要为其分配某些给定的标签。
我尝试过使用 Facebook 的快速文本库,它有两个我感兴趣的实用程序:
A)带有预训练模型的词向量
B) 文本分类实用程序
然而,这些似乎是完全独立的工具,因为我无法找到任何合并这两个实用程序的教程。
我想要的是能够通过利用词向量的预训练模型对一些文本进行分类。有什么办法可以做到这一点吗?
FastText 监督训练有-pretrainedVectors
参数可以这样使用:
$ ./fasttext supervised -input train.txt -output model -epoch 25 \
-wordNgrams 2 -dim 300 -loss hs -thread 7 -minCount 1 \
-lr 1.0 -verbose 2 -pretrainedVectors wiki.ru.vec
需要考虑的几件事:
- 选择的嵌入维度必须适合预训练向量中使用的维度。例如。为了维基词向量 https://fasttext.cc/docs/en/pretrained-vectors.html必须是 300。它是由
-dim 300
争论。
- 截至2018年2月中旬,Python API(v0.8.22)不支持使用预训练向量进行训练(忽略相应参数)。所以必须使用CLI(命令行界面)版本进行训练。但是,通过 CLI 使用预训练向量训练的模型可以通过 Python API 加载并用于预测。
- 对于大量类(在我的例子中有 340 个),即使 CLI 也可能会出现异常,因此您需要使用分层 softmax 损失函数(
-loss hs
)
- 分层 Softmax 的性能比普通 SoftMax 差,因此它可能会放弃从预训练嵌入中获得的所有增益。
- 使用预训练向量训练的模型可能比未训练的模型大几倍。
- 根据我的观察,使用预训练向量训练的模型比不使用预训练向量训练的模型过拟合的速度更快
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)