数据科学大作业研究报告
研究报告
小组信息
小组成员3人,名单如下:
学号 | 姓名 | 邮箱 | 分工职责 |
---|---|---|---|
201250164 | 张泰豪 | 201251064@smail.nju.edu.cn | GUI开发,统筹安排任务,演示视频制作 |
201250137 | 母舰 | 201250137@smail.nju.edu.cn | 数据分析,接口制作,文档编写 |
201250167 | 徐润石 | 201250167@smail.nju.edu.cn | 展示材料制作,前端设计,数据收集,软件测试 |
研究问题
1. 背景
智慧法院是依托现代人工智能,围绕司法为民、公正司法,坚持司法 规律、体制改革与技术变革相融合,以高度信息化方式支持司法审判、诉讼 服务和司法管理,实现全业务网上办理、全流程依法公开、全方位智能服务 的人民法院组织、建设、运行和管理形态。
在智慧法院的背景下,司法大数据应运而生。司法大数据是应用人工智能技术,在法律领域积攒的大量数据的基础之上进行分析,满足司法领域需求的新技术。司法领域有大量数据,却也存在文档绿如繁琐,海量判决文书检索困难,文书阅读效率低等降低司法效率的困扰,而人工智能领域需要的正是大量数据,近年来人工智能技术的发展也能解决司法方面的问题,于是人工智能技术得以在司法领域大显身手。
2. 目的
以对应的刑事案件裁定书为主要数据集,对数据集进行分析自动化提取出基本的信息,用户在前端界面选取选项作为标注保存,并不断优化优化自动化提取的选项的词语的准确度。
因为需要的结果就是一系列的标注结果,所以本次作业从逻辑上来说不是训练模型提取标注,因为标注是训练模型的前提,而是利用数据分析手段,基于观察和适当的算法,对文本内容进行自动化分词,通过文本命名实体、词性分析等方法获取基本信息可能对应的实体,在这些词语中选取正确的标注。
本次研究立足于利用已有分词手段和词性、命名实体识别等功能,结合文本特征以及算法分析不断优化标注提取选项。
研究方法
数据获取:利用request爬虫框架爬取文书网数据并保存为utf-8格式的.txt文件
一.原理概述
1.TF-IDF算法:
词频(TF)是指词语在整个文本中出现的频率,计算方法是用该词语在文本中总共出现的次数除以文本的单词总数;你文档频率(IDF)是用来衡量词语是否具有文章代表性的评价方法,计算方法为用语料库中文档的总数 除以出现词语的文档数目并取对数。倘若一个词在某一类中出现的频率较高,而在其他类中出现的频率较 低,则说明该词语在此类中具有很强的代表性,其 IDF 值就高;相反,若一个词在每个文档中均有出现,则其文章代表性较低,IDF 值也就低。IDF 因子在一定程度上 避免了文章中常用非关键词语成为关键词的可能。但与此同时,该算法仅仅考虑了词频方面的因素,没有考虑包括词性,词语出现位置,词长等信息,仍然有一定的局限性。
TF-IDF 的主要思想是,用 TF 相乘 IDF 的结果作为计算词语的权重,词语在文章中出现的频率越高,而包含该词语的文档数越少,则认为该词语的重要性越高。
公式如下:
$$
TF = \frac{该词在文档中出现的总词数}{文档总词数} \tag{1}
$$
$$
IDF = \log\frac{文档总数}{包含该词的文档数量+1} \tag{2}
$$
$$
TF-IDF = TF \times IDF \tag{3}
$$
2. TextRank算法
TextRank算法是一种基于图的用于关键词抽取和文档摘要的排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,它利用一篇文档内部的词语间的共现信息(语义)便可以抽取关键词,它能够从一个给定的文本中抽取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法抽取出该文本的关键句。
TextRank算法的基本思想是将文档看作一个词的网络,该网络中的链接表示词与词之间的语义关系。
3. 最大熵模型
假设我们的分类任务或者预测任务的类别为y,而我们能够依据的上下文信息记为x。我们希望在不同的给定的上下文x条件下,统计模型能够给出判为不同类别y的概率值。因此,我们希望能够建立一种区分性的条件概率模型(注意,我们这里仍然用了的表示形式,但是此处的意义表示的是整个的概率分布,也不再表示具体的实例)。我们用来表示所有这种条件概率模型的集合,而我们期望得到的模型就是中的一种。所谓的条件最大熵模型,就是在一定约束下条件熵最大的模型。
所谓的约束,也就是我们已知的信息,可以认为我们希望模型在这些信息上能和训练数据匹配。而熵最大,则表明除约束外,我们不再做未知的假设。在条件最大熵模型中,约束是通过特征的形式来体现的。这里的特征和语音识别等领域的特征有所不同,它表示成和的函数的形式,表示了x的某种属性和y的共现情况。特征函数理论上可以取任何实数值(早期因为训练算法的原因只能取正值),在自然语言处理领域一般表示为0-1的指示函数的形式。
4. 隐马尔可夫模型
在简单的马尔可夫模型(如马尔可夫链),所述状态是直接可见的观察者,因此状态转移概率是唯一的参数。在隐马尔可夫模型中,状态是不直接可见的,但输出依赖于该状态下,是可见的。每个状态通过可能的输出记号有了可能的概率分布。因此,通过一个HMM产生标记序列提供了有关状态的一些序列的信息。注意,“隐藏”指的是,该模型经其传递的状态序列,而不是模型的参数;即使这些参数是精确已知的,我们仍把该模型称为一个“隐藏”的马尔可夫模型。隐马尔可夫模型以它在时间上的模式识别所知,如语音,手写,手势识别,词类的标记,乐谱,局部放电和生物信息学应用。
隐马尔可夫模型可以被认为是一个概括的混合模型中的隐藏变量(或变量),它控制的混合成分被选择为每个观察,通过马尔可夫过程而不是相互独立相关。最近,隐马尔可夫模型已推广到两两马尔可夫模型和三重态马尔可夫模型,允许更复杂的数据结构的考虑和非平稳数据建模。
隐马尔可夫模型主要用于NLP模型中的新词预测
5.对文本内容的分析:
首先综合自身分析与查阅资料,我们找出了在在裁判文书中进行关键词提取与在一般文本中进行关键词的几个区别。
裁判文书中有大量类似于“裁定”,“判决”,“本院认为”这类词语,这类词语频繁出现,但与标注内容关系不大,出现在提取词中时只能成为干扰项浪费提取空间而无法表达出内容主旨
裁判文书主要由法律词汇构成,较普通文章而言文中会大量出现词长较长的专有词汇
裁判文书有以下分类:
刑事裁判文书
民事裁判文书
普通民事文书
商事文书
知识产权文书
行政裁判文书
执行裁判文书
其它通用诉讼文书
显然关键词的提取会受到文书类型的影响,不同的文书类型存在不同的侧重点,关键词也会存在不同
基于对中国裁判文书网中裁定书的观察分析,结合TF-IDF算法中的局限,我们找到了几个可以改进的方面。
首先是裁判文书标题的特点,裁判文书的标题几乎都包含了被判者的姓名以及所犯罪行两个关键信息,显而易见的是,位于标题位置的词是所需要标注中的关键词的概率远远大于文章中间提取词,与此类似的是。与此同时文书的开头第一段中更有可能会包含着姓名,性别,民族以及居住地等与被告人相关的关键信息,文书的结尾中也更有可能出现关于最终判处结果的信息。
文章开头
文章结尾
6.基于观察与资料的算法改进
- 通过查阅资料我们发现了不同词性的词语对关键信息的表达能力也存在差别,在统计的裁判文书关键词中,名词约占33%,动词约占27%,形容词约占15%,动名词约占11%,副词约占5%,其它词性的词约占9%,通过粗略的估计可以看出动词、名词和动名词大约在关键词中占比为70%,而剩余词性的词占30%,从而可以考虑在分词结果中对不同词性的词赋予不同的权重。在本次标注作业中,我们注意到需要标注的大部分词语都应该属于名词类别,所以在实验中占比进行了改动。
词性权重
$$
Pos(T) = \begin{cases}
0.7 & T为名词、动词、动名词
0.3 & T为形容词、副词 \end{cases}
$$
- 基于上一小节对裁判文书的观察分析,我们得出了不同位置词语成为关键词的概率有差别,文书标题和开头结尾中更有可能蕴含着有效信息,我们对于出现在不同位置的词语也应该分配不同的权重。可以通过设置一个阀值,通过简单计算一个词语首次出现时前面出现的词语数目与文书剩余词数的比值来作为该词语的首位值,同理计算一个词语最后一次出现时后面时文书还剩余的词语数与文书该词前面词数的比值来作为该词语的末尾值,通过计算两个值得和的倒数来判断词语的重要性。
词位置权重
$$
W(T) = \frac{1}{(FP(T)+LP(T))}
$$
$$
FP(T) = \frac{首次出现时前面的词数}{剩余词数}
$$
$$
LP(T) = \frac{最后一次出现时后面的词数}{已经出现过的词数}
$$
- 我们注意到裁判文书中存在大量类似于“判处”,“本院认为”之类的文书特有词汇,但这类词很少在开头结尾同时出现,出现跨度也不会太大,同时在开头结尾同时出现的或者出现跨度很大的词语也很有可能更加重要,我们可以为出现跨度较大的词语赋予较大的权重来优化提取效果
跨度权重
$$
WS(T) = \frac{词语两次出现的最远距离}{文书总词数}
$$
在本次作业中存在一个特殊的标注——相关法院标注,由于法院名字的特殊性,法院的名称以及数量在一定时间内几乎是固定的,我们搜索了全国法院的名单,将其导入.txt文本中,采用一行一个法院,并编写脚本按照jieba分词自定义词典格式为每个法院加上极高的词频便可通过jieba自带的基于TF-IDF的关键词提取提出所有相关法院
后续发现对于民族同样可以进行和相关法院词汇一样的操作
7.采用工具
• jieba
• hanlp
二.实验概述
数据集来自中国裁判文书网中的刑事案件类别的100份裁定书
1. 实验过程
实验开始之初通过简单对比未加入自定义词典时对几个关键词的分词结果后后选择使用jieba分词。通过下载搜狗细胞词库法律相关词库,通过工具与编写程序将词库转为.txt文件并为每个词加入适合的词频制作自定义词典,以及搜集法院名称制作法院名字大全词典加入jieba分词中以适应本次作业所分析的文本要求。在多次的分词尝试中发现单独jieba分词结果准确率不高,有时会产生分词后人名的词性不是人名,而通过HMM发现的新词会错误的标注词性为‘nr’(jieba中的人名),地名之中也存在类似的问题。此外,jieba的在命名实体识别上也有一定的问题,在分词中有偏大的概率使得中文人名被拆分开来,而且在裁判文书中经常出现的例如王某某,陈某某这样的名字写法时会将姓与某某二字拆开,同样尝试过LTP后发现对于后者也存在问题。
用一篇文书进行示例
在最开始单独使用jieba进行关键词提取时效果如下:
可以看到虽然基本可以提取出需要的信息,但是提供的备选项仍然存在很多错误与偏差,比如人名中出现“刑事判决”,以及地名中有“之日起”这样的词语。我们容易知道,这样的词语在词典中是不会被标注成这样的词性的,出现问题的原因应该是预测新词是不准导致。
解决问题的方法有两种。一种是添加词典,尽量减少新词的预测以及阅读jieba的实现不难发现,jieba通过HMM模型进行新词预测,预测基于词典,添加词典同样能增加预测的准确性。第二种方法是结合第二种NLP手段来综合提取关键词,查阅资料以及实验后我们发现,在命名实体的识别方面,hanlp有着很大的优势,决定将原有的单独使用jieba的分词方式融入hanlp分词中,二者共同提取与来构成更为准确的关键词提取模型。
综合考虑后我们采用两种方法兼顾的策略,再分词工具采用jieba和hanlp结合的同时,对于操作较为简单的jieba编写脚本收集多种词典,利用脚本规格化为jieba可以读取的字典模式并考虑添加合适的词频来优化分词结果
部分代码(在hanlp为主体的关键词提取中结合jieba):
(部分词典以及脚本)
此外。我们考量了当事人以及其出生地、所犯罪行经常出现在文章开头,结尾的现象。这是容易解释的,裁定书往往在开头宣读当事人及其基本信息,犯案情况,在文章中间展开描述以及论述,而在结尾重申判决,所以本次标注内容大部分都在文章的开头结尾,基于此,我们对于所提取的命名实体,对每个词根据其出现位置以及出现的跨度来赋予它一定的权重,还可以计算每个词的TF值等来计算权重弄,再按照权重排序可以尽量使得关键信息出现在选项中的靠前部分。与此同时我们可以减小提供的关键词个数但不影响命中率。
权重计算:
经过改进后的分词结果:
可以看到对于对应信息基本能做到较为准确的给出对应的命名实体,相比上面有了较大的改善,但类似于“之日起”这样的词语仍然还在,初次之外还有类似于“本院认为”,“驳回申诉”,“一审判决”这样的词语,它们有着符合的词性,但却显然不是我们所需要的信息,我们需要添加停用词表,根据停用词表在分词结果中删除这类大量出现容易被认为是关键词的常用词语,在这里我们采用了大量实验的方式自构建了停用词表。
部分停用词:
改进如下:
可以看到最终结果较为符合预期。
2. 实现功能
对于每个对应的标注,我们利用分词,词性分析,命名实体识别,以及基于对裁定书的观察分析和查阅资料而得出的词位置,词出现跨度等特点而进行的关键信息提取。基本实现了较为准确的为当事人提供人名备选,识别性别提供文中出现的性别,识别民族提供文中出现的民族,为出身地提供较为可能的地名备选,为案由提供较为可能的名词备选以及基于刑法罪名大全的罪名识别结果,为法院提供法院机构备选项。
3. 总结
数据分析的方法有很多种,提取关键词的算法也多种多样。但是关键词提取的方法应该只有普遍意义下的效果好而没有绝对的效果好。比如TF-IDF和TextRank算法是在关键词提取中较为常见的两种算法,但在本次的司法大数据标注大作业中,这两种算法在实验过程中的效果并不比普通的计算词位置和跨度因素等来赋予词权重效果要好。数据分析的方法的选取应该在分析文本特征后综合考量,根据不同文本类型以及不同需求来进行判断。