我正在尝试构建一个 ML 模型。将获取单词列表,并根据现有语料库上的语言模型尝试使用这些单词生成句子。例子:
(freenode, today, neural networks) -> (Today I joined the freenode channel for neural networks....)
什么是正确(也是最简单)的方法来做到这一点?
我试图找到一个基于 LSTM RNN 的解决方案,但是一旦我向网络输入了多个单词,事情就会变得更加棘手。
我正在尝试构建一个 ML 模型。将获取单词列表,并根据现有语料库上的语言模型尝试使用这些单词生成句子。例子:
(freenode, today, neural networks) -> (Today I joined the freenode channel for neural networks....)
什么是正确(也是最简单)的方法来做到这一点?
我试图找到一个基于 LSTM RNN 的解决方案,但是一旦我向网络输入了多个单词,事情就会变得更加棘手。
一些想法是:
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 坐在树上。