一种案件主体抽取方法与流程
未命名
08-15
阅读:104
评论:0

1.本发明涉及计算机人工智能领域,更具体地,涉及一种案件主体抽取方法。
背景技术:
2.在城市治理领域,使用人工智能技术自动发现热点事件,能够帮助监管部门及时处理相关事务,降低事件对社会的负面影响。如在市民投诉热线中,当较多市民投诉同一个事件时,相关政务部门如果能够及时处理好此事件,就能够防微杜渐,防止事态扩大化。在实际业务中,如何确定事件主体是案件分析中非常重要的一环。
技术实现要素:
3.本发明针对现有技术中存在的技术问题,提供一种案件主体抽取方法,包括:基于训练样本集对关键片段抽取模型进行训练,获取训练后的关键片段抽取模型,其中,所述训练样本集中包括多条样本数据,每一条所述样本数据包括实体文本和关键片段;分别基于paddlenlp的命名实体识别模型和基于paddlenlp的信息抽取模型提取案件语料库中每一条案件文本中的第一候选案件主体和第二候选案件主体,将所述第一候选案件主体和第二候选案件主体合并构成候选案件主体集合;基于训练后的关键片段抽取模型获取所述候选案件主体集合中每一条候选案件主体中的关键片段,将每一条候选案件主体和关键片段对应得到实体关键片段元组语料集;对所述实体关键片段元组语料集中的所有关键片段进行分箱处理,获得多个关键片段箱;基于有向图归并算法对每一个关键片段箱内的所有关键片段进行聚类,得到多个实体类别的关键片段;基于每一个实体类别中的每一个关键片段对应的候选案件主体,确定每一个识别类别的最终案件主体。
4.本发明提供的一种案件主体抽取方法,分别基于paddlenlp的命名实体识别模型和基于paddlenlp的信息抽取模型提取案件语料库中每一条案件文本中的候选案件主体,采用了两种不同的模型分别自动提取案件文本中的案件主体,提高了提取案件主体的自动化效率以及准确性;基于训练后的关键片段抽取模型获取每一个候选案件主体的关键片段;对所有关键片段进行分箱处理,获得多个关键片段箱;基于有向图归并算法对每一个关键片段箱内的所有关键片段进行聚类,得到多个实体类别的关键片段,提高了聚类效率。本发明方法能够自动从案件文本中提取出案件主体,并将指向同一个真实案件主体的不同描述归类统一,本方法能够减少案件信息抽取的人工支出,提高案件信息抽取的智能化、自动化程度。
附图说明
5.图1为本发明一个实施例提供的一种案件主体抽取方法流程图;图2为关键片段抽取模型的示意图;图3为使用paddlenlp工具抽取候选案件主体的示意图;图4为本发明另一个实施例提供的案件主体抽取流程示意图;图5为关键片段分箱示意图;图6为关键片段有向图归并算法示意图;图7为统一案件主体文本描述示意图。
具体实施方式
6.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,这种结合不受步骤先后次序和/或结构组成模式的约束,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
7.图1为本发明提供的一种案件主体抽取方法流程图,如图1所示,方法包括:s1,基于训练样本集对关键片段抽取模型进行训练,获取训练后的关键片段抽取模型,其中,所述训练样本集中包括多条样本数据,每一条所述样本数据包括实体文本和关键片段。
8.可理解的是,首先对预设的关键片段抽取模型进行训练,参见图2,关键片段抽取模型主要包括bert模型、bilstm层和crf层,关键片段抽取模型训练的具体过程包括:(1)获取训练样本集,训练样本集中包括多条样本数据,每一条样本数据的格式为[实体文本,关键片段]。
[0009]
例如,样本数据一[哈哈市快乐星球地信公司,快乐星球地信];样本数据二[哈哈开心投资有限公司,开心投资]。
[0010]
(2)对于每一个样本数据,使用bert模型将实体文本转换成字符编码向量entity_tensor,步骤如下:将样本数据的每个字使用bert分词器转换成相应的字编码,并在编码首尾加上特殊字符编码,构成实体文本的字编码向量。本发明中的bert模型为chinese-bert-wwm-extbert(bidirectional encoder representation from transformers)预训练模型。
[0011]
比如,实体文本“哈哈市快乐星球地信公司”,转换成字编码为:[101, 1506, 1506, 2356, 2571, 727, 3215, 4413, 1765, 928, 1062, 1385, 102]。其中101是特殊字符
‘
cls’的编码,102是特殊字符
‘
sep’的编码。对于每一个实体字向量,都会以编码“101”开头,编码“102”结尾。
[0012]
将实体文本的字编码向量输入bert模型,得到实体嵌入向量[e1,e2,e3…en
],其中n为字的个数。
[0013]
(3)将实体嵌入向量输入至bilstm网络得到语料片段发射概率矩阵emit_m,步骤如下:将实体嵌入向量输入bilstm网络,得到实体的隐层状态向量,再将隐层状态向量输入全连接层,得到发射概率矩阵emit_m。发射概率矩阵emit_m是一个tag_num*span_len维的矩阵,其中tag_num是标记的个数,本发明中标记的个数为5,即标记[o,b,i,e,s]的个数。span_len是实体中字向量的个数,本发明中的个数为实体文本字数+2,即实体文本字的个数与两个特殊字符的总和。
[0014]
将发射概率矩阵emit_m输入crf网络,基于发射概率矩阵和转移矩阵,计算得到正确标记序列分数和所有可能的标记序列的总分数,步骤如下:对于每一条样本数据,根据样本数据中的实体文本和关键片段,得到样本对应的正确标记序列。具体的,对于实体文本中的每个字,如果字不属于关键片段,则标记为o。如果字属于关键片段且关键片段字符数大于1,则将第一个字符标记为b,最后一个标记为e,其他字标记为i。如字符属于关键词且关键词字符数等于1,则将字符标记为s。将实体文本中每个字的序列按顺序组成序列,并在序列头部加上标记o,尾部也加上标记o,即两个特殊标记[cls]、[sep]对应的标记。组成得到样本对应的正确标记序列。
[0015]
例如,样本数据一[哈哈市快乐星球地信公司,快乐星球地信],得到的序列标记为[o,o,o,b,i,i,i,i,e,o,o],加上首尾标记字符后的序列标记为[o,o,o,o,b,i,i,i,i,e,o,o,o]。
[0016]
将发射概率矩阵emit_m输入crf网络,crf网络基于发射概率矩阵emit_m和转移矩阵trans_m,使用分数公式得到正确标记序列分数和所有可能的标记序列的总分数。其中正确标记序列指与样本的语料序列标记一样的序列,所有可能的标记序列指模型能产生的序列的总和,共计种序列,其中tag_num是标记集合中标记的个数, span_len是实体中字向量的个数。crf中的转移矩阵trans_m初始为随机赋值的矩阵,之后第s次训练trans_m中的值是第s-1次训练后调整的值。其中,每个标记序列的分数计算公式为:;式中,score(x,y)表示输入样本x,被标记成标记序列y的分数,其中表示预测标记序列y中第i个标记的发射概率值,p为整个预测标记序列y的长度,表示预测标记y中第i-1个标记转移到第i个标记的转移概率值。
[0017]
根据上述公式分别计算正确标记序列分数和所有可能的标记序列的总分数,根据正确标记序列分数和所有可能的标记序列的总分数,计算损失分数,其中,损失分数的计算公式为:;其中,表示对于输入样本x的正确标记序列分数。表示对于输入样本x任意可能的标记序列的分数,表示以自然指数e为底,标记序列的分数为指数,所有可能标记序列的累加和。表示对于输入样本x,正确标签序列为的损失分数。
[0018]
在基于训练样本集对关键片段抽取模型进行训练的过程中,关键片段抽取模型会多次遍历训练样本,每遍历一次训练样本后, 使用梯度下降法修改更新关键片段抽取模型
的参数,其中,模型的参数包括模型本身的网络结构参数以及上述的转移矩阵。然后使用验证样本测试模型的准确率,关键片段抽取模型训练阶段会选择验证正确率最高,即损失分数最低的一个参数版本作为最终训练好的关键片段抽取模型。
[0019]
s2,分别基于paddlenlp的命名实体识别模型和基于paddlenlp的信息抽取模型提取案件语料库中每一条案件文本中的第一候选案件主体和第二候选案件主体,将所述第一候选案件主体和第二候选案件主体合并构成候选案件主体集合。
[0020]
作为实施例,所述分别基于paddlenlp的命名实体识别模型和基于paddlenlp的信息抽取模型提取案件语料库中每一条案件文本中的第一候选案件主体和第二候选案件主体,包括:获取案件语料库,所述案件语料库中包括多个案件文本,每一个所述案件文本描述了一个案件,一个案件中包含一个或多个案件主体;将所述案件语料库中的每一条案件文本输入基于paddlenlp的命名实体识别模型,获取多个第一输出结果,每个第一输出结果的结构为[实体文本片段,标记],获取标记为第一指定标记值的第一输出结果作为第一候选案件主体;将所述案件语料库中的每一条案件文本输入基于paddlenlp的信息抽取模型,获取多个第二输出结果,每个第二输出结果的结构为[实体文本片段,标记],获取标记为第二指定标记值的第二输出结果作为第二候选案件主体。
[0021]
可理解的是,图3为根据案件文本提取候选案件主体的流程示意图,具体提取过程为,输入案件语料,案件语料是由多个的案件文本组成,每个案件文本描述了一个案件,案件可能会包含一个或多个案件主体,或没有包含主体。
[0022]
如:案件1“我要投诉开心街快乐星球有限公司拖欠我5个月的工资没有发”,可能提取的案件主体包括“快乐星球”,“开心街”,“快乐星球有限公司”。
[0023]
案件2“拖欠我5个月的工资没有发,请有关部门处理”,可能没有案件主体。
[0024]
使用paddlenlp自然语言处理工具处理每一条案件文本,提取案件文本对应的案件主体,分别基于两种不同的模型提取每一条案件文本对应的案件主体,具体如下:对于每一条案件文本,使用paddlenlp的命名实体识别模型,其中设置模型参数mode值为fast。模型的输出结果有多个,每个输出结果的结构为[实体文本片段,标记],本发明只筛选被标记为org,loc的输出结果,作为候选主体。其中标记为org表示机构名,loc表示地名。
[0025]
如文本“"三亚是一个美丽的城市",命名实体识别模型内置24种词性和专名类别标签,一种可能的提取结果是[('三亚', 'loc'), ('是', 'v'), ('一个', 'm'), ('美丽', 'a'), ('的', 'u'), ('城市', 'n')],本发明只筛选('三亚', 'loc')作为提取结果。
[0026]
对于每一条案件文本,使用paddlenlp的信息抽取模型抽取实体信息,其中设置模型的相关信息关键词为“公司”。模型的输出结果有多个,每个输出结果的结构为[实体文本片段,标记],本发明只筛选标记中含有文本“组织机构类”且不包含文本“概念”的输出结果,作为候选主体。
[0027]
如:案件1“我要投诉开心街快乐星球有限公司拖欠我5个月的工资没有发”,信息抽取模型内置93种词性和专名类别标签,一种可能的提取结果是[('快乐星球有限公司', '组织机构类'), ('有限公司', '组织机构类_概念'), ('公司', '组织机构类_概念'))] ,本发明只筛选(('快乐星球有限公司', '组织机构类'')作为提取结果。
[0028]
将采用两种模型提取的候选主体作为候选案件主体,所有候选案件主体的实体文本片段共同构成候选实体语料。
[0029]
s3,基于训练后的关键片段抽取模型获取所述候选案件主体集合中每一条候选案件主体中的关键片段,将每一条候选案件主体和关键片段对应得到实体关键片段元组语料集。
[0030]
可理解的是,可参见图4,对于s2提取的每一个候选案件主体,利用训练后的关键片段抽取模型提取候选案件主体中的关键片段。具体的,对于每个候选案件主体,得到候选案件主体的标记序列。抽取阶段从输入候选案件主体到得到其对应的预测标记序列,与训练阶段一致。标记序列去除头尾的各1个标记,然后将所有非o标记的位置的字取出来,作为这个候选案件主体对应的关键片段。
[0031]
如实体文本“哈哈市快乐星球地信公司”,输入模型后得到标记序列为[o,o,o,o,b,i,i,i,i,e,o,o,o],去除头尾标记,得到[o,o,o,b,i,i,i,i,e,o,o]将非o标记的字取出,得到关键片段“快乐星球地信”。
[0032]
向训练后的关键片段抽取模型中输入候选案件主体,如果得到的关键片段与样本数据的关键片段不一致,则表示未命中,如果一致则表示命中,命中总数除以验证样本总数即为模型的准确率。
[0033]
如果关键片段抽取模型推断出的关键片段为空,则删除这个候选案件文本;如果关键片段抽取模型推断出的关键片段不为空,则将得到的关键片段,与候选案件主体组合得到实体关键片段元组,每一个实体关键片段元组由[候选案件文本,关键片段]组成。
[0034]
如候选案件主体文本“哈哈市快乐星球地信公司”,与关键片段“快乐星球地信”,组成实体关键片段元组[哈哈市快乐星球地信公司, 快乐星球地信];如实体文本“哈哈市”,经模型提取后的关键片段为空(即预测序列为[o,o,o,o,o]),则删除实体文本“哈哈市”。
[0035]
将得到的所有关键片段组成关键片段语料key_corpus,并对key_corpus做去重处理。如实体文本“哈哈市快乐星球地信公司”与实体文本“快乐星球地信公司”的关键片段可能都是
ꢀ“
快乐星球地信”,则对两个关键片段进行去重处理。所有的实体关键片段元组共同构成实体关键片段元组语料集。
[0036]
对于实体关键片段元组语料集中的所有关键片段,使用停用词字典,去掉key_corpus中包含停用词的关键片段。
[0037]
如实体文本“哈哈街派出所”,“居委会”,由于在不同的案件领域,有些组织机构是调停或处理机构,会大量出现在案件中,因此要把这一类组织机构作为停用词去除,减少案件主体抽取的噪音。
[0038]
s4,对所述实体关键片段元组语料集中的所有关键片段进行分箱处理,获得多个关键片段箱。
[0039]
作为实施例,对所述实体关键片段元组语料集中的所有关键片段进行分箱处理,获得多个关键片段箱,包括:创建空的二阶索引表,所述二阶索引表的根节点为root;将所述实体关键片段元组语料集中的每一个关键片段中的每一个字排列组合生成多个由2个字组成的字节;基于生成的字节生成二阶索引表,所述二阶索引表中包括一阶索引和二阶索引,其中,所述二阶索引表中每个二阶索引下的多个关键片段构成一个关键片段箱。
[0040]
可理解的是,对于s3中提取的所有的关键片段,基于二阶索引表进行分箱处理。具体的,对关键片段进行分箱处理的流程包括:生成一个空的二阶索引表,索引表的根节点为root。将片段语料key_corpus中每一个关键片段做如下操作:将关键片段中的字排列组合生成多个由2个字组成的字节,且字节中的两个字的先后顺序与在关键片段中的先后顺序一致。当关键片段少于两个字时,直接丢弃关键片段。
[0041]
比如,关键片段“千科发展”,则生成多个字节:[千科,千发,千展,科发,科展,发展]。假设关键片段“千科”,则生成字节:[千科]。比如关键片段“科”,则直接丢弃。
[0042]
根据生成的字节在二阶索引表中生成相关信息,生成规则如下:在二阶索引表中的一阶索引查找字节的第一个字,如果没有找到,则在root节点下生成以第一个字为键的一阶索引,以第二个字为键的二阶索引,并将关键片段挂到二阶索引下。如果找到,则在二阶索引表中的二阶索引查找字节的第二个字,如果没找到则在此一阶索引下生成以第二个字为键的二阶索引,并将关键片段挂到二阶索引下。如果找到,则直接将关键片段挂在二阶索引下。
[0043]
以具体的例子对本发明的关键片段分箱处理的流程进行说明,如图5,包括以下步骤:第一步,输入关键片段“科发”,生成字节[科发],对于字节科发,在二阶索引表的一阶索引中查找“科”,未找到;故生成一阶索引“科”,在其下生成二阶索引“发”,并将关键片段挂到二阶索引下。
[0044]
第二步,输入关键片段“千科发展”,生成字节[千科,千发,千展,科发,科展,发展]。对于字节千科,在二阶索引表的一阶索引中查找“千”,未找到;故生成一阶索引“千”,在其下生成二阶索引“科”,并将关键片段挂到二阶索引“科”下。
[0045]
对于字节千发,在二阶索引表的一阶索引中查找“千”,找到;在其下查找二阶索引“发”,未找到,故在一阶索引“千”下生成二阶索引“发”,并将关键片段挂到二阶索引“发”下。
[0046]
对于字节千展,在二阶索引表的一阶索引中查找“千”,找到;在其下查找二阶索引“展”,未找到,故在一阶索引“千”下生成二阶索引“展”,并将关键片段挂到二阶索引“展”下。
[0047]
对于字节科发,在二阶索引表的一阶索引中查找“科”,找到;在其下查找二阶索引“发”,找到;故将关键片段挂到二阶索引“发”下。
[0048]
对于字节科展,在二阶索引表的一阶索引中查找“科”,找到;在其下查找二阶索引“展”,未找到,故在一阶索引“科”下生成二阶索引“展”,并将关键片段挂到二阶索引“展”下。
[0049]
对于字节发展,在二阶索引表的一阶索引中查找“发”,未找到;故生成一阶索引“发”,在其下生成二阶索引“展”,并将关键片段挂到二阶索引“展”下。
[0050]
…
第七步,输入关键片段“千科”,生成字节[千科],对于字节千科,在二阶索引表的一阶索引中查找“千”,找到;在其下查找二阶索引“科”,找到;故将关键片段挂到二阶索引“科”下。
[0051]
结束分箱处理流程,二阶索引表中每个二阶索引下的多个片段构成一个关键片段
箱。比如,二阶索引表中,一阶索引“科”的二阶索引“发”下关键片段箱包含[“科发”,“千科发展”,“千科发展有限公司”,“科发厅”,“科技发展厅”];二阶索引表中,一阶索引“限”,二阶索引“公”下关键片段箱包含[“千科发展有限公司”]。
[0052]
其中,需要说明的是,对于关键片段数量超过max_num的关键片段箱,直接丢弃所有关键片段,设置关键片段箱为空,其中max_num可自主设定。
[0053]
比如,对于图5中,假设max_num=4,则二阶索引表中一阶索引“科”的二阶索引“发”下的关键片段箱直接清空。这么做的目的是提高算法的运行效率,因为分箱有向图归并算法的效率提升关键在于“最大分箱的个数”。
[0054]
假设关键片段总数量为10万个。
[0055]
当max_num = 1万时,最大匹配次数为:10000*10000/2 *10 = 5*108;当max_num = 1000时,最大匹配次数为:1000*1000/2 *100 = 5*107;当max_num = 100时,最大匹配次数为:100*100/2 *1000 = 5*106;当某个分箱的关键片段过多时,说明这个索引过于常见,比如索引一阶索引“武”和二阶索引“汉”,那么对于虚拟关键片段“武汉甲乙大学”,“武汉丙三院”,“武汉哈哈天地”等都会被分到这个索引下,会额外增加很多无意义的比较,降低匹配效率。
[0056]
s5,基于有向图归并算法对每一个关键片段箱内的所有关键片段进行聚类,得到多个实体类别的关键片段。
[0057]
可理解的是,对于每一个关键片段箱,按照实体类别进行聚类。作为实施例,所述基于有向图归并算法对每一个关键片段箱内的所有关键片段进行聚类,得到多个实体类别的关键片段,包括:创建一个空的已匹配字典和一个空的有向图;基于二阶索引表中的每一个关键片段箱生成有向图信息;基于生成的有向图信息,对每一个关键片段箱中的所有关键片段按照不同实体类别进行聚类,得到多个实体类别的关键片段。
[0058]
具体的,使用有向图归并算法对关键片段箱聚类,包括:生成一个空的已匹配字典和一个空的有向图key_map。
[0059]
将二阶索引表中每个关键片段箱按以下方式生成有向图信息:每个关键片段作为一个节点node,并赋予其实体类别属性,每一个节点的初始实体类别为自身关键片段;遍历所有节点,将每个节点与其它节点有且仅有一次进行比较,如果nodei包含nodej的所有字,则nodei与nodej连接一条边,并且nodei的入度+1,nodej的出度+1;其中,nodei为nodej的弧头,nodej为nodei弧尾,即nodej指向nodei,i,j为不同的节点编号。
[0060]
例如,假设关键片段语料为[科发,千科发展,千科公司,千克发展有限公司,科发厅,科技发展厅,千科],且节点1表示科发,节点2表示千科发展,其他节点如图6所示。
[0061]
以节点1为例,节点4,节点2,节点5,节点6都包含节点1的所有字,因此节点1的出度为4,而节点4,2,5,6各自入度加1。以节点7为例,节点2,4,3都包含节点7的所有字,因此节点7的出度为3。最终构成的有向图如图6。
[0062]
在将每一个节点与其它节点进行比较时,根据比较的两个节点生成键a和键b,键a的结构形式为[比较节点1的关键片段,比较节点2的关键片段],键b的结构形式为[比较节点2的关键片段,比较节点1的关键片段]。从已匹配字典中查找键a和键b,如果至少找到一个,则不进行节点比较;如果两个键均没有找到,则进行节点比较,并在已匹配字典中添加
键值对。
[0063]
比如,假设已经完成二阶索引表中一阶索引“科”,二阶索引“展”下的关键片段箱匹配。此时已匹配字典中的信息有{(千科发展,千科发展有限公司):1, (千科发展,科技发展厅):1, (千科发展有限公司,科技发展厅):1}。
[0064]
当开始对二阶索引表中一阶索引“科”,二阶索引“发”下的关键片段箱进行匹配时。对于多个关键片段[千科发展,千科发展有限公司,科技发展厅,科发,科发厅]之间需要一一比较,但由于已匹配字典中有了部分关键片段之间比较信息,因此实际上无需全部一一比较。如“千科发展”与“科技发展厅”已经做过比较。
[0065]
基于生成的有向图,对所有的关键片段进行聚类,对有向图key_map做如下操作:遍历所有节点,对于出度为0的所有节点,设置实体类别值为自身关键片段。遍历所有入度大于0的节点,对于所有出度为1的节点,对自身的实体类别值,赋值为其弧头节点的实体类别值。如nodei的出度为1,并指向nodej,即nodej为nodei弧头,nodej此时的实体类别为nodek,则nodei也将自己的实体类别赋值为nodek,并将其出度-1。遍历所有入度大于0的节点,对于节点检查其每个弧头节点,如果弧头节点的实体类别值也是本节点的弧头节点,则删除此弧头节点,并将此节点的出度-1。重复上述步骤,直至有向图遍历所有节点没有变化时停止,那么每一个关键片段均对应有一个实体类别值。
[0066]
其中,需要说明的是,对所有的关键片段进行分箱处理,能够提升案件主体对其的效率,具体体现在:对于字典中键的查找,以及二阶索引表中索引查找,时间复杂度都是o(1),也就是字典中找到对应键只需1次操作,因为字典的键,以及索引表中的索引结构都是哈希的;二阶索引表查找一阶需要一次操作,查找二阶需要一次操作,那么查找某个关键片段箱只需2次操作。
[0067]
而字符串匹配往往需要很多次操作,比如“千科”与“科技发展厅”需要操作至少5次,“千科公司”与“千科发展有限公司”需要操作至少8次。字符串比较相比索引查找操作要超出很多倍,而且字符串越长,比较次数越多,而索引查找是固定的1次或2次。
[0068]
其中,在不使用分箱匹配的情况下,图5中的7个实体要一一比较,需要比较7*6/2=21次,在使用分箱匹配的情况下,图5中的7个实体索引“科发”下的关键片段需要匹配5*4/2=10次,索引“科展”下的关键片段匹配0次,索引“科公”下的关键片段匹配1次,索引“科司”下的关键片段匹配0次,
…
,总计需要匹配16次,相比不使用分箱匹配减少了21-16=5次。
[0069]
假设通常不分箱情况下,10万个实体要做105*105/2=5*109次字符串比较。在分箱匹配的情况下,假设每个二阶索引表的最大容积为1000(超过一千的直接丢弃),每个分箱的匹配次数:1000*1000/2 =5*105次匹配,共计最多有:100000/1000=100个分箱。总匹配次数最高不超过:5*105*100=5*10
7,
相较于不分箱,效率提高了100倍。
[0070]
如图6所示,对每一个关键片段箱中的所有关键片段进行聚类的步骤包括:第一步,找到出度为0的2个节点,节点4,节点6,并将它们的实体类别赋值为自己,即节点4赋值为“千科发展有限公司”,节点6赋值为“科技发展厅”。
[0071]
第二步,找到出度为1的节点,其中:节点3的出度为1,则将节点3的实体类别赋值为“千科发展有限公司”,出度-1;节点2的出度为1,则将节点2的实体类别赋值为“千科发展有限公司”,出度-1;节点5的出度为1,则将节点5的实体类别赋值为“科技发展厅”,出度-1。
[0072]
第三步,节点7有三个弧头节点,节点2,3,4,因为节点2的实体类别为节点4,而节点4也属于节点7的弧头,所以删除节点2这个弧头,并且入度-1;节点3和节点2类似,也是删除节点3这个弧头,并且出度-1;此时节点7的弧头节点只有1个,出度也为1。
[0073]
节点1有四个弧头节点,和节点7操作类似,可以删除弧头节点2,弧头节点5,出度由4变成2。
[0074]
此时,如图6中的阶段2所示。
[0075]
第四步,节点7的出度为1,则将节点7的实体类别赋值为“千科发展有限公司”。
[0076]
第五步,没有节点发生变化。
[0077]
第六步,没有节点发生变化。
[0078]
第七步,没有节点发生变化。
[0079]
此时第五步、第六步和第七步,有向图没有变化,如图6中的阶段3所示,停止算法。
[0080]
最终,节点2,3,4,7的实体类别都为“千科发展有限公司”,节点5,6的实体类别都为“科技发展厅”,节点1的实体类别为“科发”。
[0081]
对于实体关键片段元组语料集中的每一个实体关键片段元组,查找其关键片段在有向图中对应的节点,并将关键片段替换成对应节点的实体类别值。
[0082]
比如,实体关键片段元组[哈哈市千科股份公司,千科],其关键片段所在节点的实体类别值为“千科发展有限公司”,因此将其关键片段改为“千科发展有限公司”。改完之后的实体关键片段元组为:[哈哈市千科股份公司,千科发展有限公司]。
[0083]
遍历实体关键片段元组语料集,将关键片段相同的实体关键片段元组中的候选案件文本聚为一类,并标记类的关键片段;关键片段唯一的则将其候选案件文本单独作为一类,并标记类的关键片段。
[0084]
将最终已经聚类好的多个实体类输出,例如,实体关键片段元组[哈哈市千科股份公司,千科发展有限公司],[哈哈市科发公司,科发] ,[哈哈千科发展,千科发展有限公司],经操作之后,[哈哈市千科股份公司,哈哈千科发展]为一类,[哈哈市科发公司]为一类。最终的输出结果为:[[哈哈市千科股份公司,哈哈千科发展],[哈哈市科发公司]],即输出多个实体类。
[0085]
s6,基于每一个实体类别中的每一个关键片段对应的候选案件主体,确定每一个识别类别的最终案件主体。
[0086]
作为实施例,所述基于每一个实体类别中的每一个关键片段对应的候选案件主体,确定每一个实体类别的最终案件主体,包括:对于任一个实体类别下的多个关键片段,获取每一个关键片段对应的候选案件主体;从多个候选案件主体中选取没有前缀且字符数最多的候选案件主体作为所述任一个实体类别下的最终案件主体。
[0087]
可理解的是,基于s5输出的实体类,找到每个类中每个候选案件主体的实体关键片段元组,并筛选出第三候选案件主体,具体为,对于每一个实体类别,找到对应的实体关键片段元组,找到每一个候选案件主体对应的关键片段,构成[候选案件主体,关键片段],如图7所示。
[0088]
比如,关键片段为“千科发展实业”的同一类[快乐街千科公司,千科实业公司,快乐街千科发展实业],替换为[(快乐街千科公司,千科公司), (千科实业公司,千科实业), (快乐街千科发展实业,千科实业发展)]。
[0089] 对于每一实体类别中的所有的候选案件主体,选择没有前缀的候选案件主体以及关键片段作为第三候选案件主体。没有前缀的定义为:候选案件主体从第一个字符开始的前n个字符与关键片段一致。
[0090]
如:(快乐街千科公司,千科公司)就是有前缀的,前缀为“快乐街”(千科实业公司,千科实业)就是没有后缀的。
[0091]
在第三候选案件主体中,选择字符最多的候选案件主体为类最终案件主体。对于每一个案件文本,将从案件文本中提取出的多个案件主体,替换为对应的类最终案件主体,并将重复的类案件主体剔除。
[0092]
比如,案件文本“我要投诉开心街千科公司拖欠我5个月的工资没有发,注册企业是千科实业公司”,提取的案件主体有[开心街千科公司,千科实业公司],替换为类最终案件主体后为[千科实业发展公司,千科实业发展公司],去重后为[千科实业发展公司]。
[0093]
其中,如果案件文本没有对应的类最终案件主体,输出[案件文本,空值];如果案件只有一个类最终案件主体,输出[案件文本,最终案件主体];如果案件有多个对应的最终案件主体,则对于每个类最终案件主体,一一以[案件文本,最终案件主体]格式输出。
[0094]
比如案件文本“我要投诉开心街千科公司,我在千科花园装修,拖欠我5个月的工资没有发”,提取的实体有[开心街千科公司,千科实业公司],转出成类最终主体后为[千科实业发展公司,千科花园]最后的输出为[“我要投诉开心街千科公司,我在千科花园装修,拖欠我5个月的工资没有发”,开心街千科公司],[“我要投诉开心街千科公司,我在千科花园装修,拖欠我5个月的工资没有发
”ꢀ
,千科花园]。
[0095]
所有案件文本均采用上述的方式抽取其中的案件主体,并确定最终案件主体,输出结果构成案件主体抽取的最终结果。
[0096]
本发明提供一种案件主体抽取方法,在案件主体提取阶段,使用paddlenlp自然语言处理工具提取案件主体文本,提高了案件主体的召回率。在主体对齐阶段,抽取关键片段,并使用分箱匹配的方法,对关键片段进行匹配,最后将案件主体聚类对齐,提高了主体对齐匹配的准确率和匹配效率。综上,本发明方法,案件主体抽取的准确率和召回率更高,并且在大数据情景下匹配效率更高。
[0097]
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
[0098]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0099]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0100]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0101]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0102]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0103]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
技术特征:
1.一种案件主体抽取方法,其特征在于,包括:基于训练样本集对关键片段抽取模型进行训练,获取训练后的关键片段抽取模型,其中,所述训练样本集中包括多条样本数据,每一条所述样本数据包括实体文本和关键片段;分别基于paddlenlp的命名实体识别模型和基于paddlenlp的信息抽取模型提取案件语料库中每一条案件文本中的第一候选案件主体和第二候选案件主体,将所述第一候选案件主体和第二候选案件主体合并构成候选案件主体集合;基于训练后的关键片段抽取模型获取所述候选案件主体集合中每一条候选案件主体中的关键片段,将每一条候选案件主体和关键片段对应得到实体关键片段元组语料集;对所述实体关键片段元组语料集中的所有关键片段进行分箱处理,获得多个关键片段箱;基于有向图归并算法对每一个关键片段箱内的所有关键片段进行聚类,得到多个实体类别的关键片段;基于每一个实体类别中的每一个关键片段对应的候选案件主体,确定每一个识别类别的最终案件主体。2.根据权利要求1所述的案件主体抽取方法,其特征在于,所述分别基于paddlenlp的命名实体识别模型和基于paddlenlp的信息抽取模型提取案件语料库中每一条案件文本中的第一候选案件主体和第二候选案件主体,包括:获取案件语料库,所述案件语料库中包括多个案件文本,每一个所述案件文本描述了一个案件,一个案件中包含一个或多个案件主体;将所述案件语料库中的每一条案件文本输入基于paddlenlp的命名实体识别模型,获取多个第一输出结果,每个第一输出结果的结构为[实体文本片段,标记],获取标记为第一指定标记值的第一输出结果作为第一候选案件主体;将所述案件语料库中的每一条案件文本输入基于paddlenlp的信息抽取模型,获取多个第二输出结果,每个第二输出结果的结构为[实体文本片段,标记],获取标记为第二指定标记值的第二输出结果作为第二候选案件主体。3.根据权利要求1所述的案件主体抽取方法,其特征在于,所述将每一条候选案件主体和关键片段对应得到实体关键片段元组语料集,包括:若所述关键片段抽取模型输出的关键片段为空,则删除对应的候选案件主体;若所述关键片段抽取模型输出的关键片段不为空,则将关键片段与对应的候选案件主体组合构成实体关键片段元组,其结构形式为[候选案件主体,关键片段],所有的实体关键片段元组构成实体关键片段元组语料集;对所述实体关键片段元组语料集中的所有实体关键片段元组进行去重处理,以及删除包括停用词的关键片段。4.根据权利要求3所述的案件主体抽取方法,其特征在于,所述对所述实体关键片段元组语料集中的所有关键片段进行分箱处理,获得多个关键片段箱,包括:创建空的二阶索引表,所述二阶索引表的根节点为root;将所述实体关键片段元组语料集中的每一个关键片段中的每一个字排列组合生成多个由2个字组成的字节;基于生成的字节生成二阶索引表,所述二阶索引表中包括一阶索引和二阶索引,其中,
所述二阶索引表中每个二阶索引下的多个关键片段构成一个关键片段箱。5.根据权利要求4所述的案件主体抽取方法,其特征在于,每一个所述字节中的两个字的先后顺序与在关键片段中的先后顺序一致,且当关键片段少于两个字时,丢弃关键片段。6.根据权利要求4所述的案件主体抽取方法,其特征在于,所述基于生成的字节生成二阶索引表,包括:对于任一个字节,在所述二阶索引表中的一阶索引查找所述任一个字节的第一个字,如果没有找到第一个字,则在root节点下生成以第一个字为键的一阶索引,以第二个字为键的二阶索引,并将关键片段挂到二阶索引下;如果找到第一个字,在二阶索引表中的二阶索引查找所述任一个字节的第二个字,如果没找到第二个字,则在一阶索引下生成以第二个字为键的二阶索引,并将关键片段挂到二阶索引下;如果找到第二个字,则直接将关键片段挂在二阶索引下。7.根据权利要求6所述的案件主体抽取方法,其特征在于,所述基于有向图归并算法对每一个关键片段箱内的所有关键片段进行聚类,得到多个实体类别的关键片段,包括:创建一个空的已匹配字典和一个空的有向图;基于二阶索引表中的每一个关键片段箱生成有向图信息;基于生成的有向图信息,对每一个关键片段箱中的所有关键片段按照不同实体类别进行聚类,得到多个实体类别的关键片段。8.根据权利要求7所述的案件主体抽取方法,其特征在于,所述基于二阶索引表中的每一个关键片段箱生成有向图信息,包括:每个关键片段作为一个节点node,并赋予其实体类别属性,每一个节点的初始实体类别为自身关键片段;遍历所有节点,将每个节点与其它节点有且仅有一次进行比较,如果node
i
包含node
j
的所有字,则node
i
与node
j
连接一条边,并且node
i
的入度+1,node
j
的出度+1;其中,node
i
为node
j
的弧头,node
j
为node
i
弧尾,即node
j
指向node
i
,i,j为不同的节点编号;其中,在将每一个节点与其它节点进行比较时,根据比较的两个节点生成键a和键b,键a的结构形式为[比较节点1的关键片段,比较节点2的关键片段],键b的结构形式为[比较节点2的关键片段,比较节点1的关键片段];从已匹配字典中查找键a和键b,如果至少找到一个,则不进行节点比较;如果两个键均没有找到,则进行节点比较,并在已匹配字典中添加键值对。9.根据权利要求8所述的案件主体抽取方法,其特征在于,所述基于生成的有向图信息,对每一个关键片段箱中的所有关键片段按照不同实体类别进行聚类,得到多个实体类别的关键片段,包括:遍历有向图中的所有节点,对于所有出度为0的节点,将关键片段设置为自身的实体类别值;若节点的入度大于0且出度为1,将实体类别值赋值为其弧头节点的实体类别值,且将其出度-1;对于入度大于0的节点,在有向图中找到每一个节点的弧头节点,如果所述弧头节点的实体类别值与本节点的实体类别值一致,则删除所述弧头节点,并将本节点的出度-1;
遍历有向图中的所有节点,直到所有节点的实体类别值不变,获取每一个节点对应的实体类别值,即获取每一个关键片段对应的实体类别值;将相同实体类别值的所有关键片段聚为一类,得到多个实体类别的关键片段。10.根据权利要求1或3或8所述的案件主体抽取方法,其特征在于,所述基于每一个实体类别中的每一个关键片段对应的候选案件主体,确定每一个实体类别的最终案件主体,包括:对于任一个实体类别下的多个关键片段,获取每一个关键片段对应的候选案件主体;从多个候选案件主体中选取没有前缀且字符数最多的候选案件主体作为所述任一个实体类别下的最终案件主体。
技术总结
本发明提供一种案件主体抽取方法,包括:分别基于PaddleNLP的命名实体识别模型和信息抽取模型提取案件语料库中每一条案件文本中的候选案件主体,基于训练后的关键片段抽取模型获取每一个候选案件主体的关键片段;对所有关键片段进行分箱处理,获得多个关键片段箱;基于有向图归并算法对每一个关键片段箱内的所有关键片段进行聚类,得到多个实体类别的关键片段;基于每一个实体类别中的每一个关键片段对应的候选案件主体,确定每一个识别类别的最终案件主体。本发明方法能够自动从案件文本中提取出案件主体,并将指向同一个真实案件主体的不同描述归类统一,本方法能够减少案件信息抽取的人工支出,提高案件信息抽取的智能化、自动化程度。自动化程度。自动化程度。
技术研发人员:段春先 杨伊态 许继伟 赵舞玲 付卓 王敬佩 李颖 黄亚林 张兆文 陈胜鹏
受保护的技术使用者:吉奥时空信息技术股份有限公司
技术研发日:2023.07.12
技术公布日:2023/8/13

版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/