欢迎光临散文网 会员登陆 & 注册

还在发愁无法融入A-soul评论区吗?让AI帮你解决吧!

2021-07-12 19:18 作者:梦或一生  | 我要投稿

女子虚拟偶像团A-soul因为特殊的发展情况,造就了如今以男性粉丝为核心,多亚文化圈子融合的新类型粉丝群体。所以其评论区更是被称为网络的亚文化巴别塔,在评论区中的大家杂糅着不同的亚文化梗,网络新潮词汇和各种各样的小作文,对此粉丝将其趣称为”发病“,但将这些发病的评论逐字逐句的拆开,其核心又是对五个女孩子的爱。

作为一个被《嘉然小姐的狗》这篇小作文吸引入坑的au,我一直喜欢asoul评论区这种神奇有趣的氛围,所以我产生了利用深度学习模型对asoul进行语言模型构建的想法,计划利用一个简化的GPT模型,用asoul评论区的评论进行语言生成模型的训练。

评论区爬取

经过简单的分析,我初步确定了自己爬取评论区的思路:先爬取asoul相关的up发布视频的bv号,再对每个bv号的评论区进行评论爬取,数据保存。

考虑到评论数据的分布特点,在这里我选择主要爬取A-soul五个女孩子(嘉然,晚晚,乃琳,贝拉,珈乐)和A-soul录播robot贾布的评论区。

在爬虫技术上,由于技术力的限制,所以采用selenium进行数据爬取。

利用Edge浏览器进行模拟登录,爬取数据

确定up视频页面中bv号的位置并进行爬取保存

同时需要进行翻页以确保所有bv号被爬取

完成bv号的爬取之后,需要对每个视频下的评论进行爬取,思路与上面相同,需要找到评论的位置,但同时需要注意b站的评论出现机制是需要不断在页面下拉然后反馈显示的,所以需要定义下拉函数

同时考虑到爬取的效率问题,所以利用multiprocessing进行多线程爬取

经过上述的流程就可以获得asoul评论区的一部分评论数据总量大概13M,部分数据如:

乐华12周年有粉丝录视频的活动,长的像个人au速去录一下
贝极星:高雅这块赢太多了😎拉姐 :勇敢牛牛
拉姐的评论区太正常了吧,果然贝极星在发病这块屁用没有🤗😄
贝极星先看完视频再评论!拒绝摆烂!😡
拉姐😭今天在各种地方臊皮影流一天了😭容我zqsg一波吧,我真的好喜欢你啊拉姐,要永远快乐下去😭😭
@柯洁
7.2我认识了一个女孩,我们聊理想,聊未来,从天南海北聊到柴米油盐,我们聊到很晚,互道晚安之后结束了一天的闲聊。7.3我给她推荐了贝拉的切片,我被拉黑了,我很苦恼,她给我发的最后一句话是二次元真恶心。7.4她把我加回来,问我还有吗,我很高兴,和她聊了一天的贝拉。7.5她又把我拉黑了说怕贝拉误会
很奇怪,为什么拉姐才21w关注,另外的14e呢,都不用手机的吗

数据处理与分析

对爬取的评论进行简单的数据清洗(主要去除英文、标点和表情)和简繁体转换,之后利用jieba分词进行分词,同时添加A-Soul关键分词如:嘉然,然然,鼠鼠,晚晚,嘉心糖,贝极星,顶碗人等。同时创建字典,可以简单看一下Asoul评论区的高频词:

{'嘉然': 14942, '然然': 12531, '乃琳': 12495, '贝拉': 10340, '晚晚': 8917, '喜欢': 8118, '直播': 7675, '真的': 6892, '向晚': 5417, '珈乐': 4957, '可爱': 4812, '工具人': 4487, '小姐': 4415,'评论': 4197, '拉姐': 3563, '弹幕': 3140, '感觉': 3090, '嘉心糖': 2869, '视频': 2600, '粉丝': 2353}

