中文VOCALOID数据学概述

中文VOCALOID数据学概述(B站专栏版)
景育
图片版:(B站动态)https://t.bilibili.com/283032542310071636
一、基本概念
1.投稿的几个参量
在哔哩哔哩弹幕视频网(下简称“B站”)的投稿,往往有着若干参量。如果把一个投稿当做一个“对象”,那么它将拥有着诸多“属性”。
对于一个投稿,它的判别身份性质的属性是“视频编号”,俗称“AV号”,一般记作Aid,这一个参量是判别身份的决定性参量。Aid可以和唯一一个投稿对应,任意一个投稿也只有唯一的一个Aid。
这里有两个注意点,其一,不是所有的Aid都对应着投稿,有些投稿被删除后,那个Aid不再对应如何投稿;其二,不是Aid对应视频,因为一个投稿中可以有多个视频,俗称“多P投稿”。
但是,在中文VOCALOID的语境下,绝大多数投稿都对应着唯一一个视频,因此可以近似地认为所有的投稿都只对应着一个视频。在这种近似下,Aid、投稿、视频都是一一对应的。
视频的上传者,俗称“UP主”,一般记作User、Uploader、Owner等等,指的是上传视频的用户。如果把某个给定的UP主当做一个对象,他会有着“用户编号(Mid)”、“名称(Name)”、“头像(Face)”等诸多属性。
自今年起,B站开通了联合投稿的功能,一般地,我们把排在首位的上传者作为视频的上传者,而忽略其他上传者。
视频还有以下常见的属性:
封面(Pic)、标题(Title)、上传时间(Pubdate)……
以上属性,除上传者自行修改之外,一般不发生变化。出此之外,还有一些随时间变化的参量,这些也是大家关注的焦点:
播放量(View)、弹幕量(Danmaku)、评论量(Reply)、收藏量(Favorite)、硬币量(Coin)、分享量(Share)、得赞量(Like)……
这些参量作为属性,构成了一个视频的数据。
例:在2019年8月1日23:57,某视频的部分数据如下:
"aid":6009789
"tid":30
"tname":"VOCALOID·UTAU"
"title":"【乐正绫原创】世末歌者【PV付/COSMOSⅡ】"
"pubdate":1472134541
"name":"COPY"
"view":1614127
"danmaku":54884
"reply":99434
"favorite":115807
"coin":86757
"share":14513
"like":27850
2.投稿参量的作用
2.1 殿堂、传说的判断标准
Vocaloid中文殿堂曲是对播放量(再生数)超过十万的,由中文演唱的Vocaloid作品的荣誉称呼[1]。由此可见“殿堂”的判定标准和播放量参量直接挂钩。类似地,“传说”、“神话”等判断标准也是直接取决于播放量。
2.2 周刊VOCALOID中文排行榜的评分标准
依据现行的周刊VOCALOID中文排行榜收录标准,周刊中某一给定投稿的得分,和播放量、评论量、弹幕量、收藏量有关[2],是一个分段的多项分式函数。
2.3 B站热度评分
在去年年底,有B站科技区UP主通过“机器学习”的方法,给出了B站热度评分的拟合公式,他认为得分和硬币量、收藏量、点赞量、播放量、弹幕量、评论量、分享量、好评(点赞量)、差评(点踩量)有着线性关系[3]。
若将这些变量表示为x[n],其系数为a[n],最终的得分为y,那么其公式为:

