我正在使用 Vowpal Wabbit 7.10.0 (VW) 来学习和预测文本数据的类别。但是,我的每条记录的文本数据不像一篇文章或另一个体面的文本文档,而是几个句子,如标题、副标题和关键字。
我有大约 10,000 条可用于验证、训练和测试的标记记录,以及大约 1-2 百万条未标记记录。它是一个多类问题,大约有 100 个类标签,也是不平衡的。
使用 VW 充分利用此类数据的最佳预处理和输入格式是什么?
我的经验告诉我,大众车型应该对阶级不平衡问题敏感。这是证实它的另一个来源。是对的吗?
至于选择模型,我决定我宁愿通过 n-gram 考虑单词组合,然后根据频率计数发现潜在变量(因为文本太短。)此外,有些文本倾向于列出 100 次的单词(对于 SEO)在我的数据中。因此,我不去 TF-IDF。这是对还是错?我想,我可以将 n-gram 和 bag-of-words 组合为不同的命名空间。但是从什么参数开始的分类器呢?
到目前为止,我尝试了三种不同的数据预处理方式:(1)未处理的文本,只删除了标点符号,(2)标记化,词形还原(不是词干),删除了停用词,(3)除了(2),bag字数,即 word:word_count 格式。
使用非常基本的设置(此示例使用 16 个类,而不是 100 个),结果并不令人满意:
vw input.vw -c -k --passes 300 -b 24 --ect 16 -f model.vw
vw input.vw -t -i model.vw -p preds.txt
即使在训练集上,错误率也约为 0.68。
我有一些时间限制来深入探索所有类型的设置,并且确实需要快速且内容丰富的建议:在我的案例中,最好的预处理技术是什么,以及我应该使用最新大众汽车中实现的模型。这两个问题是相关的。