|AI框架应用:用PyTorch构建自然语言生成(NLG)系统( 三 )
本文插图
该模型的最终输出将是“正在发生什么” 。 这就是我们将用于执行NLG的文本生成策略 。 接下来 , 我们将在电影情节摘要的数据集中训练自己的语言模型 。
使用PyTorch生成自然语言
现在我们知道了神经语言模型是如何工作的以及需要什么样的数据预处理 , 让我们训练一个LSTM语言模型以使用PyTorch执行自然语言生成 。
让我们快速导入必要的库 。
本文插图
1.加载数据集
我们将使用CMU电影摘要语料库的样本 。
本文插图
你可以使用下面的代码打印五份摘要 , 这些摘要是随机抽样的 。
#个样本随机摘要 random.sample(movie_plots , 5)2.数据准备
首先 , 我们将稍微清除文本 。 我们将仅保留字母和撇号标点符号 , 并从文本中删除其余的其他元素 。
#干净的文字 movie_plots = [re.sub(“ [^ az']” , “” , i)for movie_plots中的i]不必执行此步骤 。 只是我希望我的模型仅关注字母 , 而不必担心标点符号或数字或其他符号 。
接下来 , 我们将定义一个函数以从数据集中准备定长序列 。 我已指定序列的长度为五 。 它是一个超参数 , 您可以根据需要更改它 。
本文插图
因此 , 我们会将电影情节摘要传递给此函数 , 并且它将为每个输入返回固定长度序列的列表 。
本文插图
输出: 152644
一旦准备好相同长度的序列 , 就可以将它们进一步分为输入序列和目标序列 。
本文插图
现在我们必须将这些序列(x和y)转换为整数序列 , 但是在此之前 , 我们将必须将数据集中的每个不同的单词映射为一个整数值 。 因此 , 我们将为令牌字典创建一个令牌 , 并为令牌字典创建一个整数 。
本文插图
输出:(14271 , 'the')
#设置词汇量 vocab_size = len(int2token) vocab_size输出: 16592
词汇量为16,592 , 即我们的数据集中有超过16,000个不同的标记 。
一旦我们有了令牌到整数的映射 , 就可以将文本序列转换为整数序列 。
本文插图
3.模型制作
我们将批次的输入序列和目标序列传递给模型 , 因为最好是按批次进行训练 , 而不是一次将整个数据传递给模型 。 以下功能将从输入数据创建批次 。
本文插图
现在 , 我们将定义语言模型的体系结构 。
本文插图
本文插图
输入序列将首先通过嵌入层 , 然后通过LSTM层 。 LSTM层将提供一组与序列长度相等的输出 , 并且这些输出中的每一个都将传递到线性(密集)层 , 在该层上将应用softmax 。
推荐阅读
- 工业|中国发布工业级5G终端基带芯片 筹建技术联盟促应用发展
- 通信世界|建设超宽、融合、智能的光接入网,让数字连接点亮更多创新应用
- |浅谈RFID技术在银行资产/档案/钱箱管理中的应用
- |比VR更“耳聪目明”颠覆传统产业 影创MR产业应用中心落户渝中
- 博纬智能RFID|浅谈RFID技术在银行资产/档案/钱箱管理中的应用
- 电脑使用技巧|Excel数据处理与分析应用课程:NO2文件管理与打印设置
- IBM|关于数字化转型与数据应用,你想知道的都在这里!
- |复原林黛玉样貌、让杜甫开口唱歌,这样的AI应用太有趣
- youtube|YouTube正在测试iOS应用的原生画中画模式
- |福特研发总监:FHE新思维引爆跨界智能应用商机