从给定的单词生成段落

数据挖掘 nlp rnn
2022-03-10 11:10:16

我正在尝试构建一个 ML 模型。将获取单词列表,并根据现有语料库上的语言模型尝试使用这些单词生成句子。例子:

(freenode, today, neural networks) -> (Today I joined the freenode channel for neural networks....) 

什么是正确(也是最简单)的方法来做到这一点?

我试图找到一个基于 LSTM RNN 的解决方案,但是一旦我向网络输入了多个单词,事情就会变得更加棘手。

1个回答

一些想法是:

a) 生成许多随机句子,直到找到你的单词(会非常慢,但样本不会有偏见)。

b)对于非常短的句子,您可以遍历所有位置和所有可能性以填充未知位置,例如(今天,神经网络,?),(?,今天,神经网络),(神经网络,?,今天)等。使用语言模型计算每个句子的概率,然后选择概率最高的句子或随机选择一个权重等于概率的句子。实际上,如果您可以生成所有可能的位置,那么您应该能够直接使用预训练的BERT 模型,因为它是在类似的 Masked Language Model 任务上训练的。

c) 从头开始​​训练新的语言模型,或微调预训练模型(如 BERT),输入(或句子对)如

today, freenode, neural networks # Today I joined the freenode channel for neural networks.

您可以从现有句子中采样单词或 n-gram。这可能需要大量的语料库、一些工作和一些成本。

d) 如果您有访问权限,请尝试现有的大型模型,例如 gpt-3。例如,我尝试了transformer.huggingface.co,最后一句由transformer自动完成:

请造一个包含给定单词的句子。

词:马,树,走。

句子:马绕着树走。

词:freenode,今天,神经网络。

句子: freenode 坐在树上。