# 基于LSTM的歌词生成
[toc]
## 项目简介:
本项目旨在对于网易云音乐的歌词进行爬取并且利用LSTM语言模型对其进行训练,并使其具有一定的歌词生成能力。本项目实现了歌词获取,数据处理,模型训练,歌词生成等功能,可供参考和学习。
最终本项目提供了一个在11k首歌上迭代了24轮的模型,并以float16的形式保存在data/model中,可供直接使用。
## 环境
> Python 3.8.5
> cloudmusic 0.1.1
> torch 1.8.1
> jieba 0.42.1
> tqdm 4.56.0
> pandas 1.3.1
> numpy 1.21.1
## 项目结构
~~~python
┣━━config.py # 保存模型,数据等配置
┣━━data # 用于存放,训练数据,词向量,模型的文件夹
┃ ┣━━model
┃ ┃ ┗━━model24_f16.pth
┃ ┣━━stopwords.txt
┃ ┗━━voc.pkl
┣━━data_processing.py # 数据处理模块
┣━━model.py # 模型结构模块
┣━━display.py # 模型展示模块
┣━━README.md
┣━━requirements.txt # 项目环境依赖
┣━━spider.py # 爬虫模块,用于获取数据
┗━━train.py # 训练模块
~~~
## 爬虫模块
spider.py文件里,利用cloudmusic库对网易云音乐的歌词数据进行爬取,并且保存。
其大致流程为:
1. 人工的选择对应的音乐合集(古风,ACG等类型),保存链接在Playlists_1/2中。
2. 运行getAllMusic函数,获取所有音乐对象利用MusicManager进行去重和保存
3. 在main中,加载MusicManager,获取其中所有歌词,把有歌词歌保存其所有歌词到一个个文件中(对于有多个语言的歌词,以<--sep-->进行分隔)
## 数据处理模块
### 歌词的初步处理
SpecificSongSelector类实现了歌词的初步处理,包括利用re和filter对歌词中的符号和一些诸如"编曲:快乐的乌龟"的非歌词信息进行去除。
同时对一首歌多种歌词进行选择,通过一个函数rule进行每个字符逐个判断,是否为所规定的语言的字符,最后以
$\frac{所规规定语言的字符数目}{总体字符数目} \geq ratio$
为基准选择出中文歌词。
Tool中的类方法transform_lyrics_to_std实现了对Lyrics文件中的所有歌进行选择,并且最终保存在一个all_data的文件中。
### 字典
Vocabulary就像其他NLP项目一样,实现了对字典的管理。本项目的Vocabulary创建支持两种方式,一种是从训练好的word2vec中创建,一种是从一大批语料中创建。前者Vocabulary会自动保存词向量,在创建模型时,需要把Vocabulary作为embedding参数传入模型中。
我训练的词向量来自于[该仓库中](https://github.com/Embedding/Chinese-Word-Vectors)
## 模型&训练
模型非常简单,由一个嵌入层,一个单向的LSTM和一个全连接层构成。其中全连接层形状为(hidden_size x voc_size)。
训练时使用Adam优化器,没有设置lr衰减,一共训练了24轮(有点少,因为我的显卡不太行)
模型和训练参数如下
~~~python
max_len = 60
batch_size = 8
embedding_size = 300
epoch = 30
device = torch.device('cpu')
lr = 0.0005
dp = 0.1 # dropout
~~~
在数据处理完成,配置好config文件和下载好词向量后,直接运行python train.py文件后即可进行训练
## 生成
模型的生成时采用的策略为随机采样,没有设置Temperature。每次生成直到遇到<EOS>或者达到max_len结束。
## 生成样例
display文件里放了一个生成歌词的样例,运行后其结果如下
~~~python
歌词续写 >>
万里悲秋常作客
山河下
来时路
月与短
流云风
安定生命
感触春意
问君不知
何惧愁容
有如今
记忆昔日
如果伤心重演
是不会在那荒漠
岸边迷途不再吟唱
跟随岁月来时了
目光我在残酷
看穿所如深重
就像沉默一样坠落
生命远去
不停无尽流逝
我就要找你须臾
一起享受孤单孤独
将你偷偷相来
无宽恕奉献快乐
每个人都想要忍受
如果入梦时
雨过天晴请万千凝视
合唱
在黑夜同时结局
醒来无人的歌声
某个人在无止忘却
你哭泣像天使的海
迷失燃烧时光
哭泣看死亡而不甘一样
卸下激情的寂寞
是非成败这无法执着
但我看着你的痕迹
单翼
~~~
没有合适的资源?快使用搜索试试~ 我知道了~
基于LSTM的中文歌词生成实现.zip
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共11个文件
py:6个
txt:2个
md:1个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 41 浏览量
2024-05-22
18:39:28
上传
评论
收藏 51.45MB ZIP 举报
温馨提示
基于LSTM的中文歌词生成实现LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 11 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/d7864c98224046ec9a7f43fa6207c84e_qq_51320133.jpg!1)
生瓜蛋子
- 粉丝: 3829
- 资源: 6047
![benefits](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-1.c8e153b4.png)
下载权益
![privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-2.ec46750a.png)
C知道特权
![article](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-3.fc5e5fb6.png)
VIP文章
![course-privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-4.320a6894.png)
课程特权
![rights](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-icon.fe0226a8.png)
开通VIP
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- ROS导航机器人搭建教程
- 操作系统资源浅显易懂哈哈哈
- 小程序版python语言pytorch框架的图像分类墙体颜色识别-不含数据集图片-含逐行注释和说明文档.zip
- 小程序版深度学习CNN训练识别蔬菜-不含数据集图片-含逐行注释和说明文档.zip
- 小程序版通过CNN训练识别蔬菜-不含数据集图片-含逐行注释和说明文档.zip
- 小程序版基于深度学习识别花卉-不含数据集图片-含逐行注释和说明文档.zip
- 小程序版python语言pytorch框架训练识别非机动车辆-不含数据集图片-含逐行注释和说明文档.zip
- 驱动多路舵机51单片机源程序代码
- 小程序版python语言pytorch框架训练识别猴子种类-不含数据集图片-含逐行注释和说明文档.zip
- c++语言调用matlab画图源程序
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)