计算法学:作为一种新的法学研究方法
●邓矜婷 张建悦*
【内容摘要】 计算法学方法是一种新的法学研究方法。它是这样一个过程,即以研究或解决某一法学问题为任务,通过运用已有的计算机方法,在已有的计算机能力基础上培养或发展完成任务所需要的计算机能力,再通过这一能力完成任务,并通过任务完成的好坏检测和完善计算机能力。它需要融合计算和法学思维。对它独立性的学术认可是计算法学发展的基础。形成开源、去商业化的计算法学生态才能充分发挥计算法学的优势,使法学研究在计算机标准化司法实务的过程中发挥指导作用。运用计算法学方法处理海量判决书可以分为判决书获取、数据预处理、要素提取、要素输出和准确率检查等步骤。提取要素时,应将判决书信息分为三类要素,针对每类要素采用合适的算法予以提取。详细的程序代码已经开源在网络平台上,供后面的研究者使用和检测。
【关键词】 法学研究方法 计算法学 独立价值 基本思维 判决书处理
一、计算法学方法的提出
从20世纪80年代到21世纪初,中国法学研究经历了从“政法法学”到“诠释法学”,再发展到“社科法学”,并形成了三种流派并存的基本格局。这一观察由我国学者朱苏力提出,并被普遍接受。〔1〕 参见苏力:《也许正在发生——中国当代法学发展的一个概览》,《比较法研究》2001年第3期。 近些年来,更是出现了“社科法学”与“教义法学”相互争论、评价比较的局面。〔2〕 参见侯猛:《社科法学的传统与挑战》,《法商研究》2014年第5期;陈柏峰:《社科法学及其功用》,《法商研究》2014年第5期;张翔:《形式法治与法教义学》,《法学研究》,2012年第6期;孙海波:《论法教义学作为法学的核心——以法教义学与社科法学之争为主线》,《北大法律评论》2016年第1期。 然后,随着互联网向社会各方面的不断渗透,互联网技术的指数级发展,一类新型法学研究方法,即计算法学开始出现。2009年,15位学者在《科学》杂志上发表题为《计算社会科学》的文章正式提出了计算社会科学和社会计算的概念,指出在大数据时代要结合计算机使得社会研究智能化。〔3〕 See David Lazer,Alex(Sandy)Pentland,Lada Adamic,Sinan Aral,Albert Laszlo Barabasi,Devon Brewer,Nicholas Christakis,Noshir Contractor,James Fowler,Myron Gutmann,Tony Jebara,Gary King,Michael Macy,Deb Roy,and Marshall Van Alstyne, Life in the network:the coming age of computational social science, Science,2009 February, 323(5915):721-723. 受益于数据处理、存储能力的提高及判决文书的公开,近期我国的法学研究也建立在越来越大量的文书处理基础上。褚红丽、魏健在研究财产刑对贪污受贿罪量刑的影响时就分析了近两万份判决书;〔4〕 参见褚红丽、魏健:《刑期与财产双重约束下的腐败惩罚》,《社会科学战线》2018年第1 期。 白建军在研究量刑中的法官集体经验时利用计算机处理了十四万余件交通肇事罪判决书;〔5〕 参见白建军:《基于法官集体经验的量刑预测研究》,《法学研究》2016年第6期。 雷鑫洪在讨论中国法律实证研究的演进时运用BICOMB2.0软件智能化处理了四千余篇文献。〔6〕 参见雷鑫洪:《方法论演进视野下的中国法律实证研究》,《法学研究》2017年第4期。 最高院、最高检也相继公布了发展大数据在实务中的运用计划,有关智慧法院、智慧检务的研发、试点实验和推广落地都在不断地推进。〔7〕 更多信息参见左卫民:《如何通过人工智能实现类案类判》,《中国法律评论》2018年第2期。 法律教育界也是反响热烈,各大知名院校都争先恐后地成立了类似法律+科技的旨在培养计算法律人才的研究院所。〔8〕 北京大学、中国人民大学、清华大学、中国政法大学等几十所大学纷纷成立了法律+科技相关的实验室、研究所等。参见:http://www.xinhuanet.com/legal/2017-09/11/c_129701280.htm,http://www.raincent.com/content-10-11276-1.html,http://news.cupl.edu.cn/info/1011/26207.htm,2019年3月13日最后访问。
法学研究方法一般被认为有三种:价值判断、规范研究、实证研究。〔9〕 参见陈柏峰:《法律实证研究的兴起与分化》,《中国法学》2018年第3期。 计算法学目前的价值集中体现在让计算机自动提取、处理大量数据上;而三种法学研究方法中似乎唯有实证法学中的定量研究是需要描述、分析法律在实践中产生的大量数据来进行,所以部分学者认为计算法学是定量实证法学的一种新型研究方法。〔10〕 同上注,陈柏峰文;左卫民:《一场新的范式革命?——解读中国法律实证研究》,《清华法学》2017年第3期;白建军:《大数据对法学研究的些许影响》,《中外法学》2015年第1期。 不过这些学者对于定量实证法学能否独立于“社科法学”,或者“广义上的实证法学”,而自成一派还存在争议。〔11〕 左卫民认为,实证法学研究仅指定量实证法学研究,其独特性和重要性可以独立于社科法学研究之外而自成一派。陈柏峰则认为,实证法学研究也包括定性实证法学研究,与社科法学具有类似的含义。详见:同上注,左卫民文;同前注〔9〕,陈柏峰文。 其中也有些学者认为计算法学,或数量法学〔12〕 参见刘瑞复:《当代市场经济与数量法学》,《中外法学》1996年第4期。 或计量法学,〔13〕 参见屈茂辉、张杰:《计量法学本体问题研究》,《法学杂志》2010年第1期;屈茂辉、张杰、张彪:《论计量方法在法学研究中的应用》,《浙江社会科学》2009年第3期。 是以定量研究的方法(含计算机的方法)研究具有数量变化关系的法律现象。〔14〕 参见张妮、蒲亦非,《计算法学导论》,四川大学出版社2015年版,第21~24页。 另有部分学者则认为,计算法学代表着大数据时代数据科学在法学领域的运用,是计算社会科学中的一种,拥有独特的计算思维和研究手段。〔15〕 参见钱宁峰:《走向“计算法学”:大数据时代法学研究的选择》,《东南大学学报》(哲学社会科学版)2017年第2期。 本文讨论的计算法学,指的是将计算机科学运用于研究或解决法学问题的方法,所以区别于意指计量法学的计算法学。
事实上,计算法学方法的运用已经呈现出一些问题。比如,对海量文书是如何提取、处理的,没有交代,仅说明经过人工检测,达到统计精度要求,但具体如何检测,没有说明。〔16〕 同前注〔5〕,白建军文。 计算机检测错误的方法多种多样,不同的方法得到不同的结果。即使是运用现成的软件来处理,这些软件的底层代码也不是公开的,其结果的准确度也是不确定的。又如,有些文献研究类似的判决书,运用类似的模型但得到了相互矛盾的结果,使人怀疑底层数据提取的准确性,这些研究因为涉及大量数据的处理而极有可能是运用了智能提取的方法。〔17〕 王剑波、过勇和李松锋均是研究在裁判文书网上公开的2015年左右的受贿罪判决书,但在地区差异是否显著影响量刑时得到了矛盾的结果。详见王剑波:《我国受贿罪量刑地区差异问题实证研究》,《中国法学》2016年第4期;过勇、李松锋:《贪污受贿案件刑事量刑的实证研究》,《经济社会体制比较》2018年第1期。 而且,涉及大量数据处理的法学研究都没有对其底层程序进行开源,导致后来的类似研究无法重复利用,不能在已有的程序基础上进一步完善,也无法检测原程序。如此则浪费时间和资源,重复劳动。比如随着裁判文书的公开上网,很多学者都在对已公开的文书进行全样本提取、分析,这些工作有很多都是相同的,并且耗时耗力的,正如已有学者指出的,实证研究的成本是很高的。〔18〕 同前注〔6〕,雷鑫洪文。 这使得这类研究容易止于表面,各自为阵,难以深入和持续。〔19〕 同前注〔9〕,陈柏峰文。 计算机科学与生俱来的优势在于通过开源,能够让程序在不同的计算机上重复运行,使得后面的研究得以轻松地在前人的基础上向前进,也使得后人可以检测前人的程序,更好地实现优胜劣汰,促进知识成果之间的竞争。本文旨在通过对独特性的讨论,加深对作为研究方法的计算法学的理解,尝试提出该方法在处理大量判决书时的一些通用方法、基本步骤和要求,希望能促进此类研究的规范化,提倡程序代码的开源,提高对已有研究的检测和再利用。
二、计算法学方法的独特性及其可能产生的价值
计算法学方法之所以能称为一种新的法学研究方法,而不仅是定量法学研究方法中的一种处理数据的方法,一方面是因为从计算社会科学延伸而来的计算法学具有独立的研究对象、研究方法和研究领域,另一方面是计算法学方法具有迥异于其他法学研究方法的运用计算机处理海量数据的显著特点。正因如此,计算法学方法除了能够获取、处理海量判决书外,还可以在非定量法学研究问题中发挥作用。
村级防御预案主要内容包括明确、落实村级防御组织机构人员及职责,预警和转移安置的程序及方式,确定具体的转移路线及方式,安排日常的宣传和群测群防工作等。
(一)计算法学具有独立的研究对象、研究方法和研究领域
计算法学从计算社会科学延伸而来。而计算社会科学并不仅指一种新的研究方法。正如导言中提及的2009年在《科学》杂志上发表的那篇文章所述,它是指现代计算技术与社会科学之间的一门交叉学科,与通过调查问卷或抽取小样本进行分析的传统社会科学不同,是由现代网络生活催生的,能够通过各种新技术获取长时间的、持续的、大量人群的行为和互动数据,从而为研究动态的大型的网络社会演化等问题提供坚实的基础。〔20〕 参见张鉴、孔丽华:《〈Science〉杂志发表关于计算社会科学的文章:Computational Social Science》,《科研信息化技术与应用》2010年第2期。 它因为具有独立的研究对象、研究方法、研究领域和目的而得以成为一个新的学科。其实在自然科学、经济学、社会学等领域已先后出现了计算物理学、计算经济学、计算社会学等学科概念。〔21〕 同前注〔15〕,钱宁峰文。 与之相应的,计算法学也具有超过研究方法的更为广泛的含义。它具有新的研究领域,包括政法舆情分析、法治国情调查、法律数据库分析等;〔22〕 同上注。 具有新的研究对象,包括数据获取的正当途径、数据及数据库的权利属性、代码程序软件等的权利属性等;具有新的研究手段,包括各种计算机语言、不断涌现的计算方法和开源程序;具有新的研究思维,即让计算机智能化处理大量数据的计算思维。本文讨论的是计算法学的研究方法。广义上来讲,本文所指的计算法学方法和计算法学的研究方法是不同的。因为研究计算法学,特别是数据等权利属性,也会用到价值判断、规范研究和传统实证研究的方法。不过计算法学的研究方法中最主要、最具特点的方法还是本文所指的运用计算机科学智能化处理大量法律数据以解决法律问题的方法。也正是因为这种方法的能力,使得计算法学可以具有其他法学方法难以研究的新的研究对象和研究领域。
20世纪90年代,美国哈佛大学的教授根据服务性企业的数据,对利润与市场份额在企业中两者的关系进行研究。研究发现,在企业的利润中顾客的忠诚度是一个相当重要的重要因素。每争取一位新顾客所花成本是维系一位老顾客的5-10倍;而维系一位老顾客给予企业的价值是开发一个新顾客所无法给予的。在20世纪初意大利经济学家帕累托提出的二八营销法则也表明,80%的公司利润来自20%的重要客户,企业经营利润的最大来源是占企业顾客群体中20%的忠诚顾客的重复购买[2]。这些数据表明了忠实顾客对于企业的重要性,及提高顾客忠诚度的必要性。
(二)计算法学方法的独特性
计算法学方法与其他法学研究方法有两点显著不同。一是,它能处理大量的数据。这里的大量既指超过人类手工能够处理的数量,比如十几万、几十万甚至几百万份判决书,也指能够高效地处理手工可以处理的数量,比如用一台普通电脑在一两周的时间内处理几千份文书。而事实上对于同类的文书,处理的时间主要花在编写和调试程序上,所以处理少量和多量的判决书所花的时间相差不多,计算法学方法因而更倾向于处理大量的数据,所以往往会对全样本进行分析,而不再受限于随机抽样的要求。〔23〕 同前注〔10〕,白建军文。 诸如“截止到某日之前的所有在裁判文书网上公开的某一类罪名的判决书”就成为运用计算法学方法的文章的常用表述。〔24〕 同前注〔4-6〕所列诸文。 而且这里的“处理”不仅指让计算机从法律文书中提取数据,还包括获取、打开、清洗/格式化、输出、存储、检索、更新大量文书,以及对所提取的信息进一步批量处理等一系列的操作。二是,它对数据的处理主要是通过计算机而非人类来完成的,所以它需要项目人具有能够与计算机沟通的能力,能够理解计算机运行的情况,并将对大量文书的处理要求转化成计算机可以理解和执行的命令。这要求项目人掌握一门高级计算机语言和理解计算机的运行思维。高级计算机语言,并不是复杂、难懂的语言,而是指与人类语言最为接近的计算机语言;它便于人类掌握,从而与计算机沟通。常见的有python, java等。〔25〕 详见嵩天,《Python语言程序设计》慕课课程,教学课件PPT1.1第19页;关于Python的介绍详见:https://docs.python.org/3/tutorial/index.html,2019年3月13日最后访问。关于Java的介绍详见:https://www.runoob.com/java/java-intro.html,2019年3月13日最后访问。 人类可以通过这类语言编写程序,进而被编译器转换成汇编语言,再由计算机来执行。所以法律人掌握这类高级语言是很容易的,它有远比中文、英语等人类语言更为简单的语法层次和结构,需要记忆的内容也非常少。〔26〕 像常用的高级计算机语言Python就只有33个保留字是需要记忆其具体含义的。 掌握语言之后还需要能够将法律研究问题形式化为可以被计算的问题,或者由计算机进行演算的过程,就像在法律实证研究中都需要把抽象的理论问题转化为可以被验证的具体的假设一样,只是计算法学方法中要求转化过来的是计算机能够演算的以计算机语言表达出来的问题和操作步骤。掌握这些能力是在计算法学应运而生后对法律人的基本要求,不应再被当作是非法律的技术问题而拒之千里。〔27〕 同前注〔15〕,钱宁峰文。
(三)计算法学方法可以在定量法学研究之外的领域产生价值
计算法学方法在本质上是将一个法律研究问题的一部分或全部形式化为可以计算的问题,或者由计算机演算的过程;它往往是抽象、模拟人们思考和解决这一法律问题时的过程,再由计算机执行这一过程予以解答。所以虽然计算法学方法因其主要用于处理大量法律数据而与定量实证法学研究联系颇紧,但若因此而认为计算法学方法是传统定量研究方法的分支,并将其局限于传统定量研究的领域则未免狭隘了。比如,以规范研究为主的教义法学素来强调法律概念、形式法治、法律体系的自洽,排斥以非法律因素为由对法律规范的随意解读。但是由于语言天然的模糊性、可解释性、语义的变迁等特点,要实现同一时期人数众多的社会群体对法律规范的统一理解是非常困难的,更别说是不同代人的理解了。其实就是要让同一个法学家完成我国当今所有法律,或者某一部门法律的所有法条的全部梳理,建立起法律体系,确定每个法条在其中的坐标与其他法条之间的联系,消除矛盾和歧义,并能保持更新,都是过于理想化了。但是计算机在完成这类工程里却有先天优势,因为计算机有巨大的存储空间,知识可以不断累加,不受记忆的限制,可以完美地传递和更新知识。而且计算机运行要求百分之百的准确,不允许有歧义和矛盾,对体系和结构的要求更是不容有错,否则就无法运行。所以虽然暂时计算机还未用于规范研究,但可以预见随着法律人更为深刻地理解计算法学方法,这类方法被用于规范研究是完全可能的。另外,目前政法实务界正在如火如荼进行的运用算法建立定罪量刑模型〔28〕 亦有法律学者开始关注如何建立这些模型。参见同前注〔5〕,白建军文;同前注〔14〕,张妮、蒲亦非书,第2、3章。 其实也是运用计算法学方法来研究和确定法律规范或概念的可解释边界。
Mu:My duty is to collect the debts(讨债).I always take two treasure things with me:An incense stick(香烛)and a gun.If I see the master,I will burn an incense stick.If I see tenant farmers,I will shoot whatever I want.Tonight I will do a very important thing for my master.Is Lao Yang here?
(四)计算法学方法在定量法学研究中的价值
具体到定量法学实证研究中,计算法学方法的作用可以细分为三大类。一是自动获取大量判决文书。虽然自最高院积极推行法院判决文书上网以来,越来越多的判决书公布在中国裁判文书网上,也进而被openlaw、无讼、北大法宝等第三方平台收录和转载,但是若要手动从网上下载则费时无效。每篇文书下载的过程都是重复的,所以可以通过代码让计算机自动重复这一过程,完成大量文书的下载。
二是自动提取文书信息。这是将定量研究中对文书进行编码的过程由人力转变为计算机完成。计算机能够提取的信息按其完成的难度和准确度可以分为三类。第一类是在相对固定位置有相对固定表述的信息,比如案件名称、当事人及代理人信息、法院/公诉人信息、审判时间/地点、审判人员等。这些信息出现的位置一般在判决书标题、开头或结尾,表述都有特定的词汇,虽然偶有变化,但是可以通过少量列举的方法让计算机辨别。第二类是位置不太固定、表述较多变化的信息,比如受贿罪判决书处理中的受贿次数、受贿金额、行贿人数等信息。这些信息有的出现在总结句中,有的散落在整个文书中需要计算;信息的表述多种多样,跨度很大。以受贿金额为例,可以有多种货币,还可能包括多类财物。所以难以用简单的列举让计算机通过搜索文书来完成,需要抽象人在阅读文书时获取这些信息的思考过程来让计算机模拟进而不断重复,遍历所有文书予以提取。第三类是不能直接提取、需要通过构建可提取的要素的算法或组合才能获得的信息,比如受贿人的职级、是否积极为他人谋利、法官对证据确实充分的内心确信程度、嫌疑人的社会危险性等。这些信息不会直接在文书中载明;有些本身就足以成为一个法学研究子命题。这些信息需要转换成若干可从文书中直接提取的信息(本文称之为“要素”)的某种组合或者算法来由计算机获得。〔29〕 本文将可以从文书中直接提取的构成某一更为抽象信息的信息称为要素,将抽象信息具象化为要素的具体算法的过程称为要素化过程。这也是目前智慧司法开发软件的几大公司通用的说法。比如元典、法信、国双等公司在分析判决文书、构建人工智能定罪量刑/类案推送模型时都是通过要素化过程将一些比较抽象的情节转换成可直接提取的要素来进行的。这些信息是由笔者在2018年4月到5月期间于北京、上海、浙江等地在上述公司和运用这些公司研发的智慧司法软件的法院、检察院进行调研时获得的。 这一转换需要有法学理论的支持和引导,亦是模拟符合条件的法律人思考该法律问题的过程来得到。〔30〕 笔者曾在调研北京某区级法院的某套司法辅助断案软件,并访谈该软件开发的负责人员时了解到这样一个例子,可以较好地说明这一过程。该例子中要提取的是既有判决中法官们是如何确定肖像权损害的赔偿数额这一信息。为了提取这一信息,首先需要根据法条梳理和访谈多个法官确定法官们一般会遵守的思考这一问题的过程,将它要素化为若干可直接提取的要素的算法,比如被侵权人的身份、被侵犯的照片的性质、有多少人看过侵权的照片等,以及这些信息的影响权重。再通过对既有判决中这些要素的提取和分析,来增删要素、检验和修改它们的影响权重,最终得到合适的算法,并通过计算机从大量既有判决中提取这一信息。该调研由笔者在2018年4月中旬于北京某信息学院完成。 与定量研究中将抽象理论形式化为可操作、可验证的具体假设类似,这里则是将这些更为抽象的信息转化为可直接提取的要素的组合或算法。
三是自动更新文书、提取的信息和用以提取抽象信息的算法。大数据时代数据的特点之一就是实时、持续更新;裁判文书网上的判决书也每天在增加。虽然法学研究都是针对截止某日期之前的固定的样本库,但是如果计算机能够自动更新已有样本库,增加新公布的判决书,并及时自动从中提取信息,那么过一段时间后研究新公布判决书与旧样本库之间的变化就变得非常轻松了。另外,机器学习的方法还使得计算机能够根据新判决书的信息自动或者提示项目人更新对抽象信息进行提取的算法,包括发现新的要素和修改已有要素的影响权重。
三、计算法学方法的基本思维
前文已经解释了计算法学方法的含义。不过,一种新的研究方法应当具有独特的不同于其他研究方法的基本思维。那么,计算法学方法的基本思维是怎样独特的呢?本文认为,计算法学方法体现了计算思维和法学思维的融合,而不是简单地拼接。计算法学思维具有独立的复杂性和学术价值,一般有四个基本步骤:将法学问题形式化为可计算的问题,选择合适的计算方法,设计需要的计算机功能,以及编写程序实现设计的功能。
(一)计算思维是区别于逻辑思维和实证思维的第三种思维模式
with open(‘C:\paper.txt’, ‘r’, encoding=‘utf-8’)as f:
(二)计算法学思维是计算思维和法学思维的融合,具有四个基本步骤
根据上文所述,由于计算法学思维是计算思维在法学问题中的体现,所以本文认为计算法学思维是这样一种思维,它以研究或解决某一法学问题为任务,通过运用已有的计算机方法,在已有的计算机能力基础上培养或发展完成任务所需要的计算机能力,再通过这一能力完成任务,并通过任务完成的好坏检测和完善计算机能力。它是计算机科学与法学思维的结合。它要求法律人在解析法学研究问题时能够意识到怎样的法学问题有可能并且适合通过计算机实现,设想出将问题分解为计算机可实现问题的路径,并能进一步了解实现需要的方法和条件是否存在,以及掌握建立条件、运用方法让计算机实现研究的能力。它的基本步骤可以分为四步。
第一步,将法学问题形式化为可计算问题。什么是可计算的问题至今没有统一确定的答案。不过,第(一)点讨论的当前计算机具有的四种能力在法学问题中皆有用武之地。首先是常见的检索能力,即在大量法律文书中自动检索需要的信息。这种能力也是目前计算机发展得最丰富的一种,包括有条件和无条件检索、有启发和盲目检索、单个和群检索等,〔34〕 同前注〔31〕,王文敏课件,PPT 第 3、4章。 可以用来处理不同数量、属性、状态和结构的数据,提取所需要的信息,以及分析直接提取的信息以发掘出隐蔽的信息。判决书只是一种法律文书,还有比判决书更大量、更动态、更交互的法律数据,比如政法舆情、法治国情等领域研究的数据,〔35〕 同前注〔15〕,钱宁峰文。 需要有更高级、复杂、丰富的检索方法才能更有效地完成相关研究的任务。然后是与规范法学研究思维最接近的计算机推理能力。这种能力是建立在计算机知识库工程建设的基础上。通过计算机逻辑语言将知识表示出来,形成知识图谱,让计算机能够掌握,再通过以计算机逻辑模型表达的规则,让计算机知道如何检索、关联、运用和更新这些知识。这其实就是前一部分所说的要素化过程:要素就是知识,基于要素的算法就是规则。这正是目前智慧司法及类案智能推送软件开发的基本思路,即先建立法律知识图谱,然后让计算机根据图谱对判决文书进行要素化,再根据规则分析提取的要素,从而判断法律争议点,是否为类案,以及如何判罚。〔36〕 同前注〔7〕,左卫民文。 计算机规划的能力在法学研究中的运用尚不明显,但是计算机学习的能力已经得到了很多法学学者的关注,这种能力多被称为机器学习。〔37〕 参见左卫民:《关于法律人工智能在中国运用前景的若干思考》,《清华法学》2018年第2期;王利民:《人工智能时代对民法学的新挑战》,《东方法学》2018年第3期。 机器学习是指机器从数据或数据的计算中积累经验获取技能。〔38〕 同前注〔31〕,王文敏课件,PPT9-1第14页。 被普遍认为是这样一种能力,即:一个针对某类任务T 和性能度量P 的计算机程序,如果它在完成T 任务中的性能,如P 度量所示,随经验E 而改善的话,它就被认为具有从经验E 中学习的能力。〔39〕 Tom Mitchell, Machine Learning, published by McGraw-Hill Education; 1 edition(March 1, 1997), Introduction. 机器学习目前的运用场景主要是分类、回归分析、聚类、对数据降维等。〔40〕 同前注〔31〕,王文敏课件,PPT第10章。 这些场景里都有各种各样的法律问题。比如确定某一法律概念的内涵和外延、将某一法律现象归类等就属于分类和集合的场景。又如前一部分所述,机器学习既可以用来让计算机掌握知识图谱,又可以让其自动提示或直接更新已有的要素或算法。
在上覆坝体压力及廊道自身重力作用下,廊道出现竖直向下的挠曲变形,在防渗墙的带动下发生向下游挠曲变形。两种变形组合后在廊道轴线方向产生较大的拉压应力,廊道两端上游受拉,下游受压,河床中部上游面受压、下游面受拉。因坝基岩体的约束,基岩面处出现了明显的应力集中现象,左右岸1/4跨位置上游面压应力较大,下游面拉应力较大。表1列出了静力条件下廊道沿各方向的变形和正应力极值。
换言之,这些法学问题都可能转化为可计算的问题,让计算机能够派上用场,所以不要认为只有定量法学研究问题才是可计算的问题。目前学界认为,可计算问题的核心特点是其表述明确无歧义,其解决过程自洽无矛盾。〔41〕 Joshua Kroll, et.al., Accountable Algorithms, 165 U.Penn L.R.633(2017), pp.695~696; Cary Coglianese & David Lehr,Regulating by Robot: Administrative Decision Making in the Machine-Learning Era, 105 Geo.L.J.1147(2017), p.105. 比如,要让计算机编码判决书,则要明确要提取的具体情节,对于可以直接提取的情节,则明确给出要提取的字段或表述;对于不能直接提取的,则明确给出具体的要素和算法。又如,要通过判决书研究法官理解的受贿罪保护的法益是公权力的不可收买性还是廉洁性〔42〕 由于学界关于受贿罪保护的法益到底是公权力的不可收买性还是廉洁性存在争议,所以这一研究是有现实意义的。参见张明楷:《受贿犯罪的保护法益》,《法学研究》2018年第1期;黎宏:《受贿犯罪保护法益与刑法第388 条的解释》,《法学研究》2017年第1 期。 ,则要明确不可收买性和廉洁性的具体含义和不同,表现为可计算的问题则是二者对应的案件集的不相交元素的集合,再对判决书的案情和结果做归类处理。将法学问题转变为可计算问题的难点在于法学问题往往是不明确、存在变化、可能出现矛盾的。特别是法学理论问题,法律人对其的理解也是局限的、不充分的。所以在转换时需要采取假设—检验或者观察—归纳的方法,这两种也是通用的计算机推理方法。或者在面对茫然无知、变化多端的情形时,可以采取盲目检索或机器学习的方法让计算机自行发现一些特点,启发法学问题的形式化。
第二步,选择合适的计算方法。经过半个多世纪的发展,目前存在着丰富多样的计算方法。同一问题通过计算机实现的路径也有很多。应当根据任务的性质、所需数据和可获取数据的特点、任务完成好坏的检测指标选择合适的方法或方法的组合。比如对于像判决书这类较规范文书信息的提取运用正则表达式进行简单、直接的检索可以比使用如自然语言处理等更复杂高级的技术更加有效和准确。〔43〕 详见本文第四部分。 但是对于涉及法律概念的理解等对语义要求更高的问题则需要借助更加复杂的语言处理技术。对于像舆情实时分析等数据海量、及时更新的情形则需要运用大数据的处理方法。方法的选择是一个不断尝试、检测、更新的过程。方法中具体算法的选择和优胜劣汰更是一个需要群体性力量有效叠加的过程。这也要求并且促使计算法学思维比其他法学思维更加开放、更加广阔、更加需要群体力量。
第三步,设计需要的计算机功能。以造房子为例,形式化问题、选择好方法后只能说是确定了房子的基本框架,获得了可用于造房子的工具和原材料,但是房子具体怎么建起来、每一层/每个房间的具体构造、层间的联结等则是第三步的工作。比如:在确定需要计算机直接提取的字段后,就要对判决文书分词;在确定运用第三方开发的jieba中文分词模块来对文书进行分词后,〔44〕 关于jieba中文分词模块的介绍详见:https://github.com/fxsjy/jieba,2019年3月13日最后访问。 则要在该模块基础上进一步编写提取指定字段的具体功能(function),包括如何确定字段在文书中出现的位置、如何确定是要提取的字段而非同字异义的情况等。只有设计好具体的功能,给定这些具体的条件,才能实现对被选择的方法的运用。设计功能是将问题与方法相连的过程。通过方法,构造出具体的功能,一步一步地将问题的求解路径明确出来。
1.3.1 基线调查 本研究采用回顾性队列研究的方法,研究资料均来自同一体检中心,按体检类别整群抽取2006—2007年厅级干部体检资料作为基线资料。之后,在基线资料的基础上,进行10年回顾性队列研究,随访资料于2016年采集获得。
为分析不同概念词与属性词下各反应时指标和敏感性指标之间的关系,进一步对数据进行了配对样本t检验,结果见表6.
第四步,编写程序,实现设计的功能。程序是功能在计算机中具体实现的形式。设计好的功能需要通过程序,给定参数,予以调用,确定调用的先后顺序和条件,让计算机具体执行。实现功能的过程是非常烦琐、细致的,不仅是对功能的具体调用,还需要做好至少三方面的工作。一是系统环境、编程环境、方法的调试。一套用高级计算机语言编写好的功能放在某个特定的操作系统、编译环境中需要与这个环境衔接好才能顺利被该计算机理解和执行。同样的,第三方研发的方法和模块也需要与编程环境衔接好后才能被顺利调用。二是清洗输入数据,设定输出数据的格式。程序化的功能如同造好的机器,输入的数据就像原材料,输出数据则是原材料经过机器运转加工后得到的产品。就像不合格的原材料无法让机器正常运转一样,不符合程序要求的数据,包括格式、属性、结构等,是无法被计算机正常打开和读取的。程序还要告诉计算机如何处理新增数据,以实现数据更新。功能运转后得到的结果是否要输出、输出的形式、存储的路径等也要在程序中设置清楚,以便人工查找和阅读。三是设定错误检测和处理。由于计算机要求百分之百的准确和自洽,所以极易因为难以预见的问题或瑕疵而无法运转。错误检测可以将错误的信息捕捉并反馈给项目人,以便有针对性地修改程序,提高效率。
(三)计算法学思维不是计算思维和法学思维的简单拼接,具有独立的复杂性和学术价值
虽然计算法学思维有上述特性,但是它目前还没有被认为是独立于其他法学研究方法之外的思维。虽然法学界对计算机科学技术,特别是机器学习表现出浓厚的兴趣,但是这种兴趣还停留在实践摸索和高谈阔论的阶段。在严肃的学术讨论中,计算法学方法仍被认为是定量法学研究方法中编码文书的一种方法。因其只关乎数据处理,或因其涉及具体的代码编程,而不被认为是一种独立的法学方法。涉及计算机运用的法学研究的思维被认为是将计算思维和法学思维简单地拼接,由法律人提出问题,由计算机专业人员负责编写代码、让计算机执行,返回数据,再由法律人分析数据完成研究。这几部分被认为是相互独立,可以分离的。这种观点进一步认为,法律人只需要具有以往的法学思维即可,涉及计算机的部分只需通过跨学科合作研究、聘请第三方专业公司、组织计算机专业学生等来完成即可,从而否定计算法学思维的独立性,否定针对算法设计、计算机功能选择以处理基础的法律问题的研究独立的学术价值。结合前文的定义和解释,这种认识显然是不对的。原因如下:
首先,在法律人与计算机专业人员的合作研究中,各自负责的部分之间不是独立分离的,而是互相融合的。不具有计算思维的人难以意识到怎样的法学问题是可计算的问题,而没有法学思维的人根本就提不出有法学研究意义的问题。如此,计算机在法学研究中的运用就只能靠偶然的机会来产生,只能局限在狭窄、表面的领域。即使在有限的运用中,不懂计算思维的法律人无法检测功能设计、程序编写的正确性和合理性,无法判断数据的可靠性,只能被动地接受返回的数据,再进行人工检测。但对于海量的数据,即使抽取百分之一的样本量进行检测,也是人力难以完成的。而没有法学思维的人在设计功能时难以正确理解法学问题的丰富内涵,在具体化的过程中很容易出现偏差、存在偏见而不自知。这些都进一步限制了计算科学在法学中的运用。
然后,由于法学、计算机科学是两个都很复杂、有各自话语体系、相差甚远的学科,让法学学者再去掌握计算机技术实在艰难,所以当下提倡跨学科合作研究,希望由此来解决这一困难。但是由于计算法学思维的独立性并没有得到法学界或计算机科学界的认可,相关的交叉学科尚未真正建立,所以涉及计算机运用的法学文章要么因为涉及具体的功能设计和程序编写而被认为不属于法学问题,要么因为研究的问题法学价值不高而被拒绝。毕竟,在发展初期,能够运用计算机完成的法学研究还是比较简单的;这类文章的价值更多是体现在该研究是通过计算机完成的,而不在于其解决了怎样的法学问题;但这一价值目前不被学界认可。同理可得,这类合作研究的成果也不被计算机科学界认可。所以此类合作研究的困境在于其成果往往具有实践意义,但却不被认为具有学术价值,因为认可这类学术价值的学科和学术圈尚未形成。
通常思维主要分为分析性思维、创造性思维和实用性思维3种类型.思维教学的目的是提高思维能力,自1980年以来思维教学日益受到重视,教育理论研究者们主要围绕思维教学的原则、目标和方法与策略等问题开展了一系列研究[1].创新型人才是具有较好的思维能力和较深创造潜能的智慧人才,思维能力的培养一直是学校教育强调的教学目标,高等教育在学校教育中起着不可替代的重要作用.因此,高等教育阶段是培养具有高质量、高效率思维能力的创新型人才的重要阶段[2].
再者,实践先行,理论单薄。虽然理论文章难以发表,但是不影响此类合作项目的日益增多。正如导言所述,根据大数据、人工智能的国家战略部署,政法实务界对智慧司法、检务的热情高涨,相关程序的开发在政法部门的领导下由大数据企业具体负责;一些已经开发好的程序都已经在某省或某市范围内开始运行。但是由于严谨的学术讨论、体系的理论研究的缺位,这些程序到底情况如何,功能设计是否合理,可能存在的问题等都没有得到充分的讨论,更缺少形成共识的平台。由于这些程序是商业化开发的结果,所以更不可能开源和接受检测,也不利于之后的再开发和再利用。这些程序,比如正在研发的定罪量刑模型,既应符合规范法学研究中对法条的解释,又应满足实证法学研究中对模型合理性的要求。如果在研发过程中能够经过严谨的学术讨论,得到理论上的指导,则能形成更加成熟、稳定的模型,也能减少研发过程中的弯路。而这些都要求学界能够认可计算法学研究的独立价值,促进计算法学思维的发展,产生指导计算机在法学中运用的理论成果。
最后,计算法学思维独立性的学术认可对于计算法学良性生态的形成至关重要。计算生态其实早已形成,即世界各地的程序员都可以自由选择某一合适的操作系统或编程环境,在其上进一步开发自己设想的更高级的程序,后人又能在其开发的程序上向前进;已有的程序在被后人的使用过程中得到检测、完善或淘汰,实现程序的优胜劣汰和快速更迭。由于计算法学尚未形成有生力量,其生态自然难以形成。另外,由于计算法学研究主要以商业化的形态存在,所以成果都是商业产品,很难开源。而开源是前述计算生态得以形成的基础,所以如果放任计算法学研究继续以商业化形态存在,则前述的良性生态将不可能形成。必须承认计算法学思维的独立价值,形成能够认可计算法学研究独立学术价值的学术圈,才能促使这些研究学术化,相关研究成果才能以学术文章的形式公布,程序代码才可能被学者公开,进而推动企业开源,如此才能更好地促进计算法学研究的有效叠加和良性竞争。
四、计算法学方法在司法实践中的具体运用——对海量判决书的处理
既然计算法学方法具有独特的基本思维,其独立性得到认可具有重要意义,那么那些讨论如何培养计算机能力以解决某一或某类法学问题的文章就不应因其关注具体的算法设计或技术实现而被认为是没有价值的。相反,应当提倡此类文章具体地讨论这些问题,提出解决某一或某类法学问题的通用模块和算法。学界其实已有学者开始讨论具体的计算模型。〔45〕 同前注〔5〕,白建军文;同前注〔14〕,张妮、蒲亦非书,第 2 章。 只有通过学术性的公开、具体的讨论,才能让后人在前人研究的基础上继续开发计算机能力解决更复杂的法学问题。本文也向着这一方向努力,所以在本部分进行具体的讨论。目前计算法学尚在发展初期,万事开头难,能够实现计算机在一些直观、简单的法学问题中的运用已不容易,而且底层数据的计算化处理对于后续更深入的研究具有打基础的意义,应当尽可能地进行充分、严肃的学术推敲和讨论。因而本部分就当前计算法学的主要运用场景——智能处理判决书展开详细地讨论,并以两万余份受贿罪判决书的处理为例,提出一些具体的功能、模型设计和通用的方法、程序编写,以便后续研究使用、检测和批评。不论是处理哪类案由的判决书,运用计算机处理都包括五个步骤。下文对各个步骤如何进行、需要注意的问题,以及具体情形的处理方法展开讨论。
(一)判决书的获取
众所周知,中国裁判文书网是全国各地法院在互联网公开裁判文书的唯一官方途径,因此,中国裁判文书网理论上是首选的数据源。此外,互联网上还存在一些司法案例搜索引擎,例如北大法宝、威科先行、无诉案例等,它们通常能够提供更大下载量的批量下载功能,但是为了避免在短时间内被大量下载致使“脱库”〔46〕 “脱库”是信息安全行业对信息系统数据遭受非法泄露的一种通俗称呼。互联网上的各种数据都是公开的,但不意味着数据所有者(或者说“控制者”)希望或允许任意用户在任意时间获取任意规模、任意形式的数据,特别是具有商业价值的数据。 ,一般都会限制对单日最大下载量和单次下载的时间间隔,这对学术研究而言无疑提高了获取数据的人力和时间成本。如果研究所需的判决书数量达到数万级别甚至更多,这种手工采集的方式可以说根本不可能完成任务。
评价获取判决书的手段有三个维度:一是获取数据的完整性,即通过该种手段所能获取的判决书数量应当尽可能达到可被互联网检索的全部判决书的数量;二是获取数据的效率,即获取一份判决书的人力、时间成本应当尽可能低,直至可以顺利地采集超大数量的判决书;三是获取手段可重复,任何研究者都可以通过该手段获得相同的数据,从而使相关的实证研究可被验证。本文采用一种使用电脑程序自动、高效获取判决书的手段,这种被称为“爬虫”〔47〕 爬虫的发生机制和互联网应用层的超文本传输协议(HTTP协议)密切相关,更多信息可参阅[美]Clinton Wong: HTTP Pocket Reference, 2000。 的数据采集技术已经在科技、金融、医疗等众多领域得到广泛运用。〔48〕 参见王悦:《基于数据挖掘算法的金融数据采集与分析研究》,硕士论文,天津大学,2016;卞伟玮、王永超、崔立真等:《基于网络爬虫技术的健康医疗大数据采集整理系统》,《山东大学学报(医学版)》2017年第6期。 简言之,爬虫是一道计算机程序,能够模仿和重复人类访问网站的行为(因此又被称为“Robot”)。通过爬虫访问提供判决书的网站能够快速、高效、低成本地获取判决书。
使用爬虫获取判决书的基本流程分为三步。第一步,确定一个提供判决书的网站作为爬取目标,了解其使用方法和一些技术参数,关键的参数如向网站请求判决书的真实URL地址、检索判决书时所提交的各项URL参数等则必须掌握,这些信息是编写爬虫的基础。比如,在威科先行法律信息库检索包含“受贿罪”关键词的裁判文书,浏览器上方显示的URL地址是http://law.wkinfo.com.cn/judgment-documents/list?q=受贿罪,而通过抓包软件分析可发现请求判决书的真实地址是http://law.wkinfo.com.cn/csi/filtertree/causeOfAction?searchId=03718c7cf25448e98ca4ed5e0e021f49,使用爬虫访问该地址才能正确获得判决书。
第二步,制定爬虫策略,编写爬虫程序:〔49〕 笔者在此提供一个自己编写的爬虫程序供参考:https://github.com/tsfnzjy120/paper_crawler,2019年3月13日最后访问,该爬虫曾在一周的时间内爬取了三千多万份裁判文书和二百多万份法律文件。 第一,对爬虫访问网站的速度应当予以控制,使爬虫速度不至于过快或过慢,速度过快会给目标网站的服务器造成较大压力,容易遭到封禁,速度过慢则无法顺利完成采集任务。第二,设计断点续传功能,〔50〕 断点续传是指计算机程序能够保存执行进度,每次执行时从上一次停止执行的地方继续执行。 提高程序的容错性。否则,爬虫在采集海量判决书时无法在短时间内迅速完成,运行过程中的一个轻微错误就可能导致当前采集进度全部丢失,只能重新采集。第三,选择适当的方式保存采集的数据。如果对存储效率要求较高可让程序直接写入磁盘,但更普遍的做法是存入数据库,〔51〕 此处“数据库”是一个专业术语,指数据库管理系统(DBMS),它是一个计算机软件,提供一个方便、有效、安全的数据存取环境。参见[美]Abraham etc:《数据库系统概念》(第六版),杨冬青等译,北京机械工业出版社2012年,第1页。 有利于数据的整理、备份和转移。
第三步,了解和规避目标网站的反爬虫措施。“反爬虫”是指网站采取技术保护措施,甄别访问其网站的爬虫程序并加以限制,以防自身数据被大量下载。比如,中国裁判文书网在搜索结果页下方的“公告”处声明:“任何商业网站不得建立本裁判文书库的镜像”,并设计了非常严厉的反爬虫机制作为技术保障。〔52〕 中国裁判文书网在HTTP请求中混入了vl5x、number、guid三个加密参数,并且在访问速度稍快时会弹出验证码。对用户所能访问的数据总量也有控制。 判决书具有一定的商业价值,而获取大量判决书究竟是出于商业目的还是研究目的仅从行为本身来看又不可能区分,因此,绝大多数网站都是不做区分地设置了严格的反爬虫措施;而且,公开程度越高的网站其反爬虫措施越严厉。对于非公开的付费网站,由于其访问用户已经受到一定限制,它们的反爬虫措施相对弱些。任何反爬虫措施的首要任务是区分访问其网站的正常用户和爬虫程序,因此,规避反爬虫措施的核心在于混淆或者绕开这种区分机制,尽可能将计算机程序伪装成人类用户。
爬虫不是对手工采集方式的彻底否定,大多数案由的判决书数量都较少,只有民间借贷、机动车交通事故等少数民事案件和盗窃、交通肇事等少数刑事案件的判决书数量规模在数十万份以上,基本不可能手工采集。对于低频案由,编写爬虫所带来的时间成本远高于手工方式,直接使用网站自带的“批量下载”功能也许更加方便。此外,手工采集的数据也可作为爬虫的补充。本文所采集的两万多份受贿罪一审判决书是通过爬虫程序采集。〔53〕 相关程序参见前注〔49〕。
(二)数据提取的基本步骤之准备工作:数据预处理
3.提取间接要素。提取前述两类要素提高了数据挖掘的广度,而提取间接要素实质上是对已提取要素的加工和延伸,决定了数据挖掘的深度。再加工的关键在于如何寻找和确认一种科学可信的算法,并通过该算法确定一个格式固定且具有研究价值的输出。这种算法大部分和人的某些判断逻辑相类似,但不局限于对人思维过程的模拟,也可能是数学计算、统计推论等,极其灵活且富有创造性。
第一,文件格式的统一。计算机程序自动处理判决书,首先要求判决书在计算机中的存储格式必须一致。人工下载的判决书基本是word格式,这种文件格式便于人类浏览和编辑,但不适合计算机程序访问和处理,因此,通常的做法是将word文件转换为txt文件,或者直接将判决书的内容存入数据库,等到使用时再从数据库中取出。统一文件格式时还需要处理文本的编码方式问题,〔54〕 文本编码方式是指将计算机底层二进制数据映射为各种字符(数字、字母、汉字等)的规则,使用错误的编码方式会导致二进制数据被解释为不正确的字符,即产生乱码。 使用正确的编码方式读取文件,并用统一的文件编码存储文件。本文在处理两万份受贿罪判决书时将全部文件统一为UTF-8编码的txt文件。
第二,文本内容的清洗。它包括三个方面的内容:首先,除去判决书中的商业标识。通常互联网上的各种案例搜索引擎都会将自身的商业标志、标语或者其他标识信息放入判决书,比如从威科先行法律信息库下载的判决书就带有公司的商标、名称和二维码。其次,除去一些不可见字符,比如\n(换行符)和\(r回车符),这些不可见字符虽然实际存在,但不会显示在电脑屏幕上,可能会影响数据提取的准确性。最后,标准化标点符号。由于录入的不规范,一份判决书内可能会大量混用中文标点和英文标点、半角标点和全角标点,引发计算机程序的断句困难。
第三,数据去重,即除去重复的判决书。即使是从同一网站采集的数据,也无法完全保证样本之间互不重复,需要程序专门处理判决书的重复问题。通常的做法是先提取判决书的案号,根据案号判断出重复的判决书并删除。
第四,筛选符合条件的判决书。虽然在检索和采集数据时已经采用一系列检索条件保障判决书符合标准,但大多数情况下仍然会混入一些“脏数据”。比如,虽然在检索判决书时已经通过“高级检索”功能将案由限制为受贿罪,但本文所采集受贿罪判决书中仍然混有大量的非国家工作人员受贿罪案件和判处其他罪名的案件。
第五,为每一份文书生成标识码。常用的编码方案有多种,本文建议采用的方案是根据全部样本的数量生成一套从0开始的序号,分配给每一份文书。这样可以使计算机程序依次有序读入判决书内容,同时提取要素出错时能够快速定位出错的判决书。
(三)提取要素的通用过程和方法
数据预处理后可以开始提取要素了。计算机处理文书一般有两条技术路线:第一是使用一种名为“正则表达式”〔55〕 详见[美]Jeffrey E•F•Friedl:《精通正则表达式》(第三版),余晟译,电子工业出版社 2007年版。 的字符匹配技术,编程人员首先大量阅读和归纳判决书中的常用表述,编写不同的“正则表达式”,可以直接定位判决书中的相关语句和提取有关要素。比如,判决的结果经常使用诸如“根据中华人民共和国……法……判决如下:……”这样的表述,通过正则表达式“根据中华人民共和国(.+?),判决如下:(.+?)。”〔56〕 这里的符号“.”表示任一字符,“?”表示尽可能少地匹配字符,“()”将它所括起的部分组合成一个新的整体。 可以定位这一语句,并提取出援引的法条和判决结果。正则表达式的含义丰富、功能强大,不仅能够直接定位语句和要素,而且可以对目标要素周围的语言表述情况展开检查,进一步确认该语句所表达的真实含义。比如,正则表达式在捕获“构成受贿罪”类似表述的同时,有能力检查它的周围是否存在“不”等否定意义的词汇,避免对语句真实意思的误解。另一条技术路线是近年来在计算机领域逐渐兴起的“自然语言处理”〔57〕 详见俞士汶等:《自然语言处理技术与语言深度计算》,《中国社会科学》2015年第3期。 技术,它是人工智能学科的一个分支,以让计算机完全理解人类语言的真实意图为最终目标。自然语言处理技术在判决书处理的运用,简单来说,就是根据中文词汇被使用的概率分布,并结合中文语言本身的构词构句规律,对判决书文本进行分词、句法分析、语义分析等技术处理,提取语言所表达的逻辑和意思。自然语言处理技术适合处理那些表述灵活的文本,这些文本在判决书中表现为对案件的事实描述和说理论证。不过,由于判决书的格式较为规范、表述相对固定,提取判决书中的要素更适合采用正则表达式路线;自然语言处理则更广泛地直接运用在罪名预测、刑期预测等方面。〔58〕 邓文超:《基于深度学习的司法智能研究》,哈尔滨工业大学2017年硕士学位论文。 本文处理判决书时采用了正则表达式路线。
基于正则表达式提取判决书要素的过程可以概括为读入判决书内容——按照文本结构分解文本——设定待提取要素——编写正则表达式提取要素——输出提取结果——准确度检查和程序改进。下文以Python编程语言对两万份受贿罪判决书的要素提取为例展开详细说明。
Python是一门入门简单、语法简洁,特别适合非计算机专业人员处理文本和分析数据的编程语言。Python可以通过下面的语句将判决书文本读入计算机:〔59〕 示例Python语句中的C:\paper.txt表示判决书的文件路径,r表示读取文件,utf-8表示文本编码方式。该语句将判决书的全部内容读入计算机,并用paper_content指代。
由于计算法学方法目前主要用于智能化编码大量法律文书,从中提取信息,所以很多时候计算法学方法体现的是一种搜索思维,即遍历所有文档检索项目人输入的词语,然后存储、计算和输出。如此直观和简单以至于难以称得上是一种思维。如此,计算法学方法似乎不算拥有自己独特的思维了。显然这种理解只停留在计算机发展初期。经过半个多世纪指数级的发展,计算机的计算能力即将在2020年达到一个成人大脑的水平。〔31〕 参见王文敏,《人工智能原理》慕课课程,教学课件PPTA-1-2第11页,转引自:http://waitbutwhy.com/,2019年3月13日最后访问。 计算机能够完成的任务、进行的思考和处理的问题的复杂度都足以将其与机械化机器区别开来,而被称为智能化的机器,又称人工智能。而通过充分利用和发展计算机的能力来解决问题的思维也被计算机科学界称为人类历史上区别于逻辑思维和实证思维的第三种思维模式,即计算思维。〔32〕 同前注〔25〕,嵩天课件,PPT1.1第32页。 这种思维目前可以细分为对计算机四种能力的开发和运用,即检索、推理、规划和学习的能力。〔33〕 同前注〔31〕,王文敏课件,PPTA-2-1第2页。 随着计算科学的不断发展,计算思维也会不断深化和扩展。本质上讲,计算思维就是一种通过发展和运用计算机能力来解决问题的思维,它需要将问题形式化为能被计算的问题,进而将其求解过程抽象出来,并由计算机模拟和执行予以解决。这里的“能被计算”并不是指数学或者统计学运算,而是指能被计算机运算。计算机科学的基础不仅有数学、统计学,还有逻辑学、哲学、心理学等。
paper_content = f.read()
判决书由法官撰写,遵循一个固定的写作范式,文本质量非常高。本文根据受贿罪判决书的写作特征,将判决书分成标题、诉讼程序、控辩理由、事实认定、审理意见、判决结果和审判人员七个部分,要素提取程序首先通过捕获对应部分开始和结束的标志,实现对文本的分割,而后根据分割的结果在各个部分展开要素提取任务。此时,每个要素提取逻辑的作用范围被限制在特定的文书区域,只要文本分割本身不存在较大误差,就可以有效提高要素提取的准确率(表1)。
表1 判决书分区
设定待提取要素和案件类型、研究需求有关,不同类型的案件和不同的研究需求衍生了各种各样不同的要素。有些要素如案号、法院名称、审理程序等是通用的要素,出现位置比较固定,提取程序往往可以在不同类型的判决书之间复用。这些要素构成了案件信息完整性的重要组成部分,同时有可能影响提取其他要素的准确性,其研究价值虽然普遍较低,但通常不可缺少;有些要素和案件类型高度关联,尤其是涉及犯罪事实和量刑情节的要素,它们蕴含在判决书对案件事实的描述中,根据灵活多变的研究需求而呈现出多种不同的形态。设定这种非通用的要素要求设定人不仅具备抽象的法律知识和实践经验,而且具有一定的技术基础,能够考虑计算机具体的实现能力和提取要素的现实可能性。此外,要素的取值类型和变量特征也是设定要素时应予考虑的重要内容。提取要素的取值有文本型、数字型和时间型三种基础类型,其中,数字型和时间型要素可作为统计变量直接运用于数据分析,但必须注意分类变量、顺序变量和数值变量具有不同的计量意义;〔60〕 参见贾俊平:《统计学》,清华大学出版社2004年版,第5页。 而文本型要素往往需要进一步归纳和抽象,转化为数字型或时间型要素后方可用于统计分析。
评价设定的提取要素有两个指标较为重要,可称为提取要素的广度和深度,即设定要素数量占全部可挖掘信息数量的比例和对要素加工和延伸的程度。许多实证研究提出的量刑预测模型解释力不足,其重要原因之一是用于解释判决结果的变量短缺或者过于浅显。〔61〕 同前注〔5〕,白建军文。 本文结合受贿罪的案件特征和有关法律规范设定的提取要素可见附件。〔62〕 相关文档、数据、代码和算法完全公开、持续更新,详见:https://github.com/tsfnzjy120/extract_bribe_infos,2019年3月13日最后访问。 下面就提取要素的具体方法和主要困难展开讨论。
1.直接提取位置相对固定的要素。位置相对固定的要素可通过正则表达式直接提取,首先确定要素在判决书中出现的位置,而后根据经验和知识产生提取逻辑,提取逻辑融入用编程语言描述的正则表达式之中,再由计算机程序执行和获取结果。正则表达式形式上表现为一些特殊符号或者符号的组合,用以指代提取内容。
表2 正则表达式基础语法〔63〕 同前注〔55〕,[美]Jeffrey E•F•Friedl书,第 1 章。
分析正则表达式提取判决书要素的实例有助于理解这些抽象的语法规则以及它们实际的运作过程,以对(2014)铜王刑初字第00014号判决书提取判决结果要素为例,该判决书的有关表述为“判决如下:一、被告人许某某犯受贿罪,判处有期徒刑八年六个月(刑期从判决之日……)”,将此语句(在程序中记为sentence)输入至下述功能逻辑中,即可获得提取结果:
import re
——导入正则表达式功能模块
result_regex = re.compile(‘判决如下:一、被告人(.+?)犯(.+ 罪),判处(.+?)(’)
——编写正则表达式,分别对应被告人姓名、罪名和刑罚
2.提取位置不太固定、表述多变的要素。提取固定位置的要素有时也会遇到位置不固定、表述多变的问题,但一般可通过改进正则表达式或精确输入内容解决;而对于本部分所讨论的要素,单纯的正则表达式无法提取,需要制定更加灵活的提取策略。
match = result_regex.search(sentence)
——正则表达式搜索sentence语句,搜索结果存入match
name, crime, penalty = match.group(1),match.group(2),match.group(3)
——从搜索结果中提取被告人姓名、罪名和刑罚,分别存入name, crime和penalty
至此,提取程序将部分判决书内容转化成为结构化的信息,即要素。提取位置固定的要素是正则表达式作用于判决书一部分内容的结果,因此,面临的问题也主要在两个方面:一方面是编写的正则表达式对同一要素可能存在的其他表达方式考虑不足,导致无法从正确的文本中提取要素。通过分析无法正常提取要素的判决书样本,归纳同一要素的不同表达方式,提高正则表达式的兼容性是解决本问题的主要方法。除了考虑表达方式的多样性,编写正则表达式时还应注意兼容判决书中可能存在的错别字,比如“辩护”和“辨护”〔64〕 判决书原件和录入中国裁判文书网的判决书基本不可能存在错别字,但是其他案例搜索引擎上的判决书有相当一部分是通过OCR(光学字符识别)方式扫描纸质判决书生成,存在错别字的概率较高。 。另一方面是输入正则表达式的判决书内容不准确。输入的判决书内容过“窄”,可能其中不存在要素,或者存在的要素不完整;过“宽”,则可能获取不必要的内容。预先分割文本〔65〕 见表1。 并以分割结果作为输入可以部分避免发生过窄或过宽的情况,同时根据提取要素的具体情况灵活调整输入内容。
检查提取要素的准确率是提取判决书要素必不可少的环节,直接影响研究结论的正确性。一份具有规范性和科学性的法学实证研究成果应当提供从判决书中提取要素的准确率指标。下面就准确度检查的原理和方法展开讨论,并就程序改进提出一些建议。
依据OSI七层模型,按照由下向上,层层相扣,逐渐加大难度,与理论知识紧密结合的原则,设计六组实验,如表1所示。设计思路是:新实验内容会涉及做过的实验所搭建的模型,通过使用前面的实验作为踏板进一步理解将要学习的内容。通过前面对网络性能的分析,也有助于后面综合网络性能的分析。通过对运行网络模拟环境所得图像分析,让学生了解影响网络运行的因素,找出解决和改进的方法,并通过报告得出希望的结果。
提取位置不固定的要素,基本思想是让正则表达式在更大的文本范围内展开检索,获取尽可能多的检索提取结果,再根据提取结果的具体情况筛选或计算出最终结果。首先,由于要素出现的位置极其不固定,输入正则表达式的内容应尽可能宽泛,凡是要素可能出现的文本区域均应按照一定的规则组合成整体作为正则表达式的作用域,必要时也可以直接输入判决书全文。其次,正则表达式不再试图提取一个准确的要素,而是适当放宽提取条件,获取更多的“模糊要素”,再从中筛选符合条件的要素。本文在提取“受贿次数”要素时采用了这一方法,提取程序首先对判决书的事实认定部分划分句子,随后以句子为基本单位,获取尽可能多的有关“财物”的表述,比如“××元人民币”“一辆轿车”“购物卡”等,再检查这些“财物”的周围是否出现被告方的姓名、是否有“送”“收受”等谓语,如果存在“受贿主体”和“受贿动作”则作为一次受贿计入提取程序。〔67〕 该算法存在重复计算的问题,在实际运用时需要保证每次计入程序的“财物”与已计入程序的“财物”不重复。判决书在“本院认为”部分一般对被告受贿的总金额有明确表述,但对受贿次数通常只用“多次收受”一笔带过,因此采用该算法。提取受贿次数的算法并不唯一,本算法可供参考,用以启迪思路。 在提取过程中,分析产生“模糊”的原因,不断优化筛选规则,可以逐步提高算法的准确率。
提取表述多变的要素,单纯的正则表达式无法处理的情形有两种。第一,要素在不同的判决书中表述不同,且各种表述之间差异较大,无法为正则表达式所统筹。比如,“为他人谋取不正当利益,致使公共财产、国家和人民利益遭受损失”这一法定加重情节在判决书中就有多种差异较大的表述。提取这种要素的方法是逐步积累所有的表述,编写多个正则表达式同时提取。第二,要素在同一判决书中的前后表述不一致。这种要素通常包含在一些意见性表述里,比如,公诉意见认为被告不构成自首,辩护意见认为被告构成自首,而在法院的审理意见里不仅有认定被告是否构成自首的结论,还可能有对控辩双方“构成自首”和“不构成自首”的评价,导致提取要素的不一致。解决该问题时经常会使用一些关联要素对提取结果进行验证,比如,在出现不一致的情况时,“自首”可以根据“坦白”“配合追缴”等关联要素进一步确认。
在提取要素之前,为避免原始数据中存在的瑕疵,防止产生程序问题或者得到错误结论,有必要预先处理和解决一些数据本身存在的问题。判决书的预处理过程通常包括文件格式统一、文本内容清洗、数据去重、数据筛选、生成标识码几项内容,这些处理不仅能够提高数据的质量,解决原始数据中存在的数据不完整、不一致、有异常等问题,而且能够让数据更好地适应信息提取工具或技术。
公共服务政策提出后不可盲目推行,需经过小范围实践检验,得到公众认可后再推广实施。政策实施前的可行性分析判断,需要有一种信息回馈模式,也就是指在政策制定后,让公众知晓,该服务是否是以公众需求为导向,是否是公众最渴望、最急切得到的服务,政府在得到公众回访信息后,对政策的可行性进行进一步修正改进,最终提供最优质的公共服务,做到公共服务时时创新,服务时刻为人民接受,真真做到倾听民声、体察民情、集中民智、回应民意、最终做到保护名利。
提取间接要素可分成根据要素提取和根据要素组合提取两种类型。根据要素提取的一个典型实例是提取受贿罪案件的适用法律,〔68〕 2015年11月1日起实施的《刑法修正案(九)》(简称“刑修九”)对贪污贿赂犯罪的量刑标准做出较大修改,另外2016年4月18日最高院和最高检颁布和实施了《关于办理贪污贿赂案件的司法解释》。据此,受贿罪案件可分成适用原刑法、适用刑修九但不适用司法解释、适用刑修九和司法解释三类。 它以已提取的“最后一次受贿行为发生时间”为依据,遵循一个简单的时间先后判断逻辑并根据“从旧兼从轻”的原则获得输出。〔69〕 参见余亚宇、石魏:《刑法修正案(九)实施后从旧兼从轻原则的准确适用》,《人民司法(案例)》2016年35期。 这里也体现了算法设计者掌握法学知识的必要性。已有定量研究不加讨论地只以审判时间为准来确定该案所适用的法律。〔70〕 同前注〔66〕,褚红丽、孙圣民、魏建文;同前注〔17〕,过勇、李松锋文。这些研究均是以审判时间为准来确定所适用的法律。其原因也可能是如果要以犯罪行为发生时间来确定难以实现,所以退而以直接、明确的审判时间为替代值。本文也不主张所有刑事领域的定量研究都要以最后犯罪行为发生时间为准来确定,但至少这应该是一个首选项。 根据要素组合提取的一个实例是“量刑区间”,该要素是量刑的决定性因素,根据法律规定,〔71〕 参见刑修九实施前的《刑法》第383条,《关于办理贪污贿赂案件司法解释》第1到4条。 涉及适用法律、受贿金额、次数和加重情节三个直接要素,遵循一个稍显复杂的判断逻辑,基本上模拟了法官审理案件的思维过程。
表3 根据要素组合提取“量刑区间”〔72〕 Sum表示受贿金额,以万元为单位;H表示法定加重情节之一。该表仅根据有期徒刑划分量刑区间,根据研究需要可以进一步融合其他刑罚种类,划分更多层次的量刑区间,设计更复杂的逻辑判断。有关代码和算法会陆续更新,见前注〔58〕。这里是提出本文作者设计的有关量刑区间的算法,希望能以此为基础,引发大家关于该算法的逻辑是否严密、是否符合法律规定和审判实践等的讨论。
间接要素一般根据研究需要设定,有时提取难度很高,计算机无法返回一个完全准确的结果,但可以通过一定的算法设计使提取结果逼近真实结果,将误差控制在可接受的范围内。比如,要探究受贿罪中被告人的职务级别对量刑的影响,根据提取的职务判断出对应的级别即使是人也无法做到百分百准确,职务的庞杂性又导致不太可能建立一个完整的职务和级别之间的映射关系库,因此,针对无法判断的职务获取其近似的级别是一种经济可行的方案,在误差合理的条件下对研究结论的影响有限。具体做法是,如果职务名含有“科长”“处长”“调研员”等头衔,可直接确定对应的级别;如果缺少级别明确的头衔,则可以职务名中含有的地区行政级别为基础,根据所在单位的性质(国家机关、事业单位、国有企业等)确定一个修正参数,经运算得到一个级别的近似结果。
(四)提取要素的输出
要素被提取后要让计算机进行自动输出。提取要素的输出主要注意要素的保存和再利用问题,至少有两方面的要求:第一是面向研究者友好。提高要素准确率和制定数据分析策略基本上还是由研究者的思维主导,因此要求要素的输出清晰、直观,易于人类理解;而人工操作在处理细粒度数据时亦有机器不可比拟的优势,因此要求要素的手工查找和修改操作简便。第二是兼容主流的数据分析工具和软件,比如Stata、SPSS等常用的统计分析软件。结合这两方面的原因,本文建议采用CSV格式输出提取的要素信息,一方面,CSV可直接被Excel软件打开,方便研究人员查看和处理;另一方面,CSV也能够被大多数数据分析软件直接使用。在Python程序中,CSV文件可以使用pandas类库中的DataFrame.to_csv函数直接生成。
(五)提取要素的准确率检查
提取的数字型要素或时间型要素还需格式化,统一表达形式和计量单位。比如,本文在提取受贿金额时,就遇到“一万三千”“1.3万”“13000”“壹万三仟”等诸多表达形式,通过建立中文数字和阿拉伯数字之间的映射关系,统一转化成阿拉伯数字,以万元为单位,保留两位小数;在提取主刑结果时,为便于量化研究,把拘役2天折算成有期徒刑1天,无期徒刑计为人均寿命减去被告人平均年龄,死刑计为人均寿命,死缓计为无期徒刑和死刑和的一半。〔66〕 定量研究中对拘役、缓刑、无期徒刑、死缓、死刑等的处理方法有多种,包括另外设置类型变量。这里仅指将其转换为数量的一种方法。参见白建军:《死刑适用实证研究》,《中国社会科学》2006年第5期;褚红丽、孙圣民、魏建:《异地审理与腐败惩罚:基于判决书的实证分析》,《清华法学》2018年第4期。
计算机提取的要素基本不能再由计算机检查其准确性,因为计算机程序始终按照一个预期无错误的逻辑在提取要素,不具有发现错误和纠正错误的能力。因此,人工抽样检查准确率成为必要。人工抽样检查方法的重点在于确定科学的样本容量和抽样方法,本文提出的方案如下:
在c1~c8构成的指标体系中,专业素质和科研创新素质可以作为奖励和惩罚的主要依据,也可以作为促进的依据。而德育素质和其他素质可以作为高校进行决策的重要依据。通过分析总体情况和个别学生的综合值,为改进和提高其综合素质提供了良好的基础。
2.3.1 降低医疗保险报销门槛。虽然现在的空巢老人办理了社会医疗保险或参与了新型农村合作医疗,但可以享受社会医疗保险的老人都是离退休人员,农村地区这些人所占的比例很小,一般老人参与了新型农村医疗合作保险,这种保险需要老人定期交付费用,对于经济条件好的老人来说可以负担得起,而对于那些经济条件不是很好的老人来说无疑加重了生活负担,更有甚者不交费用,因而也无保险金可领取。但是,医疗保险仅能支付老人少部分的医疗费,由于大多数医疗保险报销手续繁多,报销额度较少,大部分医疗费用都是由老人自己解决的,并没有从根本上解决老人看病贵的问题,在医疗保障方面的力度也不够。
首先,提取要素的准确率定义为:对某一要素,经人工检查正确的要素数量和要素总数之比。
其次,抽取的样本容量和判决书总量无关,它由下列公式确定:〔73〕 同前注〔60〕,贾俊平书,第191页。
其中,n 为样本容量;z 是由置信水平确定的一个常数,科学研究中置信水平一般要求达到95%,对应的z 值为1.96;E 为边际误差,一般要求不超过5%;π 是一个对提取要素准确率的先验估计值,根据等式,当π 取值0.5时n 达到最大值,为保证更多的样本量π 取0.5。将z 、E 和π 值代入等式,得n =385,即当判决书总量大于385时,人工抽样检查的样本容量恒为385,此时有95%的把握认为样本准确率和总量准确率的误差不超过5%。举例来说,对于某一个要素,如果人工抽检的样本准确率为90%,那么总体的准确率应该在90%±90%×5%之间,即85.5%到94.5%之间,这种判断的可靠性有95%。如果人工检查385份样本仍有困难,则可适当调大E 值,比如调大至10%,此时只需检查n =97份样本,但是上例中总体准确率所在区间会变成90%±90%×10%,即81%到99%之间。
剑鼻蝠生活在中美洲和南美洲,属于杂食性动物。蝙蝠科动物的吻鼻部均长有鼻叶,这是一种构造复杂的皮肤衍生物,和蝙蝠自身具备的发射超声波的功能息息相关。
最后,使用有放回的抽样方法,即重复抽样。这种抽样方法是适用上述公式的前提,此时每份判决书被抽中的概率相同。可通过计算机程序实现〔74〕 使用Python语句numpy.random.choice(n1,n2,replace=False)能够直接返回重复抽样结果,其中n1表示判决书总量,n2表示样本容量385。 。
钻机平台宽度的设置必须合理,在放置钻机之前,必须要对地表情况进行观察,保证其处于夯实的状态。为了防止平台被水坝冲刷,应该在平台两侧修建排水沟。
人工抽样检查的结果为改进准确率较低的要素提取程序指明了方向。要素提取程序存在误差的根本原因在于程序内部的提取逻辑和判决书实际内容的不匹配,因此,改进提取程序可从两方面着手:一方面可以直接手工提取判决书的内容,如果存在误差的判决书数量较少,不失为一种简单有效的方法;另一方面则需要修改和完善程序提取逻辑,不断分析各种误差的产生原因,形成新的提取逻辑,并整合到原有的程序逻辑中。经过反复几轮人工检查和程序改进,提取要素的准确率能够逐步上升到较高水平。
四、结语
本文论述了一种新型的法学研究方法,即计算法学方法的独立价值、基本思维和特点,指出了在这类研究领域存在的实践先行、理论单薄、研究视域过窄、重复劳动、合作困难、研究缺少接续能力等问题,抽象了计算法学方法的一般步骤,将判决文书信息的提取分为三类要素,说明了针对不同要素运用计算机提取信息应当采取的计算方法和通用程序。〔75〕 同前注〔62〕。 本文也讨论了计算法学生态的形成对这个领域的发展和计算法学方法价值的充分发挥有至关重要的作用,而实践、具体、可传承的严谨的学术探讨和尽可能开源的程序才能更好地促进生态的形成。如此,法学研究才能更好地在目前正在进行的智慧司法软件的研发中发挥作用。虽然这些软件模型是用来辅助实践的,但是标准的建立向来是应当接受充分的学术探讨的,而不应由某个部门或企业来决定。所以,本文提供了作为这些研发任务基础的判决文书处理的一部分方法,希望能抛砖引玉,吸引更多的同仁来检测这些方法,并进行更为深入的研究。
计算机科学是目前将学术产业化做得最好的学科。计算机图灵奖得主往往都创办了公司或研究院,所做的研究都能在产业上得到运用,所以它是一门实践性、专业性、技术性非常强的学科。而法学学科无论是规范解释、价值判断还是现实描述也具有很强的实践性和技术性。虽然两个学科有各自独特的话语体系,但是二者的研究对象并不是互斥的,而是有不少重合,并会随着虚拟世界的不断现实化而越发紧密;两种研究方法也不是不相容的,而是可以互补。计算法学的出现和发展就是为了搭建架接这两套话语体系的桥梁,探索将可能需要计算机帮助的法学问题转化为可计算问题的方法,寻找和培养能够解决已转化问题的计算方法和能力,检测、修正和更新既有的算法,从计算结果中获得有法学价值的信息,丰富法学研究的领域和方法。
计算法学不只是一种法学研究方法,还有更广泛的内涵,有很多争议的问题需要讨论厘清才能更好地促进它的发展。比如前文所述的反爬虫策略,虽然其本意是网站为了防止用于商业目的的“脱库”下载行为,但是却造成了用于学术研究的下载也难以进行,提高了判决使用的成本和难度。关于爬虫和反爬虫等攻防措施的正当性、合法性的争议,以及更深层次的数据权利属性和数据权益分配的讨论都尚未定论。我国和美国都出现了类似的有关公开数据权利的案件,比如我国的大众点评诉百度地图抓取其页面用户评论、美国的hiQ Labs, Inc.诉LinkedIn(领英)设置严密的反爬虫策略妨碍其抓取领英用户公开的教育背景信息等案件,而两国的法院目前则做出了相反的判决。〔76〕 参见Cheryl B.Preston, Lawyers’ Abuse of Technology, Cornell Law Review Vol.103:879, p.894.领英案目前仅有美国联邦基层法院作出的要求双方友好协商的临时禁止令(preliminary injunction order)。大众点评案则已经二审终审,终审维持了一审要求百度地图等原告方赔偿大众点评323万损失的决定。参见:《百度抓取大众点评用户评论, 一审被判赔323万》,http://www.sohu.com/a/77647804_410381,2019年3月13日最后访问。 所以这类问题还需进一步的研究。随着计算法学的发展,计算法学生态的形成,计算法学研究成果的学术化和去商业化,如果能够建立学术圈内共享的法律文书或数据库,便于从事学术研究的人员使用,则能更好地解决这个问题。
* 作者单位:中国人民大学刑事法律科学研究中心。本文由“国家重点研发计划”资助,项目编号:2018YFC0830905。
(责任编辑:王 申)
标签:法学研究方法论文; 计算法学论文; 独立价值论文; 基本思维论文; 判决书处理论文; 中国人民大学刑事法律科学研究中心论文;