|
|
# 裁判文书解析代码
|
|
|
|
|
|
## 文本解析的目标
|
|
|
```html
|
|
|
上诉人: 陕西雄风新能源有限公司
|
|
|
上诉人: 晋能控股山西电力股份有限公司
|
|
|
被上诉人: 中铁十七局集团第一工程有限公司
|
|
|
```
|
|
|
|
|
|
## 介入结果的自定义标签
|
|
|
开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。
|
|
|
虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率。
|
|
|
用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
|
|
|
```html
|
|
|
area: 地区(吴家窑乡)
|
|
|
areaend: 地区的结尾(**村)
|
|
|
address: 住址
|
|
|
birth: 出生
|
|
|
jianname: 以下简称
|
|
|
link: 连接关系的关键词(因与,对)
|
|
|
nation: 民族(汉族)
|
|
|
orgcode: 社会信用代码、注册号
|
|
|
other: 软件与服务
|
|
|
personcod: 身份证号码
|
|
|
hehuoorgan: 有限合伙
|
|
|
organ: 机构结尾词(**学校)
|
|
|
partorgan: 分公司分厂
|
|
|
standardorgan: 有限公司
|
|
|
judgement: 审判长
|
|
|
role: 一般角色
|
|
|
roledefendant: 被告
|
|
|
roleplaintiff: 原告
|
|
|
rolethird: 第三人
|
|
|
sintype: 案由
|
|
|
```
|
|
|
|
|
|
paddle模式词性和专名类别标签集合如下表,其中词性标签 24 个(小写字母),专名类别标签 4 个(大写字母)
|
|
|
```html
|
|
|
标签 含义 标签 含义 标签 含义 标签 含义
|
|
|
n 普通名词 f 方位名词 s 处所名词 t 时间
|
|
|
nr 人名 ns 地名 nt 机构名 nw 作品名
|
|
|
nz 其他专名 v 普通动词 vd 动副词 vn 名动词
|
|
|
a 形容词 ad 副形词 an 名形词 d 副词
|
|
|
m 数量词 q 量词 r 代词 p 介词
|
|
|
c 连词 u 助词 xc 其他虚词 w 标点符号
|
|
|
PER 人名 LOC 地名 ORG 机构名 TIME 时间
|
|
|
```
|
|
|
|
|
|
|
|
|
## init_cut()
|
|
|
TC: 字典树:识别每一段文本的大概内容,利于缩小切词分析范围
|
|
|
JBC: 结巴分词的初始化
|
|
|
ACTIONC:字典树:识别案由 --> CASE_RESION_TREE
|
|
|
lac: 飞桨解析初始化
|
|
|
ORGANC: 字典树:识别机构
|
|
|
|
|
|
## load_lexicon() --> load_province_code_lexicon/load_province_code_tree
|
|
|
```html
|
|
|
字典树:识别机构的具体省份和地区码
|
|
|
court_name:陕西省高级人民法院
|
|
|
area_info:{'province_code': '610000', 'province': '陕西省'}
|
|
|
```
|
|
|
|
|
|
## WenshuParser.structural_content
|
|
|
```html
|
|
|
part1_list: 文书的审理法院、文书的类型、案号
|
|
|
part2_list: 涉及的的所有角色罗列
|
|
|
part3_list: 涉及的的主要角色案件概要
|
|
|
```
|
|
|
|
|
|
## WenshuParser.get_parties
|
|
|
```html
|
|
|
parse_result = OrgPerParser(line).parse_content()
|
|
|
|
|
|
cut_word_with_flag
|
|
|
[
|
|
|
'上诉人:roleplaintiff', '(:x', '原审被告:roledefendant', '):x', '::x', '陕西:area', '雄风:n', '新能源:n',
|
|
|
'有限公司:standardorgan', ',:x', '住所地:address', '陕西省:area', '榆林市:area', '定边县:area', '砖井镇:area', '西:f',
|
|
|
'高:a', '圈:q', '村:areaend', '。:x'
|
|
|
]
|
|
|
|
|
|
merge_same_flag:
|
|
|
[
|
|
|
'上诉人:roleplaintiff', '(:x', '原审被告:roledefendant', '):x', '::x', '陕西:area', '雄风:n', '新能源:n',
|
|
|
'有限公司:standardorgan', ',:x', '住所地:address', '陕西省榆林市定边县砖井镇:area', '西:f', '高:a', '圈:q', '村:areaend',
|
|
|
'。:x'
|
|
|
]
|
|
|
|
|
|
merge_bracket_part
|
|
|
[
|
|
|
'上诉人:roleplaintiff', '(原审被告):bracket,roledefendant,bracket', '::x', '陕西:area', '雄风:n', '新能源:n',
|
|
|
'有限公司:standardorgan', ',:x', '住所地:address', '陕西省榆林市定边县砖井镇:area', '西:f', '高:a', '圈:q', '村:areaend',
|
|
|
'。:x'
|
|
|
]
|
|
|
|
|
|
_merge_company_initial:(精彩的合并) tmp_word_list = [] 是合并结束的再次归零
|
|
|
[
|
|
|
'上诉人:roleplaintiff', '(原审被告):bracket,roledefendant,bracket', '::x', '陕西雄风新能源有限公司:ORG', ',:x',
|
|
|
'住所地:address', '陕西省榆林市定边县砖井镇:area', '西:f', '高:a', '圈:q', '村:areaend', '。:x'
|
|
|
]
|
|
|
备注:Lexical Analysis of Chinese,简称 LAC,是一个联合的词法分析模型,能整体性地完成中文分词、词性标注、专名识别任务。
|
|
|
在百度自建数据集上评测,LAC效果:Precision=88.0%,Recall=88.7%,F1-Score=88.4%。该PaddleHub Module支持预测
|
|
|
|
|
|
|
|
|
_merge_company_again
|
|
|
[
|
|
|
'上诉人:roleplaintiff', '(原审被告):bracket,roledefendant,bracket', '::x', '陕西雄风新能源有限公司:ORG', ',:x',
|
|
|
'住所地:address', '陕西省榆林市定边县砖井镇:area', '西:f', '高:a', '圈:q', '村:areaend', '。:x'
|
|
|
]
|
|
|
tag_aim_flag:
|
|
|
aim_flag = ["sintype", "link", "role", "roleplaintiff", "rolethird", "roledefendant", "ORG", "bracket"]
|
|
|
初次意外的标签不再需要,还原文本。
|
|
|
|
|
|
|
|
|
|
|
|
wenshu_parser.parse_person() 280:
|
|
|
利用飞桨对结巴自定义解析进行了补充
|
|
|
|
|
|
|
|
|
|
|
|
parse_result:
|
|
|
[
|
|
|
('上诉人', 'roleplaintiff'), ('(原审被告)', 'bracket,roledefendant,bracket'), ':', ('陕西雄风新能源有限公司', 'ORG'), ',',
|
|
|
'住所地陕西省榆林市定边县砖井镇西高圈村', '。'
|
|
|
]
|
|
|
```
|
|
|
|
|
|
## WenshuParser.get_parties
|
|
|
```html
|
|
|
CaseParser(case_content).get_parties(need_person=False)
|
|
|
|
|
|
```
|
|
|
|
|
|
## 代码与技术演进
|
|
|
```html
|
|
|
项目所用的基本分词代码:
|
|
|
>>> jieba.posseg.cut(content, HMM=False)
|
|
|
>>> paddlehub.Module(name='lac').lexical_analysis(texts=texts, use_gpu=self.use_gpu) # 该接口将会在未来版本被废弃,请使用cut接口预测
|
|
|
|
|
|
项目可以升级的基本分词代码:
|
|
|
>>> jieba.enable_paddle() #启动paddle模式。 0.40版之后开始支持,早期版本不支持
|
|
|
>>> jieba.posseg.cut("我爱北京天安门",use_paddle=True) #paddle模式'
|
|
|
|
|
|
|
|
|
>>> cut(text, use_gpu=False, batch_size=1, return_tag=True)
|
|
|
>>> lexical_analysis(texts=[], data={}, use_gpu=False, batch_size=1, return_tag=True)
|
|
|
|
|
|
```
|
|
|
|
|
|
## 优点
|
|
|
```html
|
|
|
1.结合分词工具进行二次开发,基本上达到了业务上的解析要求
|
|
|
2.将共性代码提取到wenshu_parse,并以类封装,可供其他业务借鉴。
|
|
|
```
|
|
|
|
|
|
## 缺点
|
|
|
```html
|
|
|
1.二次开发应该以模型的方式单独成项,不断迭代优化
|
|
|
2.wenshu_parse内部的类应该单独成文件,并将每个字典树的应用单拎出来,利于其他人员单独使用某一个功能
|
|
|
3.jieba和飞桨的关系处理没有很好的结合,各自分裂。
|
|
|
4.跟随最新的发展框架和API
|
|
|
```
|
|
|
|
|
|
## 官方手册
|
|
|
```html
|
|
|
https://www.paddlepaddle.org.cn/hub/scene/lexical
|
|
|
https://github.com/fxsjy/jieba
|
|
|
``` |
|
|
\ No newline at end of file |