(B站专栏没有公式编辑器,若想看规范的公式,请在我的动态看图片版。)
在今年四月初,B站的源代码泄露,有网友发现了相应的算法,确实是这样的线性关系。
2.4 UP主的收益
观众给UP主每投1个硬币,UP主将会受到0.1个硬币,并且增长1经验。另外,参加“创作激励计划”的UP主也会根据这些参量而收益。在音乐区试点的联合投稿等功能,需要UP主的各类评分,归根结底也是与UP主投稿视频的参量有关。
3.投稿几个参量之间的关系
对于大多数视频,只有播放量、收藏量等参量是随时间变化的,可以称作“动态参量”,其余的参量可以假定不变,称作“静态参量”。
依据tombus的经验和笔者规模不大的实验,播放量这一动态参量约每75秒刷新一次,而收藏量等实时刷新。据称播放量的刷新周期并不是一个常量,在一天中的不同时间不尽相同。
一般来说,这些参量有如下关系:
①播放量总是比收藏量大一个数量级;
②收藏量、硬币量总是在一个数量级;
这是长期以来的经验规律,对于大多数投稿试用,但是对于刚投稿不久的作品并不适用。在数年前,有的投稿在审核结束前可以有正的收藏量,而播放量是0,这一现象不知道现在还是否存在。除此之外,播放量、评论量不会饱和,而收藏量、硬币量会随时间而饱和,到了后期,几乎不再增长。
4.其它基本概念
有时我们会提起这些名词,这里仅作简要科普,不深入探讨。
对于一个统计表,我们把一行叫做一条“记录”,一个记录由若干“字段”组成。
有很多变量是随时间变化的,我们把时间分为若干段,通常用年、月、日作为分割的长度。我们把首个时间段称作“基期”。而我们把当前研究的时间段成为“报告期”。
例:某化工厂将2018年1月当做基期,在2018年1月生产产品6000吨。之后的月产量可以和基期进行比较,例如在2019年7月生产产品9250吨,我们可以说2019年7月是报告期。将报告期与基期相比较,可以得出“定基比增长54.2%”的结论。
将报告期与基期相比,这种方法在中文VOCALOID范畴内用的不多。
除了与基期相比较,我们还可以与上一个报告期进行比较,这称作“环比”。
例:某化工厂在2019年6月生产产品9010吨,7月生产9250吨,两相比较,环比增长2.7%。
年有春夏秋冬,万事万物周而复始,很多事情有着鲜明的时间周期,与上一个时间周期的报告期进行比较,这称作“同比”。
例:某化工厂在2018年7月生产产品7550吨,今年7月生产产品9250吨,两相比较,同比增长22.5%。
在中文VOCALOID范畴内,Seattle的洛天依、MilkBoy表格中的rate指环比增长率,环比在我圈内使用得最多。在周刊中,有人用今年的得分对比去年同期的得分,则是在同比。

二、数据的采集
1.直接法
直接法,指的是直接在B站投稿的网页,或移动端APP的相应页面,直接读出各项数据。当播放量、收藏量等数目接近一万时,B站会调整计数单位为“万”,而不是显示精确的整数。B站通过四舍五入至千位,缩短了数据看上去的长度,但是影响数据的精确性。
直接法会导致“伪殿堂”、“伪传说”,譬如某投稿的播放量为99528,显然不足十万,但是直接显示出来的是10.0万,看上去仿佛达成了“殿堂”。有时,观众们就会急于在评论区和弹幕中庆祝了。
伪殿堂、伪传说发生在距离目标播放量500以内的投稿上。这也说明了直接法的不精确性。
2.API法
B站官方提供了一些应用程序编程接口(Application Programming Interface,API),这些API通常使用JavaScript对象简谱(JavaScript Object Notation,JSON)格式表达。
例:以常用的一个API为例,其地址为“https://api.bilibili.com/x/article/archives”,我们填写参数“ids”为3905462,得到如下信息:
{"code":0,"message":"0","ttl":1,"data":{"3905462":{"aid":3905462,"videos":1,"tid":30,"tname":"VOCALOID·UTAU","copyright":1,"pic":"https://b1.sanwen.net/b_archive/37901b40efbed68c5bd9fd054b76ede6900fd8bf.jpg","title":"【2016拜年祭单品】九九八十一【乐正绫 feat.洛天依】","pubdate":1456070400,"ctime":1497425218,"desc":"作曲:烏龜Sui | 作詞:邪叫教主 | 字體 文案:St | 吉他:康師傅の海鮮麵 | 打擊樂:司鼓君 | 笛子:O天氣晴朗O | 琵琶:東北餡餃子 | 調校:納蘭尋風 | 混音:小新 Xin-Kun | 人設:酥妃 | 曲繪:骸鴉 酥妃 INxico | PV:墨蘭花語 | 人声本家:西瓜kune AV3919827\r\n\r\n在猴年为大家献上以孙悟空为主角的原创歌曲,希望大家在猴年猴开心猴年满意,新年快乐~","state":0,"attribute":32768,"duration":285,"rights":{"bp":0,"elec":0,"download":0,"movie":0,"pay":0,"hd5":0,"no_reprint":0,"autoplay":1,"ugc_pay":0,"is_cooperation":0,"ugc_pay_preview":0},"owner":{"mid":890489,"name":"没有龟壳的乌龟","face":"https://b1.sanwen.net/b_face/0f4916a5b49729df6b6e17a4e1fbd392d6759045.jpg"},"stat":{"aid":3905462,"view":7532563,"danmaku":176143,"reply":74760,"favorite":418286,"coin":252317,"share":70514,"now_rank":0,"his_rank":2,"like":61132,"dislike":0},"dynamic":"","cid":6319180,"dimension":{"width":0,"height":0,"rotate":0}}}}
我们可以清楚地看到诸如view、danmaku、reply、favorite等变量的信息。通过一些计算机的方法,可以将JSON格式的数据转化为其它格式的数据,从而便于我们进行研究和分析。
3.HTML法
我们的网页一般是由超文本标记语言(Hyper Text Markup Language,HTML)来表达。HTML由各种标签和元素构成。
我们以B站搜索“洛天依”三个字所得的网页为例,其HTML节选如下:
<div class="watch-later-trigger watch-later"></div></a><div><a href="//www.bilibili.com/video/av58824435?from=search&amp;seid=1718666425188443635" target="_blank">【洛天依原创曲】Starlight</a><span>2019-07-12</span></div></div><a href="//space.bilibili.com/36081646/video"; target="_blank">全部34个稿件></a></div></div></li></ul>
我们并没有必要看懂HTML中的每一个元素,只需要通过程序提取出我们想要的信息就行了。因为B站公开了API,所以HTML法显得笨拙。但是在半次元、知乎等平台进行数据搜集,HTML法就显得尤为重要。
有些网页源代码是JavaScript动态生成的,这里不作介绍。

