尝试实现“智能撰写”功能

数据挖掘 nlp
2021-10-01 06:34:40

我在 Gmail 的智能撰写功能上找到了这篇文章,这让我开始考虑尝试自己实现它。

https://ai.googleblog.com/2018/05/smart-compose-using-neural-networks-to.html

文本非常模糊——唯一给出任何方向的部分是“我们将 BoW 模型与 RNN-LM 相结合”。

我记得 BoW 是输入语料库的无序表示,其中只有相对大小很重要。但是我只是没有足够的经验来知道像这样的无序表示如何帮助我预测有序的后缀。

有人对这可能如何更具体地工作有任何想法吗?或任何进一步阅读的参考资料?不幸的是,我找不到太多东西。

2个回答

来自同一个博客,

在这种混合方法中,我们通过平均每个字段中的词嵌入来对主题和以前的电子邮件进行编码。然后我们加入这些平均嵌入,并在每个解码步骤将它们提供给目标序列 RNN-LM。

他们混合方法的 BoW 部分是通过平均主题和前一封电子邮件中的词嵌入来获取电子邮件对话的一般上下文。在 RNN-LM 的每个步骤中传递一般上下文的这种矢量化表示,其中考虑了词序,有助于获得更适合对话主题的预测。

请注意,在每一步,RNN-LM 都会获得 3 种类型的输入 -

  1. 嵌入前一个单词- 用于直接上下文。
  2. 状态向量- 对于本地化上下文
  3. 主题和以前的电子邮件平均嵌入- 用于更广泛的对话级上下文

希望现在更清楚了,该模型将顺序与 RNN-LM 的使用结合在一起,而 BoW 部分是将输出调整为对话主题。

对于下一个短语预测,使用 RNN 在您自己的数据上训练模型比使用预训练模型更有益。对于 Next Word 预测,反之亦然。这可能会有所帮助:[这里][ https://towardsdatascience.com/gmail-style-smart-compose-using-char-n-gram-language-models-a73c09550447]

要了解培训的 X 和 Y,请阅读教师强制技术:[教师强制技术][ https://machinelearningmastery.com/teacher-forcing-for-recurrent-neural-networks/]

我还建议您使用多个模型来获得所需的结果,其中包括下一个单词预测模型、下一个短语预测模型以及可能的单词/短语完成模型。这些模型的组合可以取得很好的效果。

有各种高精度(低困惑度)的模型可用于下一个词的预测,可以以原生形式使用。另请参阅[拥抱脸的变形金刚][ https://github.com/huggingface/transformers],它可能会有很大帮助。