第11章 第三次浪潮:人工智能
本书至此,我们已经谈过,人工智能的运行原理并不像我们所期望的那样。我们看到了信息的错误传达,披着预测分析外衣的种族主义,还有被打破的梦想。现在,该聊点稍微令人高兴的事了:一条将最优秀的人力和最高效的机器结合起来的协作前进道路。人类与机器合作的表现要优于人类或机器单独工作。
这要从少年时的我和我家的草坪说起。我父母的房子以前是一座农舍,占地大约4 000平方米。从11岁开始,我的工作就是给草坪割草。我们有一台小型骑乘式割草机。用它割草感觉特别棒——几乎跟开车一模一样。我跟许多郊区的孩子一样,迫不及待地想要考取驾驶执照。只要是天气好的时候,每个周六,我都会坐着割草机在院子里割草。其实我不喜欢割草,但我非常喜欢驾驶割草机。
院子非常大,房子很旧,建在山坡上,所以地形颇为复杂。房子的后方有一个不规则形状的宽草坪,两侧各有两个圆形花园,前方有一片丁字形草坪,我需要覆盖到这些区域。
我有一条按地形行驶的路线。我会从后院开始,先在宽草坪边界收割一圈,开个好头。割草机的轮子会在草坪上留下平行的轨迹标记。接着走下一圈,我会让右前轮准确地轧上第一圈留下的左轮轨迹。这样,我就能确保割草机的刀片每一圈都能均匀地切割到草。每次我从窗户往外看,都能看到一种我喜欢的解构式螺旋图案。
我的母亲是一个狂热的园艺爱好者,她给院子里不同微气候的区域设计了精致复杂的花坛。其中有些小花园的构造有90度角,颇有特色,看起来很优雅。但是,割草机的转弯半径和刀片的位置意味着,除非我将割草机开到花坛以下4英尺的深度,否则无法切割那些90度角处的草。我可以在靠近花坛边沿的地方切一个圆弧,但它够不着那些90度角所在的角落。
我其实可以用骑乘式割草机完成大部分工作,然后回头再使用手推式割草机完成花坛角落的工作,这样那些角落就会是直角而不是弯的了。在我11岁时,负责割草的那位园丁拉尔夫就能办到这一点。事实上,他全程的工作都是使用手推式割草机完成的。但凡我是个更好的人,或是个乖孩子,我就会乖乖这么做。我妈唠叨了我无数次,而我几乎没有完成过一次。我能为此找到借口(过敏、太累了、中暑),但我怀疑真正的原因是我太顽固了,我不乐意那样做,所以我压根儿就不想做。我讨厌被割断的草和花枝从手推式割草机中飞出来击中我的小腿,我的小腿会因此红肿冒疹。我讨厌割草机散发出来的燃油气味和热浪。我讨厌我推着手推式割草机时全程窒息的感觉,因为我对草过敏。坐在割草机上时,我位于卸料口的前上方。但如果使用手推式割草机,我就在卸料口后方正对着它。手推式割草机让我非常难受。
我妈妈最终放弃唠叨,重新设计了花坛的布局,把直角改成了圆角。
那台骑乘式割草机就像一台电脑。我父母之所以购买这台骑乘式割草机,是因为它应该是一个省力的设备。他们不再雇用拉尔夫,而是以较低的价格“雇”我来完成同样的工作。但是,骑乘式割草机(我的每一次工作都遵循同一条路线,就像Roomba自动扫地机器人在屋子里工作时一样)的构造跟拉尔夫的手推式割草机不同,它们的工作方式不完全一样。此外,操作人员也不一样。拉尔夫是专业的园艺师,他做这份工作非常专业。而我只是一个对草过敏的暴脾气青少年,做这份工作很业余。我妈被迫在二者中做出决定:她是想要一个使用时髦技术但无法按她的需求完成工作的廉价方案,还是一个使用不那么花哨的技术但能完全按照她的需求完成工作的昂贵方案呢?
我妈是一个务实的女人,她有很多孩子和很多花坛,所以她选择把花坛改成圆角的。我们在自动化技术方面做的很多事情都与此如出一辙。自动化技术能处理许多无聊的工作,但它不会处理极端情况。极端情况需要人工参与。你得为极端情况建立人力解决方案,否则无法完成。
同样重要的是,不要指望技术能够处理极端情况。以人为本的高效设计要求工程师知悉,要完成工作,有时候你得自己动手收尾。例如,一个自动通话系统能够处理致电航空公司的人所遇到的大多数普通问题,但总归需要有一个人接听电话,因为总会有特殊情况。在新闻编辑室中,自动化技术同样可以处理大量工作。但是,总要有人接听电话,或者总要有人在新闻发布前审核自动生成的报道,因为技术有其局限性。有一些问题,人类能看出来,但机器看不出来。
这种有人类参与的系统有一个名称,叫人机闭环系统。在过去几年里,我一直对使用这一框架构建技术十分感兴趣。[1]2014年,我在寻找新的人工智能项目时,向少数记者和程序员询问他们认为的下一个热点是什么,结果竞选财务获得压倒性的票数。当时,美国总统大选在即;2010年联邦最高法院的裁决向不受捐款及开支限制的超级政治行动委员会(super Political Action Committee,简称super PAC)打开闸门,公民联合会已经整装待发。数据记者对竞选财务了如指掌。
我决定加入战斗。我制订了一个检测竞选财务欺诈及调查隐私的新人工智能引擎计划。这是一个人机闭环系统,能实现自动化挖掘调查性新闻新视角的过程。它跟许多人工智能项目一样,运行起来看着很利落,但是效果并不好。了解人工智能项目的构建原理,可以深入了解人工智能为何会兼有利落和无用两种特点。
有些调查性新闻简直是瓮中捉鳖,非常适合用来部署人工智能。要使用计算机来挖掘新闻,你得先确定有新闻可待挖掘。有钱的地方就有大量的故事。只要你有一大笔钱,那么不可避免地,就会有人试图把它弄走。飓风后的复苏、经济刺激计划、非招标合同——如果你要找一个尽干坏事的人,会发现他们潜伏的地方通常都有大量金钱。
联邦政治竞选活动的大笔资金总是会吸引到一些坏人。一般来说,政客擅长管理公共资金,同时也是忠诚的公仆。但有时也有例外。总体而言,数据记者的态度是,我们在2016年总统大选之前就应该密切关注竞选资金事宜。
我很想知道,我为教科书项目制作的软件是否可以应用到不同的场景。在技术界,我们重视迭代的价值——创造一个东西,然后将它重建得更好。我想用这个旧项目来迭代。我先前已经制作出这个工具了,可以显示一个学区中有问题的站点。那么,我是否可以制作出一个工具,显示出这个终极大区——华盛顿哥伦比亚特区的问题站点?
在哥伦比亚大学新闻学校Tow数字新闻中心的慷慨资助下,我决定开发一个新的聚焦于竞选资金的新闻挖掘引擎。这个工具可以让记者快速有效地在竞选资金的数据中挖掘到新的调查性新闻视角。先前建立引擎的目的是帮记者撰写关于学校课本的报道。这一次,我想做一个能帮记者在各主题领域中挖掘新闻的东西。我想建立一个更大的系统,让调查性新闻中单调繁重的工作实现更多自动化。当时距离大选还有很长时间,因此我有足够的时间来构建新技术,推出用于报道大选的新闻。
我听说过不少黑钱和super PAC在2010年公民联合会案件的裁决之后如雨后春笋般出现的事,我知道这个复杂的系统中肯定有大量我不明白的内情。但竞选财务就像公共教育一样,是一个复杂的官僚体系,拥有大量数据。竞选财务非常适合作为测试案例来开发一个新引擎。我想知道我能否用它找出不遵守自己所立规则的规则制定者。
我先从系统的设计思路入手。换句话说,我和那些对我想做的事情非常了解的人谈过,并且采用了他们关于那个圈子的说法。我和资深记者、竞选财务专家谈过,还采访了各种各样的竞选财务数据专家——记者、联邦选举委员会(简称FEC)官员、律师以及竞选财务监督组织的人员。对我帮助特别大的是政府快速响应技术团队18F的设计师和开发人员。
就在我构建工具的同时,18F团队正在给已过时的FEC网站设计新的用户界面。FEC.gov是美国所有竞选财务数据的主要公布渠道。这个网站浏览起来一直很不方便,因此数据也很难理解。而逐步推出的新界面将信息醒目地显示了出来。然而,新界面并未精准提供记者在挖掘新闻时所需的信息。相反,它专注于简单有效地公布FEC数据(这是一个崇高的目标)。所以,我的工作重点是设计一个界面,为记者提供18F新界面无法提供的信息。我最重要的消息来源是ProPublica的德里克·威利斯,这位记者(可能)比FEC的工作人员都要了解竞选财务数据。威利斯几十年来一直在报道竞选财务的新闻,他还构建了一套实用的自动化工具——OpenElections、Politwoops等。他的工具已经非常好用,重新做这些工具是没有意义的。我想做一些锦上添花的工作,比如多做一个挖掘工具,能使新闻报道的过程更快。此外,我阅读了许多东西。最具挑战的部分是数百页的美国法典和FEC法规和政策。我记下了其中出现的共同主题,密切关注人们常用的词汇。
第一步是设计系统架构。软件就像建筑物一样,具有底层结构。故事发现引擎是一个人工智能系统,但它并不依赖于机器学习。它来自人工智能程序的另一个分支——专家系统。在20世纪80年代,专家系统的初步构想是“装在盒子里的专家”。你向盒子提出问题,就如你向医生或律师提问一样,盒子会给你一个有根据的答案。可惜,专家系统从未真正起过作用。人类的专业知识太复杂,无法用计算机那种简单的二进制系统来表示。尽管如此,我还是决定借用专家系统的设计思路,将专家系统改造成一个基于记者专业知识规则运行的人机闭环系统。它运行良好。我并非做了个盒子来回答我提出的问题,而是做了一个引擎,来帮助作为记者的我更快地找到报道。
我决定用现实世界政治制度的规则来制定电子系统的规则。这个决定非常明智,因为我不必自己创建计算规则;但它也有缺陷,因为美国的竞选财务规则的复杂程度堪比犹太法典。我先试着简要介绍一下。每一位联邦职位候选人都有一个官方授权的竞选委员会。公民个人可以通过委员会向候选人捐助有规定上限的金额,目前这个限额是一场选举2 700美元。其他的政治行动委员会(PAC)可以筹集资金并捐给候选人的委员会,而这些PAC能说什么、能捐多少也各有限制。super PAC,也称独立支出政治行动委员会,则可以代表候选人进行无限制的资金筹集和支出活动。不过,他们可能不会就支出事项与候选人或候选人的官方委员会进行协商。还有其他利益集团,包括领导力PAC、混合型PAC(Carey PAC)、联合筹款委员会、527组织和国税法501(c)类机构。这些组织可以以代表或者反对一位或多位候选人为立场,进行筹款、支出或参与竞选。委员会和PAC需要向FEC汇报他们的开支和收入;527组织和501(c)类机构则需要向国税局(IRS)汇报开支。
不管你怎么看美国政府官僚机构,它确实非常适合数据库建模。官僚主义内的各种规则和法规就像一个精心设计的拜占庭式迷宫,错综复杂。各种欺诈诡计——或最轻微的耍手段,发生在规则的夹缝中。计算机代码是一套庞大的规则。因此,假如能在使用计算方式表达现实规则的时候发挥一些创意,我们就可以有效地模拟竞选的财政运作方法。这样,我们就能够知道在哪里可以找到问题所在。我整理了一个图表,模拟了相关机构实体以及它们之间的关系。这些机构实体成了模拟对象。
“竞选财务欺诈”是一个有用的短语,但它已经成了一个名存实亡的笼统表述。实际上,很少有竞选财务欺诈行为,因为原本的欺诈行为如今几乎都已经不违法了。20世纪70年代,美国对候选人的筹款、开支数额以及筹款来源都有非常严格的限制。在那之后,标志性裁决已经在逐渐削弱这些限制。2002年,《两党选举改革法案》(Bipartisan Campaign Reform Act)允许联邦候选人和政党的募捐限额每隔几年逐步增加。2010年,“公民联合会诉FEC案”的裁决决定,只要super PAC等外界团体不与候选人协商支出的情况,就允许其代表候选人筹集与支出不限额的资金。同年,“Speechnow.org诉FEC案”裁定,取消诸如527组织之类的外界团体允许筹集的资金数额限制。这些团体只需要公开资金捐赠人身份即可。2014年,“麦卡森诉FEC案”的裁决取消了个人为候选人、政党和PAC捐款的总额上限。[2]竞选资金管理方面的完整解释已超出本章的范围,至此不再展开细说。但我强烈建议读者浏览响应政治研究中心(Center for Responsive Politics)网站,它为非专业人士提供了竞选资金管理方面非常优秀的入门知识。
与专家们沟通完以后,我提取了那些对话中共同的元素。所有专家在调查(或关注)竞选财务欺诈活动时,都各有其特别关注的某些异常类型。有些异常信号会一再出现,比如行政超支。要理解行政超支,我们要从它的定义说起。严格来说,所有政治委员会都是非营利机构。但跟常规非营利机构不同的是,它们须向FEC提交财务报告,而非IRS。在非营利机构,通常一部分资金用于机构所致力的目标,一部分资金用于维持机构运行。目标驱动的费用通称“计划开支”,内部运行的费用则称“行政开支”。在政治委员会里,计划开支就是用于选举活动的费用:购买电视广告、印刷传单、数码广告的费用,购买民居广告牌的费用,或直接给候选人捐款。行政开支是诸如职员薪水、办公室文具用品或组织筹款活动的花费。行政开支与计划开支的比率是衡量一个非营利机构健康状况的指标。人们在决定捐款给哪个非营利机构时,会根据这个比率来考量这些机构是否具有良好的运营状况。
还有一类需要注意的异常情况是供应商网络。假设佚名女士正在竞选总统,普通民众张三想要为佚名女士的事业捐赠100万美元。记住,捐款不能直接交给候选人,而只能捐给佚名女士的授权竞选委员会——JDP。然而,张三也不能直接给JDP 100万美元,因为个人捐款的限额是2 700美元。但张三可以向一个super PAC——正义与民主政治行动委员会(JDPAC)捐赠这笔资金。这个PAC会按他们自己的方式花费这笔钱,以促成佚名女士当选总统。JDPAC支出这笔资金的方式,称为独立支出。这种独立支出政治行动委员会(就像super PAC)的特点就是super PAC不能与官方竞选委员会协商开支问题。因此,JDPAC也不允许与JDP协调其工作。
现在,我们假设佚名女士的竞选委员会JDP聘请了威奇托市一家平面设计公司来制作竞选广告。那么,JDP提交给FEC的开支报告中将会出现这家广告公司的名字——威奇托设计公司。我们再假设独立支出委员会JDPAC碰巧也聘请了同一家平面设计公司制作广告。那么,JDP提交给FEC的开支报告中也会出现这家公司的名字。要说这两个委员会之间没有协调过,是有可能的。也许这家平面设计公司内部有极强的保密政策:他们可能在内部做了避嫌,对员工进行培训,要求他们不进行任何沟通协调,他们也许能够独立应付两个客户。这是完全有可能的,也是合法而恰当的。而且,许多委员会都使用相同的供应商来完成普通的工作。比如,美国的薪资核算公司数量有限,大多数竞选办公室和外界团体都会使用安德普翰(ADP)的服务来处理薪资,这不是什么新闻。但是,要说供应商内部发生了沟通协调,也同样是可能的。因此,假如记者轻松地发现JDPAC和JDP聘请了威奇托市同一家平面设计公司,而这家公司碰巧由佚名女士的大学室友经营,那记者肯定会跟进,看其中是否存在非法协调行为。这就很可能会成为大新闻。
按惯例,我们要为软件项目起名,就像给宠物起名一样。有了名字,项目人员在交流时才能言之有物。我决定将这个项目命名为Bailiwick。根据韦氏字典,这个词有两个定义:“法警的职位或管辖范围”或“一个特殊的范围”。这两个定义看起来都挺合适,毕竟“法警”就是在法院帮法官维持法庭秩序的官员。在我的想象中,这个软件拟人化之后就像是20世纪80年代的电视节目《夜间法庭》(Night Court)中的高个秃头法警布尔或风趣法警罗兹。它将在人和数据之间来回传递文件,而且它将以中间人的身份提供半官方的功能。我也很喜欢“bailiwick”这个词,它读起来有点俏皮可爱。在我的世界里,只要能让竞选财务数据变得更有意思,我来者不拒。
而在更为实际的现实中,软件必须有名称,因为你得把它放入电脑上的某个目录里,这个目录必须有名称。最好在项目一开始就将名称定好,正如给初生婴儿起名一样重要。另一方面,假设你给宝宝起名为约瑟夫,两天后你改变主意了,想叫约西,于是你直接开始管他叫约西,还在他的T恤上印上“约西”。但是在计算机程序里,如果修改了根目录的名称,可能会给你的代码捅出大娄子。
Bailiwick,就这么定了。
接下来,我们就进入了开发阶段。我在这个项目中遇到的一些难题,是任何编码项目都可能面临的挑战。比如,我已经很长一段时间没有写过代码了,我决定雇人来帮忙。聘请开发人员和聘请律师没有什么不同,优秀的那些总是贵得离谱。而且,很难找到优秀的人员,因为他们都不做广告——他们不需要。这些人肯定有什么名录,但对普通人而言还是很难找得到。我在网上搜索“招聘Django开发者”,结果得到了一大堆垃圾,包括这样的广告:
Django开发工作 | Django开发者 | 自由职业
Django team是网络上最受欢迎的django自由职业网站。
Django team是Django开发者、工程师、程序员、编程者、架构师等的天堂
在网上找开发人员实在太难了。于是,我开始利用我的社交圈寻求推荐。专业服务在线招聘本应是科技与人方便的一个例子,但实际上,它甚至让事情更难办了。算法的顶层设计可以被操纵以获得利润,这样会干扰普通用户执行简单操作的能力,比如搜索开发人员。有一次,我尝试在网上找一个勤杂工来我家修理东西,也遇到了同样的问题。这样的事情时刻提醒我筛选的重要性。网络世界本应让每个人都能找到自己的答案,有时候人们要做一些简单的事情,却要花费很长时间。选择的悖论有时是一种负担。
十分遗憾,我发现自己的境况就像19世纪那些需要更多人类计算员的协助却一无所获的数学家。我想组建一个完全由女性和有色人种组成的团队。我研究了我的各个社交圈,发现这比我预想的要困难得多。我和一个自己创业的黑人女性开发者谈过,我付不起她的薪水。我甚至买不起我朋友的软件公司跳楼价的服务。最后,我雇用了一名女性和三名男性,整个项目的男女比例是3∶2。对一个截止日期如此逼近的小团队来说,这也是没办法中的办法了。
在项目管理中,有一个公开的秘密——没有人知道如何评估软件项目的工期。部分原因是编写计算机代码更像是写文章,而不是制作东西。原始代码还没写出来,所以并没有什么好办法可以评估,要把它写出来需要花多长时间。尤其是假如项目要实现的功能是先前没有人实现过的,那就更不可能评估工期了。还有一个问题,写代码的是人,而不是机器。人们不擅长估算工作要花费的时间和精力,他们会去度假,会花一个下午在Facebook上闲逛而不干活。简而言之,他们是人,人就是这样。人是变量,而不是常量。
用简单易见的方式来表达复杂关系是很困难的。我与用户界面专家安德鲁·哈佛合作,他设计了一套页面,让记者能高效地组织和整理对他们有用的信息。州媒体的记者一般会关注本州与竞选相关的新闻。而国家媒体的记者则关注总统选举和关键州的选举。话说回来,系统会让你选择自己关注的竞选和州。这些信息在你登录后会显示在你的收藏夹列表中。图11.1显示了记者看到的她是否支持2016年美国总统候选人希拉里·克林顿、唐纳德·特朗普和伯尼·桑德斯。单击其中一个名字可以跳转到相应的候选人页面。每个候选人向FEC提交一系列财务报告。记者可以使用Bailiwick滚动浏览并阅读个人财务报告或财务报告汇总。
图11.1 为2016年美国总统候选人定制的Bailiwick闪屏
我们通常认为捐款情况表示民众的支持和反对情况。然而,竞选财务法规对捐款的分类是不同的。还记得候选人授权委员会筹款和独立支出委员会筹款吗?Bailiwick会解析这些报告,并将捐款分为支持团体和反对团体。这样能节省记者的时间和精力,他们也能轻松地浏览并查看相关的名字。
候选人的内部团体和外界团体形成了本页底部这张树状图的内容。解析数字非常难,但查看方块图则容易得多。这些方块的相对大小很重要,捐款者数量和捐款总额也同样重要。点击任何一个方块,就可以看到相关细节。如图,伟大美国政治行动委员会(Great America PAC)在就职典礼上的开支是独立支出委员会中最多的团体(见图11.2)。
点击这个方块,我们可以看到,这位捐赠者在支持特朗普的竞选上花费了1 270万美元,数十次独立转账交易贯穿了整个选举过程。
图11.2 支持特朗普的独立支出
系统还有可视化发现新闻视角的能力。比如,在我第一次看到特朗普竞选委员会支出模式的树状图时,我发现有一个相当大的方块表示专门用于帽子的开支(见图11.3)。截至2016年12月,这场竞选为购买一家名为Cali-Fame的公司生产的帽子一共花费了220万美元(见图11.4)。
图11.3 唐纳德·特朗普竞选委员会截至2017年12月的运营支出(按类别组织)。注意底部被标记为“Collateral: Hats”的矩形
2016年秋,我对Cali-Fame一无所知,但在我看来,这里面也许能挖掘出新闻。记者菲利普·邦普同意我的看法。2016年10月25日,他在《华盛顿邮报》上发表了报道《唐纳德·特朗普竞选委员会花在帽子上的钱比民调还多》。[3]不仅如此,特朗普的竞选团队还在T恤、马克杯、贴纸和运费上花费了1 430万美元。这笔支出都花在一家名为Ace Specialties LLC的公司。这家公司的主营业务是生产石油和天然气行业的工作服,老板克里斯托·马赫福兹是埃里克·特朗普基金会的董事会成员。[4]从这里挖掘下去,又是一个新闻。
图11.4 唐纳德·特朗普竞选委员会向Cali-Fame支付的款项中标有“帽子”一词,按日期和金额排列
安德鲁·谢瓦奇曼是旅游行业网站Skift的一名记者,他的视角跟我们不同。他用这个工具写了一篇报道《克林顿与特朗普:总统候选人的出行花费都用在了什么地方》。在报道中,他分析了特朗普如何给自己的公司TAG Air支付竞选资金进行竞选旅行。[5]这不是违法的,只是值得留意。这也是一个好机会,记者们可以谈论竞选财务中许多合法但可能不合适的事情。想要就这些话题发起公开对话,唯一的办法就是撰写新闻报道。讲述新闻故事是我们了解世界的方式。了解世界并不容易。我们需要进行公开对话——包容各种声音的对话,以便以民主的方式解决这些问题。
我们的Story Discovery Engine(新闻挖掘引擎)是人机闭环系统,而不是自治系统。两者的区别就像无人机和喷气飞行器的区别,这种区别要求不同的有效软件设计。如果你希望电脑做出神奇的事,你一定会失望。但如果你希望它帮你加快办事的速度,那就没问题。使用机器辅助在价值2.9万亿美元的美国对冲基金行业中越来越流行,该行业先前的主流做法一直是使用量化方法。都铎投资公司的负责人、亿万富翁保罗·都铎·琼斯2016年对他的对冲基金团队说过一句著名的话:“没有人能胜过一台机器,没有一台机器能胜过一个能操纵机器的人。”[6]
我们一般可以这样理解这个引擎工具的运行原理:它指出了事实是什么,以及事情本应是什么。在上面的例子中,“事情本应是什么”,即外部团体的行政开支应该不大于总开支的20%;“事实是什么”,即外部团体向FEC提交的财务报告文件指出的年度行政开支占比。如果存在异常——行政开支大于20%,就有机会挖掘到新闻。
注意,我说的是机会。并不是每次出现异常就能挖掘到新闻,因为任何一个选区都可以对出现大量行政开支给出充分的理由。如果这台机器指出某个组织有47%的可能性做了违法的事情,理由是这个月的行政开支比上个月高出2%,那就太荒谬了,而且可能会构成诽谤行为。我们不想制造这样的机器。
当我与计算机科学家交流时,他们常常会建议查看5个最高结果、5个最低结果以及数据集中的平均值。这种看数据的本能确实不错,但从新闻的角度看来,这样的结果常常不那么耐人寻味。假设我们提取了一个学区的雇员工资清单。5名薪资最高的员工可能是校监或者最高级别的主管,5名薪资最低的员工可能是没有加入工会的临时工。这没有新闻价值。对于那些没有深入了解过薪资水平的人来说,这可能会有点令人惊讶或略感兴趣。但这与具有新闻价值还是有点区别的。在新闻业中,我们的义务是提供准确而且能引起人们兴趣的信息。而计算机科学家可以在训练有素的小众圈子内(这始终令我羡慕)提供引起人们兴趣的信息。“兴趣”的门槛在各个领域是截然不同的。
如果我要查看那些具有大量行政开支的团体,我可能会先查看那些行政开支占比较大的团体。异常值就像树上低悬的果实,伸手可得。我会先看行政开支占比最高及最低的团体,看看能找到什么有意思的内容。
我对Story Discovery Engine做了一个重大修改。在我尝试解释原来的教科书引擎时,人们总是问我:“你是说,你造出了一台能够吐出新闻构思的机器?”我解释道,这不是一台能吐出新闻构思的机器,它更加微妙,跟自动化有关。我展开讲到自动化,大多数人的目光已经开始呆滞,听不下去了。于是,我决定尝试将Story Discovery Engine的第二个版本做成一个能吐出新闻构思的机器。图11.5是我设想的功能界面:
图11.5 新闻构思页面
我应该指出,新闻视角功能与其他功能不同,它是一个最小可行产品(minimum viable product,简称MVP)。它能运行,你能看到实际的结果——但仅限于一个案例,并非我们策划的所有案例都有效。这一点,我们在说明文档中讲得非常清楚。它运行正常,我有信心对外声称它是有用的。从开发人员的角度来看,这是一个已经被解决的问题。但是,一个软件有可能在并不真正有用的情况下正常运行。这不是一个非此即彼的情况。人不可能“有点怀孕”,但软件有可能“有点正常”。MVP的目的是正常运行并用以向人们展示,以此获得客户或下一轮开发资金。这不是优秀的设计,这种做法令人诟病,强行塞给用户一些拥有半正常功能的软件不是什么好事。但是,这已经成为惯例。我觉得我们可以做得更好。但大多数时候,人们会遇到一个问题,跟我在Bailiwick项目中遇到的问题一样:在完成新闻视角功能之前,我们耗尽了资金,也耗尽了开发时间。
下面,我再讲一个开发过程中非常典型的问题示例。如果这个问题没有被发现,可能会产生广泛的影响。有一天,我的代码抛出了一个错误消息,但我不理解。我决定创建一个新的数据库,并且从头加载我全部的350万条记录来测试代码。前10秒一切正常,然后出现了一个不同的错误。我修复了一些我认为是问题所在的代码,并再次尝试加载数据。但是,没有用。我又修改了另外一些我认为是问题所在的代码。情况却变得更糟。我回到原来的数据库,尝试重现那个错误,结果出现了一个完全不同的错误。我意识到我永远不可能修复原来的数据库,于是我永久切换到第二个数据库。我感觉很不安——团队的其他人正在使用原来的数据库,而我让它处于一种可用但损坏的状态,这让其他人无法继续编写代码。这只是一个普通的版本控制问题,但由于精确度在计算中的重要性,我所引起的错误可能会给其他人带来一系列令人泄气而又令人费解的错误。
这些问题在新闻编辑室对技术的应用中都可能成为障碍。通过小规模地排除障碍,我们可能发现如何排除大规模的障碍,也可能发现大规模努力导致失败的原因。我们还可以发现,编写代码不是那种可以在流水线作业中完成的工作。有些工作可以用工厂模式(流水线)完成,有些则要使用小批量生产模式。在工厂模式中,你可以查看所有工作流程,并决定哪些流程可以机械化,哪些流程是可重复的。在小批量生产模式中,你也可以做同样的事情——但有些流程仍要手工完成。不妨将计算新闻看作慢食运动。
到目前为止,这个工具的影响范围不大,但影响力很大。我不知道有多少记者使用这个工具来挖掘新闻,但我在上课时会定期使用它。我每学期大概有30名学生,这意味着这个工具一年至少能产生60个新闻报道。比起开发这个工具的成本,这个结果还不赖。如果在新闻编辑室定期使用这个工具,那么每一个用它写出来的报道就可以通过页面上的广告产生收入了。它不会让我们突然暴富,它带来的收入只是沧海一粟。这个工具不像工厂大批量生产流水线那样可以挣到大钱,它只是一个能创收的手工制作产品。
目前,我的竞选资金工具还没有产生任何收入。从财务角度看来,它不能可持续发展。Bailiwick作为教学工具,作为调查性项目的模型,作为计算机新闻应用研究(与“理论研究”相对)的范例,是具有价值的。令我相当懊恼的是,这种无形的价值对于维持Bailiwick服务器运行所需的每月1 000美元费用无济于事。这是技术界的另一个秘密:创新是要费钱的。如果我早知道这个项目会花费这么多钱,我可能会在开发过程中做出不同的选择——但由于在此之前没有人做过这种特殊的软件,我们根本无法预测费用。我在估算这个项目的运营费用方面存在盲点。这是一种在创建新技术时会出现的盲点——你必须有信心,相信自己能发明出你想要的东西,并且相信自己能解决财务问题。要打造一个工程,有时就是惊险地纵身一跃,投入未知世界。
[1] Broussard, “Artificial Intelligence for Investigative Reporting.”
[2] Mayer, Dark Money; Smith and Powell, Dark Money, Super PACs, and the 2012 Elec tion.
[3] Bump, “Donald Trump’s Campaign Has Spent More on Hats than on Polling.”
[4] Donn, “Eric Trump Foundation Flouts Charity Standards.”
[5] Sheivachman, “Clinton vs. Trump.”
[6] Fletcher and Zuckerman, “Hedge Funds Battle Losses.”