该spacy pretrain
命令的工作方式是这样的:您为其提供一个配置文件和一个输出目录。或者,您可以在命令行上覆盖配置文件中的某些设置。例如,如果您的配置文件将包含此块:
[paths]
train = null
dev = null
raw_text = "path/to/toy_data"
然后在命令行上,您可以--raw_text="path/to/production_data"
更改该特定值。
现在,您似乎收到此错误消息,因为您raw_text
在paths
块中没有条目,因此您无法覆盖它。
事实上,我想知道你是否pretraining
在你的配置文件中定义了一个块?如果没有 - 看看spacy init config
。您可以为其提供选项,该选项-pt
将填充预训练步骤的默认值,特别是它将创建类似这样的内容(在其他“正常”设置中):
[paths]
raw_text = null
...
[pretraining]
max_epochs = 1000
dropout = 0.2
n_save_every = null
component = "tok2vec"
layer = ""
corpus = "corpora.pretrain"
[pretraining.batcher]
@batchers = "spacy.batch_by_words.v1"
size = 3000
discard_oversize = false
tolerance = 0.2
get_length = null
[pretraining.objective]
@architectures = "spacy.PretrainCharacters.v1"
maxout_pieces = 3
hidden_size = 300
n_characters = 4
[pretraining.optimizer]
@optimizers = "Adam.v1"
beta1 = 0.9
beta2 = 0.999
L2_is_weight_decay = true
L2 = 0.01
grad_clip = 1.0
use_averages = true
eps = 0.00000001
learn_rate = 0.001
...
[corpora.pretrain]
@readers = "spacy.JsonlCorpus.v1"
path = ${paths.raw_text}
min_length = 5
max_length = 500
limit = 0
请注意语料库阅读器如何raw_text
使用该变量,它将为您的预训练步骤流式传输原始文本。因此,您需要确保所有这些都正确连接,然后才能运行预训练。