Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
K
kb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • kb
  • Wiki
    • Code review
  • 20211028_裁判文书_文本解析

Last edited by fanzx Oct 28, 2021
Page history
This is an old version of this page. You can view the most recent version or browse the history.

20211028_裁判文书_文本解析

裁判文书解析代码

文本解析的目标

上诉人:    陕西雄风新能源有限公司
上诉人:    晋能控股山西电力股份有限公司
被上诉人:   中铁十七局集团第一工程有限公司

介入结果的自定义标签

开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。 虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率。 用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径

area:       地区(吴家窑乡)
areaend:    地区的结尾(**村)
address:    住址
birth:      出生
jianname:   以下简称
link:       连接关系的关键词(因与,对)
nation:     民族(汉族)
orgcode:    社会信用代码、注册号
other:      软件与服务
personcod:  身份证号码
hehuoorgan: 有限合伙
organ:      机构结尾词(**学校)
partorgan:      分公司分厂
standardorgan:  有限公司
judgement:      审判长
role:           一般角色
roledefendant:  被告
roleplaintiff:  原告
rolethird:      第三人
sintype:        案由

paddle模式词性和专名类别标签集合如下表,其中词性标签 24 个(小写字母),专名类别标签 4 个(大写字母)

标签	含义	标签	含义	标签	含义	标签	含义
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

字典树:识别机构的具体省份和地区码
court_name:陕西省高级人民法院
area_info:{'province_code': '610000', 'province': '陕西省'}

WenshuParser.structural_content

part1_list: 文书的审理法院、文书的类型、案号
part2_list: 涉及的的所有角色罗列
part3_list: 涉及的的主要角色案件概要

WenshuParser.get_parties

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

CaseParser(case_content).get_parties(need_person=False)

代码与技术演进

项目所用的基本分词代码:
>>> 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)

优点

1.结合分词工具进行二次开发,基本上达到了业务上的解析要求
2.将共性代码提取到wenshu_parse,并以类封装,可供其他业务借鉴。

缺点

1.二次开发应该以模型的方式单独成项,不断迭代优化
2.wenshu_parse内部的类应该单独成文件,并将每个字典树的应用单拎出来,利于其他人员单独使用某一个功能
3.jieba和飞桨的关系处理没有很好的结合,各自分裂。
4.跟随最新的发展框架和API

官方手册

https://www.paddlepaddle.org.cn/hub/scene/lexical
https://github.com/fxsjy/jieba
Clone repository
  • README
  • basic_guidelines
  • basic_guidelines
    • basic_guidelines
    • dev_guide
    • project_build
    • 开发流程
  • best_practice
  • best_practice
    • AlterTable
    • RDS
    • azkaban
    • create_table
    • design
    • elasticsearch
    • elasticsearch
      • ES运维
    • logstash
View All Pages