flow是什么,或者该怎么练习

Flow的定义和提高方法
 作者:大昊  发布时间: &#xe6 阅读数:  评论数:0
  在刚开始接触Hip-Hop音乐没多久之后,都会听到各种人说起Flow这个词,而Flow是什么意思,Flow的含义是什么?很多人都模模糊糊一知半解。
  Flow的定义:
  The flow of a Hip-Hop song is simply the rhythms and rhymes it contains. Flow就是节奏和词的结合。 &&《How To Rap》
  Flow&&伴奏和词的结合。指说唱时咬文嚼字的方式,每个音节发音的方式或特点。处理音节与音节之间重读轻读关系、每个音节与伴奏的关系。在技术层面上说,Flow独立于歌词和伴奏之外。很多情况下,不同的说唱歌手在处理同一段歌词会有很大的出入。这也说明了100位说唱歌手,那就会有100多种Flow。一首好歌不单伴奏到位,Flow和歌词的结合也至关重要。 目前Flow在说唱歌手中越来越个性化和多样化。每位说唱歌手在Flow中,加入自己的特色。这也就造成Flow成了说唱音乐中最难解释与教学的术语。但其实Flow源于自己。在你练习说唱起步阶段,你可能会模仿Guru、Eminem、Busta Rhymes等MC的Flow。其目的是为摸索与寻找自身的风格,属于你自己的Flow。
  Flow提高:
  1.排列音节 你歌词中音节的数量,取决于你用多快的语速进行饶舌。通常一句歌词最好把音节控制在10&16个。最好将大部分歌词音节的数量都调整为一样。如果上下两句歌词音节数量有所差异的话,就会出现以下情况。 My lyrics so good,God&s reading them in heaven Plus you know I got more Bars than the candy aisle in 7/11 此处问题就是第二句歌词,其中音节太多。第一句歌词有14个音节,而第二句有18个。彼此不一致也导致说起来不流畅。但修改很简单,只需在不影响歌词意思情况下拿掉多余的4个音节。拿掉Plus、you、know这三个音节,将the candy aisle改成candy aisles。就变如下:My lyrics so good,God&s reading them in heaven I got more Bars then candy aisles in 7/11 第一句歌词有14个音节,第二句也与前者相同。Flow就会更加平滑。
  说唱歌手对歌词的音节一直保持有很大程度上的一致性。这里拿休斯顿说唱歌手Chamillionaire的&Riding Dirty&举例: Houston Texas,you can check my tags 9个音节 Pull me over try to check my slab 9个音节 Glove compartment gotta get my cash 9个音节 Cause the crooked cops try to come up fast 10个音节 可以看出,如果想要写出很不错的押韵语句。那就必须把上句下句歌词,音节必须对准。如果有所差距,那就要进行控制,尽量不要让音节差距过大。这样对Rap的时候产生很大的困难,语速和嚼字很难保持一种流畅性。 Chamillionaire所写的这段歌词就是最好的例子。
  2.重读与轻读 重要程度在音节之上的&&重读与轻读。在说唱时,你要分清你要处理是什么样的音节。这里强调的是句与句之间不仅要押韵,重读的音节也尽量确保你的歌词要把重读的位置对齐。若你打破这个规则,那么你在说唱的时候步调就会比较混乱,显得一团糟。记住不能用重读的韵脚与轻读的韵脚进行匹配。否则不光是不流畅,你的气息也会出现紊乱导致Flow的中断。
  3.呼吸控制 呼吸控制的关键&&音节。除非你是肺活量非常凶残的说唱歌手,一句歌词能Hold住20个音节。否则尽量保持一句歌词14个音节左右,这样你能获得更多呼吸和换气的空间。呼吸并不必须只是在小节结束后进行,但大部分都是如此。多进行呼吸训练,增强自己的肺活量。对你今后延长你的说唱生涯非常有利。
  4.押韵组合 对于初学者来说,尽量保持你的韵脚在第四拍上和小鼓触击点上。不过对说唱老鸟而言,你可以更多地运用内押韵和多重押韵来改良你的韵脚。同时可以把韵脚抽离第四拍或小鼓触击点,尝试将韵脚放在其他点上。尽量唱出自己的风格,Flow流畅顺滑自然不错,但最重要的是保持自然&&Keep Fresh。
  Flow速度:
  1.Fast 语速取决于音节和伴奏,语速不同也会带来不同的Flow效果。语速通常用一个小节中蕴含多少音节来衡量。比如Twista的快嘴,一句歌词有20个左右的音节。说唱歌手通常把音节控制在12&16个每小节。当然这是见仁见智,可以进行自行调整。但记住千万别勉强,这需要强大的肺活量来支撑的。
  2.Slow 大多数有才华的说唱歌手并不擅长慢语速。语速&饶舌,如果一首歌充满弹舌技巧,那谈何Flow。这也是一些快嘴说唱歌手,他们作品乍听非常有意思。但风靡时间并不长,也许他们的歌曲缺少Flow这个元素。一个牛逼的说唱歌手,可以随心所欲控制语速和变换Flow,在任何语速下让Flow听起来都很棒。
  3.Imitate 锻炼Flow最好的办法&&多听HipHop。不要光听Flow,解析歌中每个小节,每一个音节的位置和每一个节拍的处理。数下它的音节和节拍。一个比较好的方法就是,找一个你喜欢的说唱歌手,把他的歌词抽离出来,并尝试着将自己写的歌词按照他的Flow进行填词,进行反复练习。尽量多模仿些,这对你今后Flow的形成非常有帮助。
  有人会说:&Flow应该是灵动随性的,何来这么多的条条框框,毕竟你做的不是社会主义说唱。&其实这句话漏洞很大。灵动随性固然重要,但毕竟每个人说唱实力不同。就像你不能把MF Doom和SouljaBoy相提并论。何况灵动随性是Flow锻炼到一个境界,就像我前面说:&一个牛逼的说唱歌手,可以随心所欲控制语速和变换Flow。&不是每个人都能写出MF Doom隐晦的歌词或em碉堡的韵脚。若实力不够,灵动随性的话。那和念诗歌有何区别。上面所述的不是条条框框,只望你能在摸索或创作中,能找到属于自己的风格。 上文资料参考文献:《The Rapper&s Handbook》
 
