如何在 opennmt 转换器中使用自定义分词器

How can I use custom tokenizer in opennmt transformer

我正在尝试使用 opennmt-py 进行转换。
而且我已经有了由 sentencepiece(unigram) 训练的分词器。
但是我不知道如何在训练配置 yaml 中使用我的自定义分词器。
我指的是 opennmt-docs (https://opennmt.net/OpenNMT-py/examples/Translation.html) 的网站。
这是我的代码和错误。

# original_ko_en.yaml
## Where is the vocab(s)
src_vocab: /workspace/tokenizer/t_50k.vocab
tgt_vocab: /workspace/tokenizer/t_50k.vocab

# Corpus opts:
data:
   corpus_1:
       path_src: /storage/genericdata_basemodel/train.ko
       path_tgt: /storage/genericdata_basemodel/train.en
       transforms: [sentencepiece]
       weight: 1
   valid:
       path_src: /storage/genericdata_basemodel/valid.ko
       path_tgt: /storage/genericdata_basemodel/valid.en
       transforms: [sentencepiece]

#### Subword
src_subword_model: /workspace/tokenizer/t_50k.model
tgt_subword_model: /workspace/tokenizer/t_50k.model
src_subword_nbest: 1
src_subword_alpha: 0.0
tgt_subword_nbest: 1
tgt_subword_alpha: 0.0

# filter
# src_seq_length: 200
# tgt_seq_length: 200

# silently ignore empty lines in the data
skip_empty_level: silent

# Train on a single GPU
world_size: 1
gpu_ranks: [0]

# General opts
save_model: /storage/models/opennmt_v1/opennmt
keep_checkpoint: 100
save_checkpoint_steps: 10000
average_decay: 0.0005
seed: 1234
train_steps: 500000
valid_steps: 20000
warmup_steps: 8000
report_every: 1000

# Model
decoder_type: transformer
encoder_type: transformer
layers: 6
heads: 8
word_vec_size: 512
rnn_size: 512
transformer_ff: 2048
dropout: 0.1
label_smoothing: 0.1

# Optimization
optim: adam
adam_beta1: 0.9
adam_beta2: 0.998
decay_method: noam
learning_rate: 2.0
max_grad_norm: 0.0
normalization: tokens
param_init: 0.0
param_init_glorot: 'true'
position_encoding: 'true'

# Batching
batch_size: 4096
batch_type: tokens
accum_count: 8
max_generator_batches: 2

# Visualization
tensorboard: True
tensorboard_log_dir: /workspace/runs/onmt1

并且当我键入 < onmt_train -config xxx.yaml >

所以,问题是两个。

  1. 我的句子分词器嵌入是浮动的。我该如何解决 int 错误?
  2. 当训练意外停止或者我想再训练一些时model.pt 从 some model.pt 开始训练的命令是什么?

我期待任何意见。 谢谢

我得到了答案。

  1. 我们可以在onmt中使用tools/spm_to_vocab。
  2. train_from 参数是一个。