FastText 使用预训练词向量进行文本分类
FastText using pre-trained word vector for text classification
我正在处理一个文本分类问题,也就是说,给定一些文本,我需要为其分配特定的给定标签。
我试过使用 Facebook 的快速文本库,它有两个我感兴趣的实用程序:
A) 带有预训练模型的词向量
B) 文本分类实用程序
但是,这些似乎是完全独立的工具,因为我一直找不到任何合并这两个实用程序的教程。
我想要的是能够利用预训练的词向量模型对一些文本进行分类。有什么办法吗?
FastText 的原生分类模式取决于您自己训练词向量,使用已知 类 的文本。因此,词向量被优化为对训练期间观察到的特定分类有用。因此,该模式通常 不会 与预训练向量一起使用。
如果使用预训练的单词向量,您可以自己以某种方式将它们组合成文本向量(例如,通过将文本的所有单词平均在一起),然后训练一个单独的分类器(例如scikit-learn 的众多选项之一)使用这些功能。
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
需要考虑的几件事:
- 选择的嵌入维度必须符合预训练向量中使用的维度。例如。 Wiki word vectors 必须是 300。它由
-dim 300
参数设置。
- 自 mid-February 2018 起,Python API (v0.8.22) 不支持使用预训练向量进行训练(忽略相应参数)。所以你必须使用 CLI(命令行界面)版本进行训练。但是,由 CLI 使用预训练向量训练的模型可以由 Python API 加载并用于预测。
- 对于大量 类(在我的例子中有 340 个),甚至 CLI 也可能因异常而中断,因此您需要使用分层 softmax 损失函数(
-loss hs
)
- 分层 softmax 的性能比普通 softmax 差,因此它可以放弃您从预训练嵌入中获得的所有增益。
- 使用预训练向量训练的模型比没有训练的模型大几倍。
- 根据我的观察,使用预训练向量训练的模型比没有训练的模型更快过拟合
我正在处理一个文本分类问题,也就是说,给定一些文本,我需要为其分配特定的给定标签。
我试过使用 Facebook 的快速文本库,它有两个我感兴趣的实用程序:
A) 带有预训练模型的词向量
B) 文本分类实用程序
但是,这些似乎是完全独立的工具,因为我一直找不到任何合并这两个实用程序的教程。
我想要的是能够利用预训练的词向量模型对一些文本进行分类。有什么办法吗?
FastText 的原生分类模式取决于您自己训练词向量,使用已知 类 的文本。因此,词向量被优化为对训练期间观察到的特定分类有用。因此,该模式通常 不会 与预训练向量一起使用。
如果使用预训练的单词向量,您可以自己以某种方式将它们组合成文本向量(例如,通过将文本的所有单词平均在一起),然后训练一个单独的分类器(例如scikit-learn 的众多选项之一)使用这些功能。
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
需要考虑的几件事:
- 选择的嵌入维度必须符合预训练向量中使用的维度。例如。 Wiki word vectors 必须是 300。它由
-dim 300
参数设置。 - 自 mid-February 2018 起,Python API (v0.8.22) 不支持使用预训练向量进行训练(忽略相应参数)。所以你必须使用 CLI(命令行界面)版本进行训练。但是,由 CLI 使用预训练向量训练的模型可以由 Python API 加载并用于预测。
- 对于大量 类(在我的例子中有 340 个),甚至 CLI 也可能因异常而中断,因此您需要使用分层 softmax 损失函数(
-loss hs
) - 分层 softmax 的性能比普通 softmax 差,因此它可以放弃您从预训练嵌入中获得的所有增益。
- 使用预训练向量训练的模型比没有训练的模型大几倍。
- 根据我的观察,使用预训练向量训练的模型比没有训练的模型更快过拟合