Closed. This question needs to be more focused 。它目前不接受答案。












想改善这个问题吗?更新问题,使其仅通过 editing this post 关注一个问题。

3年前关闭。



Improve this question




我一直在研究使用 RNN 生成文本,似乎常用的技术是逐个字符输入文本,然后让 RNN 预测下一个字符。

为什么不使用相同的技术,而是使用单词而不是字符。
这对我来说似乎是一种更好的技术,因为 RNN 不会犯任何错别字,而且训练速度会更快。

我错过了什么吗?

此外,是否可以创建一个单词预测 RNN,但以某种方式输入在 word2vec 上预先训练的单词,以便 RNN 可以理解它们的含义?

最佳答案



基于单词的模型与基于字符的模型一样经常使用。请参阅 this question 中的示例。但是两者之间有几个重要的区别:

  • 基于字符的模型更灵活,可以学习很少使用的单词和标点符号。 Andrej Karpathy's post 展示了这个模型的有效性。但这也是一个缺点,因为这个模型有时会产生完全的废话。
  • 基于字符的模型的词汇量要小得多,这使得训练更容易、更快。由于 one-hot 编码和 softmax 损失工作完美,因此无需使用嵌入向量和特制损失函数(负采样、NCE 等)使模型复杂化
  • 基于词的模型无法生成词表外 (OOV) 词,它们更复杂且需要资源。但是他们可以学习语法和语法正确的句子,并且比基于字符的句子更健壮。

  • 顺便说一句,还有子词模型,有点中间。参见 T. Mikolov 的 "Subword language modeling with neural networks" 等。



    是的,我上面提到的 example 正是关于这种模型的。

    关于machine-learning - 文本生成 : character prediction RNN vs. 词预测 RNN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48197869/

    10-12 22:43