责任编辑:ZT
数据统计中!
嘻哈之城 版权所有TensorFlow练习1: 对评论进行分类 - 推酷
TensorFlow练习1: 对评论进行分类
TensorFlow是谷歌2015年开源的一个深度学习库,到现在正好一年。和TensorFlow类似的库还有Caffe、Theano、MXNet、Torch。但是论火爆程度,TensorFlow当之无愧,短短一年就在Github就收获了36000+颗星,把前面几个库获得的star加起来也不敌TensorFlow。
TensorFlow源代码:
TensorFlow使用C++开发,并提供了Python等语言的封装。如命名一样,TensorFlow为张量从图一端流动到另一端的计算过程,可以把张量看作矩阵。TensorFlow并不是一个抽象程度特别高的库,但是它实现了所有深度学习所需的函数。貌似有一个高度抽象的库使用TensorFlow做为后端。
TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,它可在小到手机、大到数千台服务器上运行。
TensorFlow文档:
本帖展示怎么使用TensorFlow实现文本的简单分类,判断评论是正面的还是负面的。
使用的数据集
我本想使用Python爬一些淘宝评论,但是脚本做到一半卡壳了,搞得火起。然后我上网找现成的数据,只找到了英文的
(其实不管是英文还是中文,处理逻辑都一样)。
neg.txt:5331条负面电影评论(
pos.txt:5331条正面电影评论 (
如果你有一些好数据愿意分享,感激不尽。
由于处理的是字符串,我们首先要想方法把字符串转换为向量/数字表示。一种解决方法是可以把单词映射为数字ID。
第二个问题是每行评论字数不同,而神经网络需要一致的输入(其实有些神经网络不需要,至少本帖需要),这可以使用词汇表解决。
安装nltk(自然语言工具库
$ pipinstallnltk
下载nltk数据:
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 :25)
[GCC 4.2.1 (AppleInc. build 5666) (dot 3)] ondarwin
Type &help&, &copyright&, &credits& or &license& for moreinformation.
&&& importnltk
&&& nltk.download()
ntlk有详细安装文档。
测试nltk安装:
&&& from nltk.corpusimport brown
&&& brown.words()
['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', ...]
Python代码:
import numpyas np
import tensorflowas tf
import random
import pickle
from collections import Counter
import nltk
from nltk.tokenize import word_tokenize
'I'm super man'
['I', ''m', 'super','man' ]
from nltk.stemimport WordNetLemmatizer
词形还原(lemmatizer),即把一个任何形式的英语单词还原到一般形式,与词根还原不同(stemmer),后者是抽取一个单词的词根。
pos_file = 'pos.txt'
neg_file = 'neg.txt'
# 创建词汇表
def create_lexicon(pos_file, neg_file):
# 读取文件
def process_file(f):
with open(pos_file, 'r') as f:
lines = f.readlines()
#print(lines)
for linein lines:
words = word_tokenize(line.lower())
lex += words
return lex
lex += process_file(pos_file)
lex += process_file(neg_file)
#print(len(lex))
lemmatizer = WordNetLemmatizer()
lex = [lemmatizer.lemmatize(word) for wordin lex] # 词形还原 (cats-&cat)
word_count = Counter(lex)
#print(word_count)
# {'.': 13944, ',': 10536, 'the': 10120, 'a': 9444, 'and': 7108, 'of': 6624, 'it': 4748, 'to': 3940......}
# 去掉一些常用词,像the,a and等等,和一些不常用词; 这些词对判断一个评论是正面还是负面没有做任何贡献
for wordin word_count:
if word_count[word] & 2000 and word_count[word] & 20:&&# 这写死了,好像能用百分比
lex.append(word)&&&&&&&&# 齐普夫定律-使用Python验证文本的Zipf分布 /archives/9546
return lex
lex = create_lexicon(pos_file, neg_file)
#lex里保存了文本中出现过的单词。
# 把每条评论转换为向量, 转换原理:
# 假设lex为['woman', 'great', 'feel', 'actually', 'looking', 'latest', 'seen', 'is'] 当然实际上要大的多
# 评论'i think this movie is great' 转换为 [0,1,0,0,0,0,0,1], 把评论中出现的字在lex中标记,出现过的标记为1,其余标记为0
def normalize_dataset(lex):
dataset = []
# lex:词汇表;review:评论;clf:评论对应的分类,[0,1]代表负面评论 [1,0]代表正面评论
def string_to_vector(lex, review, clf):
words = word_tokenize(line.lower())
lemmatizer = WordNetLemmatizer()
words = [lemmatizer.lemmatize(word) for wordin words]
features = np.zeros(len(lex))
for wordin words:
if wordin lex:
features[lex.index(word)] = 1&&# 一个句子中某个词可能出现两次,可以用+=1,其实区别不大
return [features, clf]
with open(pos_file, 'r') as f:
lines = f.readlines()
for linein lines:
one_sample = string_to_vector(lex, line, [1,0])&&# [array([ 0.,&&1.,&&0., ...,&&0.,&&0.,&&0.]), [1,0]]
dataset.append(one_sample)
with open(neg_file, 'r') as f:
lines = f.readlines()
for linein lines:
one_sample = string_to_vector(lex, line, [0,1])&&# [array([ 0.,&&0.,&&0., ...,&&0.,&&0.,&&0.]), [0,1]]]
dataset.append(one_sample)
#print(len(dataset))
return dataset
dataset = normalize_dataset(lex)
random.shuffle(dataset)
#把整理好的数据保存到文件,方便使用。到此完成了数据的整理工作
with open('save.pickle', 'wb') as f:
pickle.dump(dataset, f)
# 取样本中的10%做为测试数据
test_size = int(len(dataset) * 0.1)
dataset = np.array(dataset)
train_dataset = dataset[:-test_size]
test_dataset = dataset[-test_size:]
# Deep Neural Network
# 定义每个层有多少'神经元''
n_input_layer = len(lex)&&# 输入层
n_layer_1 = 1000&&&&# hide layer
n_layer_2 = 1000&&&&# hide layer(隐藏层)听着很神秘,其实就是除输入输出层外的中间层
n_output_layer = 2&&&&&&# 输出层
# 定义待训练的神经网络
def neural_network(data):
# 定义第一层&神经元&的权重和biases
layer_1_w_b = {'w_':tf.Variable(tf.random_normal([n_input_layer, n_layer_1])), 'b_':tf.Variable(tf.random_normal([n_layer_1]))}
# 定义第二层&神经元&的权重和biases
layer_2_w_b = {'w_':tf.Variable(tf.random_normal([n_layer_1, n_layer_2])), 'b_':tf.Variable(tf.random_normal([n_layer_2]))}
# 定义输出层&神经元&的权重和biases
layer_output_w_b = {'w_':tf.Variable(tf.random_normal([n_layer_2, n_output_layer])), 'b_':tf.Variable(tf.random_normal([n_output_layer]))}
layer_1 = tf.add(tf.matmul(data, layer_1_w_b['w_']), layer_1_w_b['b_'])
layer_1 = tf.nn.relu(layer_1)&&# 激活函数
layer_2 = tf.add(tf.matmul(layer_1, layer_2_w_b['w_']), layer_2_w_b['b_'])
layer_2 = tf.nn.relu(layer_2 ) # 激活函数
layer_output = tf.add(tf.matmul(layer_2, layer_output_w_b['w_']), layer_output_w_b['b_'])
return layer_output
# 每次使用50条数据进行训练
batch_size = 50
X = tf.placeholder('float', [None, len(train_dataset[0][0])])
#[None, len(train_x)]代表数据数据的高和宽(矩阵),好处是如果数据不符合宽高,tensorflow会报错,不指定也可以。
Y = tf.placeholder('float')
# 使用数据训练神经网络
def train_neural_network(X, Y):
predict = neural_network(X)
cost_func = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(predict, Y))
optimizer = tf.train.AdamOptimizer().minimize(cost_func)&&# learning rate 默认 0.001
epochs = 13
with tf.Session() as session:
session.run(tf.initialize_all_variables())
epoch_loss = 0
random.shuffle(train_dataset)
train_x = dataset[:, 0]
train_y = dataset[:, 1]
for epochin range(epochs):
while i & len(train_x):
end = i + batch_size
batch_x = train_x[start:end]
batch_y = train_y[start:end]
_, c = session.run([optimizer, cost_func], feed_dict={X:list(batch_x),Y:list(batch_y)})
epoch_loss += c
i += batch_size
print(epoch, ' : ', epoch_loss)
text_x = test_dataset[: ,0]
text_y = test_dataset[:, 1]
correct = tf.equal(tf.argmax(predict,1), tf.argmax(Y,1))
accuracy = tf.reduce_mean(tf.cast(correct,'float'))
print('准确率: ', accuracy.eval({X:list(text_x) , Y:list(text_y)}))
train_neural_network(X,Y)
执行结果:
准确率真tm喜人,才60%多,比瞎猜强点有限。
那么问题出在哪呢?
准确率低主要是因为数据量太小,同样的模型,如果使用超大数据训练,准确率会有显著的提升。
下文我会使用同样的模型,但是数据量要比本文使用的多得多,看看准确率能提高多少。由于本文使用的神经网络模型(feedforward)过于简单,使用大数据也不一定有质的提升,尤其是涉及到自然语言处理。
Share the post &TensorFlow练习1: 对评论进行分类&
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致InforSuite Flow 练习题二_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
InforSuite Flow 练习题二
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩43页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

 

随机推荐