文本功能编码规则



我想使用VW来训练这些数据:

-1|单词1单词2

1|单词1单词3单词1

etc

正如您所看到的,"word1"在第二个示例中重复了两次。

VW文档表示,VW的默认行为是自动向每个令牌添加":1",例如第一个示例:

-1|word1:1 word2:1

我的问题是:在第二个例子中,我必须做什么?

  • 选项#1:按如下方式转换:

1|word1:2 word3

  • 选项2:保持原样:

1|单词1单词3单词1

(在这种情况下,我认为会发生一些碰撞)

我昨天刚开始使用VW,所以我可能会完全混淆,但我有同样的问题,我做了一些测试。当它做出预测时,你使用"单词:2"还是"单词"似乎并不重要。但是,在训练时,这似乎很重要。我创建了两个小的训练数据文件,train1和train2,它们的区别仅在于使用"word:2"one_answers"word word",并进行了如下训练:

vw -d train1 -f predictor1.vw --loss_function hinge
vw -d train2 -f predictor2.vw --loss_function hinge

然后,我查看了基于训练1:的两个数据集的预测

vw -d train1 -t -i predictor1.vw -p out ; cat out
vw -d train2 -t -i predictor1.vw -p out ; cat out

他们是一样的。用predictor2.vw做同样的事情会得到不同的结果,但第1列和第2列的结果相同。

作为一项额外的测试,我创建了train3,其中只包含一次单词(无论如何都没有加倍),只是为了看看结果是否与train1或train2匹配,看看我是否可以确定其中一个没有将单词加倍。两者都不匹配。predictor3.vw对train1和train2给出了彼此相同的预测,但与来自predictor1.vw或predictor2.vw的预测不同。

这对我来说真的没有意义,除非训练的某些随机方面(例如种子)在解析之前以某种方式链接到输入文本。

最新更新