ASoul评论区词频统计
200高频词词云

需要说明一下,这个词频统计是去除了停用词和筛选了字数大于1的词之后的结果(生成式模型训练时不能去除停用词),这是为了去除如:了,的,哈,这样没有意义但却大量出现的干扰项。

确定好数据字典后,就可以将原本的评论语句中的词替换为对应的one-hot向量模式,以便于后续的模型输入和训练。

['别', '勇敢', '牛牛', '了', '求', '你', '了', '拉姐']

[1, 1186, 22, 23, 20, 1627, 52, 20, 21, 2]

最后利用Dataset进行封装,并将不同长度的评论都对齐到长度为50(电脑性能限制不能设再大了)

深度学习训练

利用以Transformer的解码器部分为核心的GPT-2模型为基础的语言生成模型进行数据的训练。不过受限于电脑GPU性能,所以只能采用更小的参数进行模型训练,最终训练出来的模型大小为147M左右

Loss下降曲线

生成效果

生成部分我采用随机地在生成概率较大的几个词中选择作为输出,这样可以有效的避免出现重复词的现象。

生成效果较好的句子展示:

以:我喜欢 开头

生成:我 喜欢 你 不 懂 为什么 为什么 为什么 不是 我 只是 一个 女孩 我 心里 还是 第一次 追星 和 我 真的 是 一个 女孩 琳 却 无法 摆脱 的 原因 找到 一个 太阳 的 人 因为 你 是 奔 在 路边 的 光

以:乃琳 开头

生成: 乃琳 说 乃琳 我 的 我 我 好 我 哭 了 我 喜欢 的 世界 上 最 美好 的 一天 从 看到 我 才 发现 原来 我 的 眼里 只有 嘉然 她 就 可以 去 了 我 觉得 自己 也 没有 什么 都 没 必要 讨厌 对线 没有 我

以: 珈乐 开头

生成:珈乐 爱情 海里 是 向晚 贝拉

生成:珈乐 红色 高跟鞋 马上 溜 一遍

以: 害羞小向晚 开头

生成: 害羞 小 向晚 贝拉 我 的 乐 你 没有 你 我 我 可 怎么办 呀 我 的

生成: 害羞 小 向晚 嘉然 我 的 然然 然然 然然 嘿嘿 嘿嘿 然然 我 的 然然

以: 嘉然 开头

生成:嘉然 的 名字 不 知道 吗 我 要 吧 我 要 紫砂 对不起

生成: 嘉然 小姐 对不起 对不起 啊

生成: 嘉然 我 好 喜欢 你 然然 我 走 吧 带 我们 一起 走

以: 贝拉 开头

生成:贝拉 我 的 我 真的 好 喜欢 你 啊 你 带 我们 一起 睡 啊

以: 向晚 开头

生成: 向晚 是 最 喜欢 我 喜欢 的 然然 然然 我 绿 我 绿 了 


可以看到生成的噪声较大,无意义的词生成较多,这个原因来自很多方面,除了基本的数据量较小,模型参数不够大还有很重要的一点是中文分词构建词典存在分词的数量太多而造成的数据稀疏现象,就比如本次在构建词典时就存在6w+的词汇,但其中一大部分的词仅仅出现几次,这就造成这部分词反而更像噪声。

对此我的一个想法是抛弃word级别的模型,而采用char级别的模型进行训练,这样可以有效的较低词典尺寸的大小(6w到5000左右),但这样无疑是摒弃了分词所带来的信息量,而将其完全扔给模型进行信息提取,之后可能会进一步实现自己的想法。

写在最后的话

在我看来,A-soul是一个有趣的、高技术力的虚拟偶像企划,其带给了我很多欢乐。由衷的希望ASoul可以越办越好,嘉门。


还在发愁无法融入A-soul评论区吗?让AI帮你解决吧!的评论 (共 条)

分享到微博请遵守国家法律