文本挖掘实操|用文本挖掘剖析54万首诗歌(20)
2024-06-15 来源:旧番剧
这是最简单的情形,生成的效果也就非常一般,很多时候是文理不通。为了保证生成效果,一般会(同时)用到一些复杂的生成策略,如Beam Search、Top-k sampling、Top-p sampling(NUCLEUS SAMPLING,核采样)、Repetition_penalty(对重复性进行惩罚)、Length_penalty(对生成过长的诗句进行惩罚)等,这样会兼顾诗歌生成的一些其他因素,如流畅度、丰富度、一致性等,诗歌生成的效果也能得到较大的提升。
笔者基于哈佛大学的GLTR( Statistical Detection and Visualization of Generated Text)来探究下机器和人作诗时的一些差异,该工具输入的是诗歌,输出的是机器和人作的诗歌的字出现概率分布统计,我们从中可以发现诗歌“炼字”的一些奥秘。笔者试举一例:
在上图中,色块的颜色代表的是字所在的概率区间,红色代表出现概率TOP10的字,黄色的是TOP100,绿色的是TOP1000,紫色的是TOP10000。从结果中,我们可以看到机器作诗时,红色和黄色的字概率分布区间占比较大,逐字生成时一般是从头部的字概率分布中来取,从而导致会诗句生成较为常见的表达;人创作诗歌时,各颜色代表的字概率分布区间占比较为接近,至少是差异不大,最终导致诗歌的表达千变万化,不落俗套。
古时诗人作诗,重在“炼字”。炼字,指锤炼词语,指诗人经过反复琢磨,从词汇宝库中挑选出最贴切、最精确、最形象生动的词语来描摹事物或表情达意。从这个角度来看,具有统计学意义的“选字”策略基本不可取 --- 不是词不达意就是容易落“俗套”。
比如,陶渊明的那句“采菊东篱下,悠然见南山”中“见”换成“望”就不好。虽然按从诗歌数据集学到的概率来讲,“望”在过往出现的概率远大于“见”,但“见”通“”现,有“无意中看见”的含义,标明作者是不经意间抬起头来看见南山,表达了整个诗句中那种悠然自得的感触,好像在不经意间看到了山中美景,符合“山气日夕佳,飞鸟相与还”这种非常自然的、非常率真的意境,而“望”则显得有些生硬。