
第十八章:顾言之的情话软件
事情的开端,是陈砚的一句吐槽。
那天顾言之在宿舍对着笔记本电脑敲代码,陈砚路过的时候瞄了一眼,看到屏幕上密密麻麻的Python代码,忍不住问:“你在写什么?论文数据分析?”
“不是,”顾言之头也不抬,“情话生成器。”
陈砚的脚步停住了。
“你说什么?”
“情话生成器。一个随机生成情话的小软件。”
陈砚在原地站了三秒钟,然后慢慢走到顾言之身后,低头看着屏幕。代码写得工工整整,变量命名规范,注释清晰,还有一个专门用来存储情话模板的数据库。
“你花了多久写这个?”陈砚问。
“两个小时。还在调参数。”
“你写一个情话生成器只需要两个小时?那你写情书是不是只需要复制粘贴?”
“情书不能复制粘贴。情书需要个性化处理。”
陈砚深吸一口气,拍了拍顾言之的肩膀:“老顾,你是我见过最离谱的恋爱脑。别人谈恋爱写情书,你写情话生成器。你是不是打算量产情话?”
“不是量产。是优化效率。每天想一句不同的情话很耗时,生成器可以帮我减轻认知负担。”
“认知负担???”陈砚的声音提高了八度,“你跟女朋友说情话还要优化效率???”
“感情需要经营,经营需要工具。”
陈砚张了张嘴,发现自己竟然无法反驳。他转身走开,走了三步又回来:“那个情话生成器,你能不能加一个功能?让它生成的情话不要那么学术。上次你说的‘你是我的边界条件’,正常人听不懂。”
“她听得懂。”
“她是中文系的!她听得懂‘边界条件’?!”
“她看过物理科普书。”
陈砚沉默了。他觉得这两个人是真的没救了。
第二天,顾言之把情话生成器部署好了。他设置了一个定时任务,每天早上八点自动运行,随机从数据库里抽取一条情话模板,填充变量,生成一句新的情话,然后通过微信发给他。
他再手动转发给林念念。
为什么不是自动转发?因为他觉得自动转发缺乏人情味。手动复制粘贴,至少证明是他“亲自”发的。
这个逻辑,陈砚听完之后给出了一个评价:“你是我见过最会给自己加戏的人。”
顾言之没有理会。他在等待第一条随机情话的生成。
早上八点整,手机震了一下。
顾言之打开软件,屏幕上显示着今天生成的情话:
“你像薛定谔的猫,在我心里又死又活。”
他读了一遍,觉得这是一个很好的量子力学隐喻——薛定谔的猫是量子力学中著名的思想实验,猫在被观测之前处于既死又活的叠加态。用这个来比喻对方在自己心里的状态,既科学又浪漫。
完美。
他复制了这句话,粘贴到和林念念的聊天框里,发送。
然后他等着。
三秒钟后,林念念回复了。
“你才死。”
顾言之盯着这三个字,眉头微微皱起。他预想过很多种回复——有“哈哈”、有“你神经病”、有脸红的表情——但没有想到是“你才死”。
“我没有死,”他回复,“薛定谔的猫是一个比喻,指的是叠加态。”
林念念秒回:“我知道薛定谔的猫!你上次给我讲过!但你说我在你心里又死又活,是什么意思?我到底是死是活?”
“叠加态。在没有观测之前,两种状态并存。”
“那你观测一下!”
“观测会导致波函数坍缩。坍缩之后,叠加态消失,变成确定态。”
“那你坍缩啊!”
“坍缩之后,你就变成了一个确定的状态。但目前的观察数据还不足以确定坍缩的结果——”
“顾言之你不要跟我讲波函数!!!你就是在说我死了!!!”
“不是这个意思——”
“你就是!”
顾言之看着屏幕,陷入了沉思。他明明觉得这是一个很浪漫的比喻,为什么她理解成了“你死了”?难道是因为“薛定谔的猫”这个比喻在大众文化中确实有被误解的风险?
他打开和计算机的聊天框(其实是和陈砚),发了一条消息:“情话生成器的第一条情话被差评了。”
陈砚秒回:“生成的什么?”
“你像薛定谔的猫,在我心里又死又活。”
对面沉默了十秒。
然后陈砚发来一长串:“哈哈哈哈哈哈哈哈哈哈哈哈哈哈你管这个叫情话?!你跟女朋友说‘你在我心里又死又活’???她没把你拉黑已经是真爱了!!!”
“这个比喻在量子力学层面是准确的。”
“谁跟你聊量子力学层面了!你是在谈恋爱不是在开学术讲座!”
顾言之想了想,觉得陈砚说得有道理。他打开情话生成器的代码,在数据库里删除了“薛定谔的猫”这条模板,然后给林念念发了一条消息:“对不起。明天重新生成。”
林念念回复:“明天别让我死了。”
“好。明天让你活着。”
“你保证?”
“保证。”
第二天早上八点,顾言之提前五分钟打开了情话生成器。他紧张地等待着——比等论文审稿意见还紧张。
八点整,手机震了一下。
新情话生成了:
“你是我的边界条件,没有你,我的方程无解。”
顾言之读了两遍。边界条件——在物理学和数学中,方程需要边界条件才能有唯一解。没有边界条件,方程要么无解,要么有无穷多解。这个比喻的意思是:你是我的约束,也是我的存在的前提。
科学,浪漫,而且这次没有“死”。
他复制发送。
这次回复来得慢了一点。大概过了十秒钟。
林念念发来一条消息:“……有点感动。”
顾言之松了一口气。然后她的第二条消息来了:“但你能不能正常点?”
“怎么了?”
“你说我是你的边界条件,没有我你的方程无解——我可以理解成你需要我。这很好。但你为什么不能用正常的话说?”
“什么叫正常的话?”
“比如说‘我需要你’。四个字就行了。”
顾言之想了想,回复:“‘我需要你’的信息量太低了。边界条件这个比喻包含了更多层次:一、你是我的约束,让我变得确定;二、没有你,我的状态会发散;三、——”
“行了行了,”林念念打断他,“我知道你很会打比方。但你有没有发现,你的情话都需要我翻译一遍才能懂?”
“翻译需要多久?”
“大概……两秒钟。”
“那效率还不错。”
林念念发了一个翻白眼的表情,然后又发了一条:“算了,你继续说吧。虽然有点奇怪,但……挺可爱的。”
顾言之看着“挺可爱的”三个字,嘴角弯了一下。他把这条聊天记录截图,存进了一个叫“正向反馈”的文件夹里。
陈砚后来知道这件事之后,问他:“你存这个干嘛?”
“用于优化情话生成器的算法。她的反馈是优化模型的训练数据。”
“……你不是在写软件,你是在用机器学习谈恋爱。”
“原理相似。”
陈砚转身走了。他觉得自己和顾言之住在一个宿舍,智商会受到降维打击。
第三天,情话生成器生成的是:
“你是我的万有引力,让我无法逃离。”
林念念回复:“这个还行。但没有‘万有’更好。因为‘万有’听起来像你有很多个引力。”
顾言之回复:“引力只有一个。‘万有’是‘普遍存在’的意思。”
“我知道。但听起来别扭。”
“好,下次去掉‘万有’。”
第四天:“你是我的光速,是我不可超越的极限。”
林念念回复:“这个好!我喜欢!”
顾言之把这条回复截图,又存进了“正向反馈”文件夹。他在代码里把“光速”情话的权重调高了0.5。
第五天:“你是我波函数坍缩的唯一观测者。”
林念念回复:“这个我听懂了!你是说只有我才能让你确定!”
顾言之回复:“正确。你的翻译效率提升了。”
“那是当然。我天天跟你在一起,都快成物理系编外人员了。”
顾言之看着这条消息,犹豫了一下,打了一行字:“那你要不要转专业?”
“不要。中文系挺好的。而且——”林念念的消息停了一下,然后发来,“我转了专业,谁给你写情诗?”
顾言之盯着这行字,手心温度开始上升。
他回复:“那我可以写情诗给你。”
“你写的情诗就是‘你是我的边界条件’吗?”
“我也可以写别的。比如——你是我的春风,吹过我的荒原。”
林念念发了一个震惊的表情:“你什么时候学会写诗了?!”
“情话生成器新增了文学风格模板。我加入了‘诗意’参数。”
“你连这个都能参数化?!”
“可以调。目前‘诗意’参数设置在0.7,满分是1。”
“你调成1会怎么样?”
“会变成‘你是我的春风,吹过我的荒原,从此万物生长,不再荒芜’。”
林念念沉默了几秒,然后发来一条语音。顾言之点开,听到她的声音带着笑意:“顾言之,你的情话生成器能不能借我用一下?”
“你要做什么?”
“我也想给你写情话。但我的版本是——你是我的重力,让我脚踏实地;你是我的出口,让我不必逃亡。”
顾言之听完这条语音,手指悬在键盘上方,没有动。
他的“情话生成器”在这一刻生成了最真实的一句话,不需要任何算法——
“你是我最好的参数。不需要调。”
他把这句话发了过去。
林念念回复了一个笑的表情包。
顾言之把这条聊天记录存进了“正向反馈”文件夹,然后在代码的注释里写了一行:“最优情话不是生成的,是她给的。”