第二章:一封来自深夜的乱码诗
深夜十一点四十七分。
计算机学院主楼的三层,大部分实验室的灯光已经熄灭,只有走廊尽头那间研究生专用机房的磨砂玻璃门后,还透出稳定的、冷白色的光。
林栀坐在三号机位前,屏幕的光映在她脸上,勾勒出专注而略显疲惫的轮廓。空调发出低沉的嗡鸣,空气里弥漫着电子设备散热的气息,以及一丝若有若无的、来自隔壁植物培养室的土壤腥气。
她的手指在键盘上快速敲击,发出清脆而规律的哒哒声。屏幕上,黑色的代码窗口里,绿色的字符瀑布般向下滚动。
for意象 in意象库:
情感权重=计算关联度(意象,目标诗句)
如果情感权重>阈值:
添加关联边(意象节点,情感节点)
模型训练进入了最关键的调参阶段。白天的答辩虽然最终获得了“优秀”的评价,但陆清歌那些关于“灵魂”与“不可量化”的质疑,像一根细小的刺,扎进了她逻辑严密的世界观里。
她并非真的认为陆清歌全无道理。诗歌的接受美学确实存在主观差异,但林栀坚信,这种差异本身,也必然有规律可循,有原因可溯。差异不是混沌,而是更高维度上的秩序。
她要找到那个秩序。
为此,她重新梳理了模型的架构,在原有的意象-情感关联层之上,增加了一个新的模块——“语境漂移跟踪器”。这个模块试图捕捉同一个意象在不同诗人、不同时期、不同心境下的细微情感偏移,并尝试为这种偏移建立数学模型。
这很困难。诗人们不会在诗后标注“此处哀伤权重0.7,遗憾权重0.3”。一切都需要从浩如烟海的注释、评点、创作背景资料中提取、归纳、量化。
她调用着校内古籍数据库的API,批量下载着《全唐诗》的笺注本。数据流在光纤中无声奔涌,屏幕上不断弹出新的文件下载提示。
凌晨一点零三分。
一个意外发生了。
她编写的一个数据抓取子程序,在处理晚唐诗人李群玉的一首冷僻诗《引水行》时,遇到了编码冲突。古籍数据库使用的是一种古老的汉字编码格式,而她的程序默认处理UTF-8。一个本应是“竹”字的字符,在转换过程中变成了一串无法识别的乱码:“0xE7 0xAB 0xB9”。
程序没有中断,而是将这串乱码当作有效字符,继续向下运行。更巧的是,这串乱码的十六进制值,恰好与她模型情感向量中表示“幽寂”维度的某个内部标识符部分重合。
像一颗石子投入平静的湖面,涟漪开始扩散。
“语境漂移跟踪器”模块捕捉到了这个异常的“意象”(那串乱码),并试图在庞大的情感向量空间为它寻找位置。程序逻辑开始自动检索所有包含类似乱码字符的“诗句”(其实大部分是转换错误产生的垃圾数据),并计算它们与各情感标签的关联度。
凌晨一点十七分。
监控程序发出了一声短促的“嘀”声,屏幕角落弹出一个黄色警告框:
【检测到模块‘语境漂移跟踪器’情感输出波动异常。是否查看详细日志?】
林栀揉了揉发涩的眼睛,点击“是”。
日志窗口弹出,里面是密密麻麻的、近乎乱码的“诗句”与情感分析结果:
“0xE7 0xAB 0xB9影入空潭 0xF0 0x9F 0x8C 0xB2”->情感:孤寂,权重 0.89
“if长河落日 then 0xC3 0xA9 0x6E 0x69 0x67 0x6D 0x61”->情感:壮阔/苍凉,权重 0.76,0.61
“秋风 0xE6 0x8D 0xA2故园 while 1:”->情感:乡愁,权重 0.93;异常:循环未定义
林栀皱起眉头。这些“诗句”大部分是编码错误和程序bug的混合体,夹杂着偶尔漏网的真正诗句碎片。她移动鼠标,准备终止这个显然出错的进程,并回滚到之前的稳定版本。
就在她的指尖即将点击“强制结束”的瞬间——
屏幕中央,情感生成子程序的输出框里,缓缓滚动出了一行新的文字。
这行文字,与之前纯粹的乱码或碎片不同。它似乎是被那个“跑偏”的跟踪器模块,在胡乱抓取和拼凑了大量垃圾数据与诗词碎片后,偶然生成的一个……勉强具有句法结构的字符串。
它甚至被程序自动分行,加上了标点:
夜风解析未命名变量的愁,
递归调用月光的柔。
栈溢出在子夜的港口,
无法捕获一个比喻的舟。
林栀愣住了。
这不是诗。至少不是人类写的诗。它充斥着编程术语:解析、变量、递归、调用、栈溢出、捕获。
但这四行字,偏偏又诡异地押了“ou”韵(愁/柔/口/舟),并且在意象上有一种破碎的连贯性:夜风、月光、子夜、港口、舟。甚至那“未命名变量的愁”和“无法捕获一个比喻的舟”,透出一种生硬却奇特的、试图描述某种抽象情绪的感觉。
像一个牙牙学语的人工智能,在笨拙地模仿人类的抒情。
她看着这四行字,第一个反应是荒谬。第二个反应,却是某种难以言喻的……触动。
她想起了陆清歌的话:“诗歌最珍贵的东西,无法被完全量化。”
那么,眼前这个由错误的编码、bug的程序、混乱的数据偶然生成的、非人非诗的东西,算不算一种对“量化”的讽刺?还是说,它恰恰以一种荒诞的方式,触碰到了某种连人类诗人都难以言明的、关于“愁”与“不可捕获”的直觉?
鬼使神差地,她没有立刻关闭程序。
她移动光标,选中了这四行奇怪的文字。右键,复制。
她想把它保存下来,作为一个有趣的、程序异常的艺术副产品,或许以后可以在技术博客上写个案例分析。
她打开了自己的邮箱,新建邮件。收件人栏,她习惯性地开始输入导师的邮箱地址,想先发给导师看看这个“有趣的bug”。
指尖在键盘上停顿了。
凌晨的机房过于安静,只有机器低鸣。一种莫名的、混合着疲惫、孤独和某种叛逆冲动的情绪,悄然漫了上来。白天的答辩,陆清歌那平静却不容置疑的目光,还有此刻屏幕上这四行不伦不类的“诗”……
她删掉了导师的邮箱。
一个模糊的念头浮起。一个近乎恶作剧的、不理性的、完全不符合她行事风格的念头。
她知道陆清歌的校内邮箱。因为答辩前,系里发过评委名单和联系方式。
她的指尖在键盘上敲击,缓慢但准确地将那串字母和数字组合输入到了收件人栏:
lu.qingge@c.edu.cn
主题栏,她停顿了几秒,然后敲下两个字:
问诗
正文区,她粘贴上了那四行字。没有署名,没有问候,没有任何多余的解释。
光标在发送按钮上方悬停。
心跳在寂静中被放大。她在做什么?把一段程序生成的乱码,发给一位质疑她整个理论基础的文学教授?这算什么?挑衅?证明?还是连她自己都说不清的、一种渴望被“看懂”的试探?
理性在告诉她:停止。删除。这是个愚蠢且毫无意义的行为。
但另一种更深沉、更模糊的力量,推着她的手指,轻轻点击了下去。
“邮件发送成功。”
提示框弹出,又消失。
屏幕恢复平静,只剩下代码窗口和那依然在运行、但已无关紧要的异常进程。
林栀看着已发送邮件里那个孤零零的记录,突然感到一阵强烈的不真实感和轻微的懊悔。她立刻动手,想要撤回邮件。但学校的邮件系统,发送成功即无法撤回。
她靠在椅背上,闭上眼睛,长长地吐出一口气。疲惫如潮水般涌来,淹没了刚才那一瞬间的冲动和紧张。
算了。她对自己说。他或许根本不会看陌生邮件。即使看了,也只会当作垃圾邮件,或者某个学生的恶作剧,随手删除。
窗外,城市的霓虹在远处流淌,夜色深沉。机房的白炽灯冰冷地照耀着,将她和她屏幕上那些沉默的代码,一同框进这个与世隔绝的方寸之地。
她关闭了所有程序,收拾好东西,关灯,离开。
门在她身后轻轻合上,锁舌发出“咔哒”一声轻响,将那个刚刚诞生过一串古怪字符和一次冲动发送的空间,重新归还给寂静的黑暗。
几乎在同一时刻,文学院家属区,一栋老式小楼二层。
书房里只亮着一盏黄铜底座绿色灯罩的台灯,光线温暖而集中,照亮了红木书桌上一摊开的大开本线装书。空气里有旧纸、墨锭和若有若无的沉香味道。
陆清歌刚结束一个越洋学术电话会议,讨论新版《李商隐诗全集》英译本的措辞问题。他有些疲惫地摘下眼镜,揉了揉眉心。
电脑屏幕从休眠状态亮起,显示着邮箱界面。他习惯性地点开收件箱,扫过几封系里的事务邮件、期刊审稿邀请,然后,目光停留在了一封没有发件人姓名、主题为“问诗”的陌生邮件上。
发件人地址是一串无意义的数字和字母组合,像是系统自动生成的临时账户。
垃圾邮件?或者某个不擅长交际的学生,用匿名方式发来的课程问题?
他本打算直接删除,但“问诗”两个字,在深夜的书房里,莫名地吸引了他的注意。
他点开了邮件。
正文只有四行字:
夜风解析未命名变量的愁,
递归调用月光的柔。
栈溢出在子夜的港口,
无法捕获一个比喻的舟。
陆清歌的眉头,在看到第一行时就微微蹙起。
解析?变量?递归?栈溢出?
这显然是计算机专业学生的“作品”。一种生硬的、术语堆砌的文字游戏。他几乎能想象出一个理工科学生,试图用自己熟悉的语言去附庸风雅、描摹情绪的画面。笨拙,甚至有些可笑。
但……
他的目光停留在第二行,“递归调用月光的柔”。
递归,在编程中意味着函数调用自身。调用月光?还是月光的“柔”?这是一种错误搭配,但“递归”这个词本身,却有一种奇妙的质感——月光一层层洒落,温柔叠着温柔,无穷无尽,如同递归调用,在理论上可以无限进行下去,直到栈溢出。
“栈溢出在子夜的港口。”
栈溢出,是递归没有终止条件导致的内存错误。子夜的港口……一个静止的、等待的、边界模糊的意象。栈的溢出,像某种无法承载的情绪,在寂静的子夜港口弥漫开来。
“无法捕获一个比喻的舟。”
捕获,又是编程术语。比喻的舟……诗人们常用舟比喻漂泊、追寻、或者渡越。一个“比喻的舟”,是诗本身?还是一种试图用语言承载却终将失败的情感?
无法捕获。
陆清歌向后靠在椅背上,手指无意识地轻叩着光滑的红木桌面。
这四行字,粗粝生硬,术语混搭,算不上诗。但它内部有一种古怪的、自洽的逻辑。一种用精确的、冰冷的计算机语言,去笨拙地围捕某种模糊的、流动的诗意的企图。
而这种企图本身,以及这企图中显而易见的失败(“无法捕获”),却意外地……打动了他。
他仿佛看到了那个隐藏在匿名邮件后面的作者(很可能就是白天那个眼神明亮、宣称要“推进边界”的女孩),在深夜的实验室里,面对冰冷的机器和代码,试图用她唯一熟悉的方式,去理解甚至创造“诗意”。一种孤独的、倔强的、注定会碰壁的尝试。
这不正是白天辩论的延续吗?用一种近乎行为艺术的方式。
他拿起钢笔,抽过一张便笺纸。纸上还残留着之前讨论李商隐时写下的零星笔记:“无端五十弦……惘然……”
他看着屏幕上的四行字,沉吟片刻。
然后,在便笺纸的空白处,他缓缓写下:
夜风拂潭水,
清辉自流转。
渔火温深港,
星槎渡浅澜。
用的是同样的“ou/an”韵(水/转/港/澜)。同样是夜风、月光(清辉)、港口(深港)、舟(星槎)的意象。
但他写的,是古典的、意象化的、留白的诗。是对那笨拙“乱码”的回应,也是一次示范——看,诗可以这样写,不必解析变量,不必调用递归,只需“拂”“流”“温”“渡”几个动词,让意象自然呈现、关联。
写完后,他看着自己写下的四行诗,又看了看屏幕上那四行“乱码”。
一种极其微妙的感觉浮上心头。像是隔着厚厚的学科壁垒和认知鸿沟,进行了一次无声的、错位的对话。
他并不知道对方是谁(尽管有强烈的猜测),也不知道对方为何发来这样一封邮件。但这封邮件和这四行字,像一颗投入深潭的小石子,在他原本平静的思绪里,漾开了一圈意外的涟漪。
他打开回复邮件界面,将便笺纸上的四行诗,一字一字地敲入正文。
没有称呼,没有落款。
只在点击“发送”前,他停顿了一下,在诗的最后,加了一个短短的破折号,和一个问号:
——陆?
然后,点击发送。
书房重归寂静。台灯的光晕温柔地笼罩着书桌,窗外传来遥远的、夜归车辆驶过湿滑路面的声音。那封带着“乱码诗”的邮件,和这封带着古典回应的邮件,已经沿着看不见的网络轨迹,飞向了各自的终端。
一场始于错误、充满误解、却又意外真诚的“笔谈”,在这个深夜里,悄然拉开了序幕。而对话的双方,一人走向空旷的校园街道,一人独坐温暖的书房,都未曾预料,这几行仓促的文字,将会如何搅动他们各自按部就班的世界。
