AllenNLP - dataset_reader 变压器配置

AllenNLP - dataset_reader config for transformers

我想使用 bert 进行标记化并为 seq2seq 模型建立索引,到目前为止我的配置文件是这样的:

{
"dataset_reader": {
    "type": "seq2seq",
    "end_symbol": "[SEP]",
    "quoting": 3,
    "source_token_indexers": {
        "tokens": {
            "type": "pretrained_transformer",
            "model_name": "bert-base-german-cased"
        }
    },
    "source_tokenizer": {
        "type": "pretrained_transformer",
        "model_name": "bert-base-german-cased"
    },
    "start_symbol": "[CLS]",
    "target_token_indexers": {
        "tokens": {
            "namespace": "tokens"
        }
    },
    "target_tokenizer": {
        "type": "pretrained_transformer",
        "add_special_tokens": true,
        "model_name": "bert-base-german-cased"
    }
},

稍后当我加载模型并使用 predictor.predict_json 预测句子时,输出如下所示。

'predicted_tokens': ['[CLS]', 'Die', 'meisten', 'Universitäts', '##abs', '##ch', '##lüsse', 'sind', 'nicht', 'p', '##raxis', '##orient', '##iert', 'und', 'bereit', '##en', 'die', 'Studenten', 'nicht', 'auf', 'die', 'wirklich', '##e', 'Welt', 'vor', '.', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]', '[SEP]']

我有两个问题:

  1. 这是正常输出吗(考虑到最后所有的“[SEP]”标记)?还是我在配置文件中做错了什么?
  2. 是否有任何函数可以将这些标记转换为人类可读的句子?

谢谢

  1. 请设置add_special_tokens = False.
  2. 使用 tokenizer.convert_tokens_to_string(将子词标记列表作为输入),其中 tokenizer 指的是您的 DatasetReader 使用的标记器。

如果您还有其他问题,请告诉我们!