法律领域中文分词

一、结果对比

1、jieba的分词效果

你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

2、训练模型的分词效果

在这里插入图片描述

3、自训练模型原因

如上所述,jieba分词在一般分词中效果还可以,但是在法律领域则不是那么准确,比如
下面展示一些 内联代码片

中级  人民法院

将中级人民法院拆开了,但是这不进行拆开应该会更好,法言法语中常常并不会“中级–停顿–人民法院,而是中级人民法院、基层人民法院、高级人民法院、最高人民法院”,这一修饰词并不会分开。当然也不是没有“人民法院”这样的词语,但这是在前面并没有“中级”这种修饰词的时候

中华人民共和国  刑事诉讼法

这也是一样的,”中华人民共和国刑事诉讼法“属于专有名词,两者不能进行切分

二、自训练模型难点

技术上没有什么问题,问题在于数据集,没有标准的数据集作为训练数据。
常用的数据集:PKU和MSRA的数据集

1、专业名词

这些常用的数据集无法关注一些专业的法律名词,比如

认罪认罚从宽制度、投放危险物质罪等


在这里插入图片描述

2、姓名隐去

裁判文书中的姓名常常会被隐去,当然也存在没有隐去的。
没有隐去的如上述展示,这些姓名并没有被隐去

 郭俊国、周凤啟  、  吴跃军  、  王贵安

但是大多数会隐去,形成下面这种样子

 其  妻子  林  某某  与  被害人  卢  某某 
 或者
 其  妻子  林  某甲  与  被害人  卢  某丙

而这在jieba分词中会被切开“林 /某某”,从而使得分词失准。
例如

3、模糊词语

有些词语的切分不好精确划分,受限于个人阅读习惯。例如

 定罪量刑,在词语标注时,有些人会更喜欢定罪 量刑
 事实清楚、证据确实、充分,有些人的阅读习惯会喜欢 事实 清楚、证据 确实、充分;但也有的人会喜欢 事实清楚、证据确实充分,将之作为专业名词对待
 

4、解决办法

针对1,2主要利用词典进行;
针对3则需要进行自行标注

三、自训练模型核心代码

# 初始化keras中的Embedding层权重
embedding = Embedding(input_dim=len(embeddings_matrix),
                  output_dim=Embedding_dim,
                  weights=[embeddings_matrix], # 预训练参数
                  trainable=False)



MAX_LEN = 60
VOCAB_SIZE = 4323#5029
EMBEDDING_OUT_DIM = 64
HIDDEN_UNITS = 64#隐藏层好像也是维度的一种
DROPOUT_RATE = 0.4
NUM_CLASS = 5


def bigru_crf_model():
    model = Sequential()
    model.add(embedding)  # Random embedding;加载word2vec
    model.add(Dropout(DROPOUT_RATE))
    model.add(Bidirectional(GRU(HIDDEN_UNITS//2, return_sequences=True, kernel_initializer='glorot_uniform', recurrent_dropout=0.5)))
    model.add(LeakyReLU(alpha=0.3))  # 有激活函数速度变快,但是也容易nan
    model.add(TimeDistributed(Dense(NUM_CLASS,activation="softmax")))
    #crf = CRF(NUM_CLASS, sparse_target=True,activation="softmax")#要用crf learn_mode='marginal',crf_loss需要sparse_target=False,sparse_target=True,则learn_mode没有
    #keras contrib的CRF层期望在学习模式下使用时CRF_丢失(默认模式)。如果你想使用任何其他的正态损失函数,比如crossentry,你应该在实例化时设置learn_mode='marginal'。
    #model.add(crf)
    model.summary()#crf_loss, metrics=['accuracy',crf_accuracy]
    model.compile(optimizer=Adam(lr=0.0001), loss='categorical_crossentropy', metrics=['accuracy'])
    return model
此处没有用crf层

最终效果上,虽然比jieba分词相对好一点,毕竟进行了微调,但是仍然不太合适;可能进一步进行语料标注会好一些。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值