欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

周杰伦歌词预测 #博学谷IT学习技术支持#

发布时间:2024/3/12 编程问答 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 周杰伦歌词预测 #博学谷IT学习技术支持# 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

一、目标

二、思路

1 构建词料库

    1.1数据清洗

    1.2 构建分词到索引的映射表

2 构建数据集对象

2.1 创建一个歌词类

2.2  构建数据集

3 构建网络模型

4 构建训练函数

4.1 创建训练数据集 

4.2 初始化网络模型

4.3 构建损失函数

4.4 选择优化方法

4.4 确定训练轮数

4.5 保存训练模型

5 构建预测函数

5.1  把输入的开始词,先转化为索引向量


 

一、目标

相当于我们在音乐播放器里面搜索。歌词里面的几个字。就可以显示出歌词后面的一些字。比如,

输入      “谁在用琵琶”,5,

输出       谁在用琵琶弹奏一曲东

输入一串文本,预测下一个文本,属于分类问题。

有一个周杰伦歌词的文档。希望通过输入歌词的前几个字和一个数字,能够预测出输入歌词的前几个字和之后的几个字。

二、思路

1 构建词料库

     因为歌词是一个文本文档。我们需要把文本文档里面的文字用数字表示,便于我们后面处理计算。比如,气球,用[0,1]表示。类似这样的,就是词料库。

    1.1数据清洗

     首先我们需要把歌词的文本文档进行处理。去掉多余的文字,空格,换行等等。只留下 汉字,字母,数字,感叹号,问号,逗号。

    1.2 构建分词到索引的映射表

    把文档里面的每一行读出来。再把每一行里面的单词利用jieba库,分词,比如,把 我喜欢你,分成 ['我','喜欢','你']。 

     把分词出来的所有的分词,去重,放在一个列表中。就得到了从索引到分词的映射表。再根据这个映射表得到从分词到索引的字典。

     根据这个字典,把文档中的每句中文,转换成用索引表示的向量。这就是词料库。

2 构建数据集对象

2.1 创建一个歌词类

    有init ,有len魔法方法。

2.2  构建数据集

     实例化歌词类,得到数据集,用数据加载器来加载数据集。

3 构建网络模型

   有三层,

    第一层是词嵌入层,用于将词料库,转化为词向量。比如我们把每一个分词,用一个128维的向量来表示。假设输入的句子长度为5,那么经过嵌入层之后的向量,维度就是 1,5,128  。这里面1是batch size,5是句子的长度,128是每个分词的向量维数。

    第二层是循环网络, 用来提取句子的语义特征。

输入的维度是128维,输出的维度是128维。

循环网络层的输入希望batch_size在第一位。注意要有隐藏层。输出output是每一个时间步的输出,hidden只表示最后一个时间步的隐藏状态。将output送入全连接层,得到输出。

     第三层是全连接层,用来输出对词典中每个词的预测概率,我们最后选取预测概率最大的词,作为我们的输出。输入维度是128维。预测结果维度是   5,1,5682。   这里面1是batch size,5是句子的长度,5682是分词的总数目,    5682是,预测,每一个分词的概率大小,最后我们选择预测概率大的词,输出。

4 构建训练函数

把训练数据集,放进网络里面训练。因为文本生成本质上是输入一串文本,预测下一个文本,属于分类问题,所以我们使用多分类交叉商损失函数。优化方法,我们使用SGD或者Adam。

4.1 创建训练数据集 

使用刚刚的数据集类,输入资料库和32。这里的32代表32个句子长度。

4.2 初始化网络模型

使用刚刚构建的网络模型来初始化网络模型

4.3 构建损失函数

4.4 选择优化方法

导入包,选择优化方法,指定学习率

4.4 确定训练轮数

       对每轮训练,初始化数据加载器,batch size等于1。初始化迭代次数,总的训练损失等于0.0。

     数据集进入模型训练后的输出维度是  32,1,5682  。训练数据集的标签维度是 1,32  。

4.5 保存训练模型

5 构建预测函数

加载预测数据集,从磁盘加载已经训练好的模型,进行预测。我们输入一个指定的词,送入网络,预测出下一个词,再将预测出来的词再送入网络,再预测下一个词,以此类推,直到预测出我们指定场长度的内容。

5.1  把输入的开始词,先转化为索引向量

把输入的开始词,利用词料库,转化为索引向量。把所以向量送入模型中去预测下一个概率最大的分词的索引,放在下一个分词的索引列表中,再循环,直到完成指定数目。注意,这里得到的是分词的索引列表,所以需要用所以到分词的列表,转化为分词的分词列表。这样就得出了预测的分词。

 

 

     

 

 

 

总结

以上是生活随笔为你收集整理的周杰伦歌词预测 #博学谷IT学习技术支持#的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。