如何将解码器 LSTM 的输出数据转换回单词?

Posted

技术标签:

【中文标题】如何将解码器 LSTM 的输出数据转换回单词?【英文标题】:How do I convert the output data from the decoder LSTM back to words? 【发布时间】:2021-02-21 20:44:05 【问题描述】:

我有一个模仿本教程中生成的编码器解码器网络: https://towardsdatascience.com/how-to-implement-seq2seq-lstm-model-in-keras-shortcutnlp-6f355f3e5639

但是解码器 LSTM 的输出将是 0 到 1 之间的数字。但是在本教程中,单词被标记为整数。如何使用此标记化将此输出在 0 和 1 之间转换回单词?

另一种选择可能是使用一个热编码标记化,但您肯定仍然需要舍入输出以将浮动输出转换为整数?

【问题讨论】:

【参考方案1】:

使用tf.math.argmax() 查找最佳单词的索引。然后从你的词汇表中提取单词

【讨论】:

感谢您的回复。不过,我不确定这将如何运作 - “最佳词”是什么意思? Softmax 为您提供单词索引之间的概率分布。价值越高,这个词就越好【参考方案2】:

您引用的教程使用了 15000 个标记的词汇表。它为每个样本输出 10 个标记的序列,这样 10 个单词中的每一个都是 15000 个浮点数的向量。您可以将这些视为一种概率,理想情况下,这 15000 个浮点数的总和加起来为 1,最高分数告诉您选择了哪个令牌。因此,在输入时,每个标记都被转换为 1 个大小为 15000 的热编码向量,在输出时,您有一个 softmax 节点,该节点输出每个标记的分数,其中最高分数为您提供所选标记。

【讨论】:

以上是关于如何将解码器 LSTM 的输出数据转换回单词?的主要内容,如果未能解决你的问题,请参考以下文章

从 LSTM 自动编码器馈送分类器数据

推理后如何将标记化的单词转换回原始单词?

如何在 Keras 的两个 LSTM 层之间添加注意力层

如何将char数组转换回字符串[重复]

如何重塑文本数据以适合 keras 中的 LSTM 模型

Python keras如何将卷积层转换为lstm层后的输入大小