三、数据的分析
1.思路的转变
正如汽车上,最大的仪表是汽车的行驶速度,而不是行驶里程,我们要把不方便研究的播放量、收藏量,转化为方便研究的播放量增速、收藏量增速。
这一思路的转变有如下优势:
①播放量、收藏量增速决定了播放量、收藏量;
②它们具有鲜明的周期性;
③它们更直观地反映了投稿的热度。
一个投稿是否火热,有时并不是直接取决于播放量,而是播放量的增速。正如一个公司是否运营状态良好,有时并不取决于它的钱财,而是它每天赚多少钱。
下面以雨狸的《黑羊少女》为例,比较播放量和播放量增速:


图1可以看出一个扭捏的递增曲线,起初斜率大,后来斜率小。图2则更为直观,可以看到一个周期性的波动和一个递减的趋势。图2的规律是我们建模的基础。
2.使用图表
数据可视化是一种常见的表达方法,具象化的图像比抽象的数字更为直观。在小学阶段我们就接触了三种常见的图表,即条形图、折线图、饼图。这三种图表在各个领域都非常常见,不外乎中文VOCALOID。
除此之外,散点图也是常用的图表。选取两个变量作为横轴和纵轴,将一个个数据点描在平面直角坐标系中,得到一组散点,从而观察潜在的规律。

事实上我们不必要标注每首歌的歌名。我们可以看出选出的样本,在横轴为播放量、纵轴为收藏量的坐标系中,这些数据点构成了一条长长的“带”。
在其它学科中经常有类似地研究方法,比如将同一个电阻的电压和电流作为横轴、纵轴,可以观察到一条直线——由于欧姆定律,那是严格正比例的。将中国城市的市区人口和建成区面积画在坐标系中,会得到一个狭长的“带”。城市人口越多,建筑物自然越多,但是这并不是严格的正比,只是大致的趋势。
正如中文VOCALOID歌曲,播放量越高收藏量理所当然越高,但是绝无严格的正比关系,只是大致趋势。
在天文学上,将恒星的亮度(绝对星等)和恒星表面温度画在坐标系中,得到了一条条狭长的带。这样的图称作“赫罗图”。其中有一条明显的,从左上角到右下角的带,便是主序星带。我想,这种研究方法在中文VOCALOID领域是适用的。


四、几个基本规律
1.日内不均匀性
由于人的作息安排,在一日之中各个时间点,能够观看中文VOCALOID投稿的人在数目上是不同的。粗糙地描述为下午、晚上人多,后半夜人少。这一个特性叫做“日内不均匀性”。
譬如某投稿在一日之内播放量增长2400,并不意味着它在这一日中每个小时都增长了100,它很有可能在后半夜几乎不涨,在晚餐后每小时增长两三百。
日内不均匀性可以用一个表来近似地描述,也可以用级数来描述。值得注意的是,在平日、周末、寒暑假,日内不均匀性的分布是不同的。这是因为中文VOCALOID的主体观众是学生。
在平日,我们可以看到明显的三个高峰,分别是早餐、午餐后、晚餐后,这三个峰一个比一个高,一个比一个宽。在周末。午高峰和晚高峰融为一体,从午饭后一直到睡眠前,形成了一个“高原”。
日内的不均匀性和整个B站的在线人数相吻合。
日内不均匀性主要有两个应用:
①有些数据研究者,在根据日内不均匀性分析中文VOCALOID观众的年龄/学历分布情况。
②可以有效地判别非正常的播放量、收藏量。
例:在今年三月前后,纯白《中华铄金娘》的播放量增速在一日之内的分布与规律不符。表现为分布曲线向上平移。经理论计算,《中华铄金娘》被均匀速率地刷取播放量。后来,数据异常停止,播放量增速恢复正常。作差结果表示,真实的刷取速率和计算得到的刷取速度相符。
2.周内不均匀性(周末效应)
与日内不均匀性相同,周内也具有不均匀的流量。粗糙地描述为周六、周日多,周一到周四少,周五介于二者之间。其经验规律是周末播放量增速往往是平日的两倍。
上文举的《中华铄金娘》在非正常时期同样违背了周内不均匀性的规律。
周内不均匀性有以下应用:
①可以辅助判别非正常的播放量、收藏量;
②有助于更好地预估达成“传说”、“殿堂”的时间。
3.过零点效应
一个投稿的播放量增速,在过零点后,会有一个不高的峰值。这是因为B站的播放量机制,一日之内同一个用户只能贡献有限的播放量。当过零点后,进入了新的一天,正在观看的观众可以提供新的播放量。
过零点效应证明了B站播放量的计量机制。有网友说,每个观众,每六个小时可以贡献一个播放量。但是现在没有十足的证据阐明有“过6点效应”“过12点效应”“过18点效应”。
4.成就效应
在一个投稿达成“殿堂”、“传说”之后,它的播放量会比达成成就之前增长得更快。这称作“成就效应”。
这是因为在达成成就后,会有大量的网友,包括一些流量较大的站子、数据统计者、UP主,转发这个投稿。这个效应在《普通DISCO》达成八百万播放量时被发现并记录。在《星愿StarWish》达成“传说”时被定量地表述[4]。

