【问题标题】:sequence to sequence learning for language translation, what about unseen words语言翻译的序列到序列学习,看不见的单词呢
【发布时间】:2018-04-08 07:46:16
【问题描述】:

sequence to sequence learning 是一种强大的语言翻译机制,尤其是在特定上下文的本地情况下使用它。

我正在关注this pytorch tutorial 的任务。

但是,本教程并未将数据拆分为训练和测试。 您可能认为这没什么大不了的,只需将其拆分,一个用于训练,另一个用于测试。但事情没那么简单。

本质上,本教程在引导数据集的同时创建所见单词的索引。索引只是存储在字典中。这是在进入编码器 RNN 之前,只是一个从单词到数字的简单转换任务。

如果数据被随机拆分,会发生什么情况,其中一个关键字可能不会出现在训练集中的句子中,因此可能根本没有索引。如果在测试的时候出现,应该怎么办?

扩展字典?

【问题讨论】:

  • 如果你得到一个看不见的词,那不是测试失败吗?
  • @Jasen,我真的不认为这是一个失败的测试,必须有一些解决方法。否则,在现实世界中使用它根本不切实际,不是吗?我的意思是,这不是机器学习的全部想法吗?如果事先知道所有单词,那么保留一个哈希图来说明当这个单词到达时要做什么。如果您有其他想法,请纠正我..

标签: machine-learning tensorflow nlp recurrent-neural-network pytorch


【解决方案1】:

序列到序列模型的性能很大程度上取决于词汇表中唯一单词的数量。每个独特的词都必须在训练集中多次遇到,这样模型才能正确地学习它的用法。模型不能使用出现次数很少的词,因为模型无法学习到关于这些词的足够信息。在实践中,字典的大小通常会减小,用特殊的“UNK”标记替换稀有词。因此,如果在测试过程中出现了一个新词,可以假定它是稀有的(因为它从未出现在训练集中)并将其替换为“UNK”。

【讨论】:

  • 有道理。我正在尝试的另一个可能有点偏离轨道的事情是:我正在通过随机删除几个单词来进行数据扩充。我正在考虑进行 n-gram 相似性搜索,而不是完全放弃它们。你怎么看?
  • @Adorn 不幸的是,我没有在翻译任务中进行数据增强的经验。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 2019-07-13
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多