无法使用 Keras 初始化两个不同的分词器

问题描述 投票:0回答:0

对于拼写纠正任务,我构建了一个包含 LSTM 和注意力机制的 seq2seq 模型。我使用 Keras 进行字符级标记化。我初始化了两个不同的分词器,一个用于拼写错误的句子,另一个用于更正的句子。

测试后,我看到该模型生成了空字符串,我认为标记化存在问题。否则,应该没有必要为拼写错误和更正的句子初始化不同的分词器。

当我看到这些分词器的 word_index 时,我意识到每个字符的索引都是相同的。例如:

Tokenized sentence with typo tokenizer: [[20, 17, 2, 24, 8, 1, 13, 3, 5, 24, 4, 7, 7, 3, 6, 1, 4, 12, 3, 1, 27, 2, 13, 4, 1, 25, 2, 13, 2, 13, 1, 2, 19, 3, 23, 4, 1, 3, 27, 24, 2, 5, 3, 1, 23, 21]]

Vocabulary: {' ': 1, 'a': 2, 'e': 3, 'i': 4, 'n': 5, 'r': 6, 'l': 7, 'ı': 8, 'd': 9, 'k': 10, 't': 11, 's': 12, 'm': 13, 'u': 14, 'y': 15, 'o': 16, 'b': 17, 'ü': 18, 'ş': 19, '<': 20, '>': 21, 'g': 22, 'v': 23, 'z': 24, 'h': 25, 'p': 26, 'c': 27, 'ç': 28, 'ğ': 29, 'ö': 30, 'f': 31, '1': 32, '0': 33, '2': 34, '9': 35, 'j': 36, 'w': 37, '8': 38, '3': 39, '5': 40, '4': 41, '6': 42, '7': 43, 'x': 44, 'q': 45}

Tokenized sentence with corrects tokenizer: [[20, 17, 2, 24, 8, 1, 13, 3, 5, 24, 4, 7, 7, 3, 6, 1, 4, 12, 3, 1, 27, 2, 13, 4, 1, 25, 2, 13, 2, 13, 1, 2, 19, 3, 23, 4, 1, 3, 27, 24, 2, 5, 3, 1, 23, 21]]

Vocabulary: {' ': 1, 'a': 2, 'e': 3, 'i': 4, 'n': 5, 'r': 6, 'l': 7, 'ı': 8, 'd': 9, 'k': 10, 't': 11, 's': 12, 'm': 13, 'u': 14, 'y': 15, 'o': 16, 'b': 17, 'ü': 18, 'ş': 19, '<': 20, '>': 21, 'g': 22, 'v': 23, 'z': 24, 'h': 25, 'p': 26, 'c': 27, 'ç': 28, 'ğ': 29, 'ö': 30, 'f': 31, '1': 32, '0': 33, '2': 34, '9': 35, '8': 36, '3': 37, 'j': 38, '5': 39, '4': 40, '6': 41, '7': 42, 'w': 43, 'x': 44, 'q': 45}

我这样初始化:

typos_tokenizer = tf.keras.preprocessing.text.Tokenizer(
num_words=NUM_WORDS,
filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n',
lower=True,
char_level=True
)

corrects_tokenizer = tf.keras.preprocessing.text.Tokenizer(
num_words=NUM_WORDS,
filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n',
lower=True,
char_level=True
)

为什么我不能用这种方法初始化两个不同的分词器?

我期待 typos_tokenizer 和 corrects_tokenizer 有 2 个不同的 word_index 词典。

python keras deep-learning tokenize seq2seq
© www.soinside.com 2019 - 2024. All rights reserved.