五、数据模型思路
1.本征模型
把研究对象的特性分为“本征”和“应激”是各学科常见的方法。在某些学科,称为“禀性”、“非禀性”。
譬如某金属导线,其本身“生而具有”一定的电阻,称为禀性电阻,现在将其扭曲、拉伸、捶打,它的电阻会增加,多出来的电阻可以称作非禀性电阻。再如某人“生而具有”一定的力气,可以成为本征力量,在紧急情况下,他可能可以表现出更大的力气,可以将多出来的力气称为应激力量。又如某纯液体在常压下,其沸点是80℃,可以称为本征沸点,现将少量电解质溶入其中,其沸点升高至82℃,多出来的2℃,可以叫做应激沸点。
本征与应激的关系,是对象与环境的关系,是内因与外因的关系,是决定性和影响性的关系。
投稿的播放量可以分为本征播放量和应激播放量。所谓本征播放量,指的是该稿件不受任何外界影响时,其自然而然、生而具有的播放量。根据时间序列模型的方法,我们认为播放量增速Y由三部分相乘,这三部分是总趋势T、周期性变化S、噪声I[5]。

“VC经济学”的负责人清风炊烟对噪声I为何是乘上去表示质疑。笔者认为,很显然诸如《普通DISCO》、《九九八十一》这样的歌曲播放量噪声大,而小众投稿噪声小,也就是噪声和总体的流量是有正相关的。因而笔者更推崇乘法模型。
参见前文的图2,我们看出《黑羊少女》的播放量是一个单调递减的函数和一个周期性函数相乘的结果,自然,还要乘上噪声。这个单调递减的函数便是总趋势T,而这个周期性函数则是S。
总趋势T的性质:总趋势是严格单调递减的、是恒非零的。在今年四五月笔者与一位应用数学系的好友,交流过这个问题。在此之前,关于T主要有两个猜测的模型。
①反比例模型,认为总趋势与时间成反比:

如果使用反比例模型,可以得出播放量是对数模型。这个模型在去年暑期,暗伴星告知我。反比例模型的导数与自身的二次方成正比。
②指数模型,认为总趋势和时间有指数关系:

2.外界刺激的影响
外界刺激的主要形式有:转发、上首页、推送、翻唱等等。以最常见的转发为例,其特点是①响应时间短,通常只有5分钟左右;②制造较大的流量;③消散迅速。
因而对于转发峰,笔者更倾向于指数模型。转发制造的流量比较大,笔者观察到排骨教主翻唱《再一杯!》制造的应激流量,没有转发《再一杯!》制造的流量大。
应激的播放量、收藏量截至目前为止,研究的程度还很浅,许多内容未了解清楚,值得进一步挖掘。

参考资料
[1] 萌娘百科词条“VOCALOID中文殿堂曲”. zh.moegirl.org/Vocaloid中文殿堂曲
[2] 非洲のGUMI酱. 周刊VOCALOID中文排行榜♪362. www.bilibili.com/video/av59341404
[3] 胖丁家的林亦. 揭密点赞投币收藏重要性顺序. www.bilibili.com/video/av38637671/
[4] 景育. 《星愿StarWish》在传说之后增速更快. h.bilibili.com/23061087
[5] 王宝海, 王坚. 统计学原理[M]. 北京:中国人民大学出版社. 2016