我想用大众来训练这些数据:
-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
(在这种情况下,我认为会发生一些碰撞)
我想用大众来训练这些数据:
-1 | 单词1 单词2
1 | 单词1 单词3 单词1
... ETC
如您所见,“word1”在第二个示例中重复了两次。
VW 文档说 VW 的默认行为是自动将“:1”添加到每个令牌,例如对于第一个示例:
-1 | 字1:1 字2:1
我的问题是:在第二个示例中我必须做什么?
1 | 字1:2字3
1 | 单词1 单词3 单词1
(在这种情况下,我认为会发生一些碰撞)
我昨天刚开始使用大众,所以我可能完全混淆了,但我有同样的问题,我做了一些测试。当它进行预测时,使用“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 的预测不同。
这对我来说真的没有意义,除非训练的某些随机方面(例如种子)在解析之前以某种方式与输入文本相关联。