-1

我想用大众来训练这些数据:

-1 | 单词1 单词2

1 | 单词1 单词3 单词1

... ETC

如您所见,“word1”在第二个示例中重复了两次。

VW 文档说 VW 的默认行为是自动将“:1”添加到每个令牌,例如对于第一个示例:

-1 | 字1:1 字2:1

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

  • 选项#1:将其转换如下:

1 | 字1:2字3

  • 选项#2:保持“原样”:

1 | 单词1 单词3 单词1

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

4

1 回答 1

0

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

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

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

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

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

作为附加测试,我创建了 train3,它只包含一次单词(没有以任何方式加倍),只是为了查看结果是否与 train1 或 train2 匹配,看看我是否可以确定其中一个没有得到词翻了一番。它与任何一个都不匹配。predictor3.vw 对 train1 和 train2 的预测彼此相同,但与 predictor1.vw 或 predictor2.vw 的预测不同。

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

于 2015-04-01T22:44:37.397 回答