分词方法及分词器、命名实体识别方法及系统与流程

文档序号:19829922发布日期:2020-02-04 12:18阅读:391来源:国知局
分词方法及分词器、命名实体识别方法及系统与流程

本发明涉及自然语言处理技术领域,特别涉及一种分词方法及分词器、命名实体识别方法及系统。



背景技术:

自然语言处理(nlp)是计算机科学领域与人工智能领域中的一个重要方向,通常包括语句分类、信息抽取、自动摘要、实体识别等分支。

分词作为自然语言处理技术的基础,是指将连续的字符序列按照一定的规范分割合成词序列的过程。英文在书写时通过空格对词汇进行分割,因此可以直接根据空格对其进行分词,而中文通常可以根据特殊符号对字、句和段落进行分割,但是对词没有一个形式上的分隔符。因此,中文分词相比英文分词,会更有难度。

当前的分词技术通常包括基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。这些分词方法的一个共同特性就是尽可能的将一个语句分成更多的词,这样就导致在分词的过程中,难免产生分词错误的现象,特别是针对一些未登录词(即未在词典中出现的词),而分词的错误会进一步对后续nlp任务产生影响,例如会导致命名实体识别应用中不能准确地识别出命名实体。



技术实现要素:

本发明的目的在于改善现有技术中所存在的分词准确性不高的不足,提供一种分词方法及分词器,以及应用该分词方法的命名实体识别方法及系统,以提高分词结果的准确性。

为了实现上述发明目的,本发明实施例提供了以下技术方案:

一种分词方法,包括以下步骤:

构建词典;

基于所述词典,将待分词语句生成前缀树,进行词图扫描,生成所有可能成词情况所构成的有向无环图;

采用动态规划查找最大概率路径方法,找出基于词频的最大切分组合;

对于待分词语句中不存在于所述词典中的未登录词,按照字符进行分词,将未登录词分割为若干个字。

另一方面,本发明实施例提供了一种分词器,包括词典构建模块、有向无环图生成模块、切分组合模块和字符分割模块;其中,

所述词典构建模块用于构建词典;

所述有向无环图生成模块用于基于所述词典,将待分词语句生成前缀树并进行词图扫描,生成所有可能成词情况所构成的有向无环图;

所述切分组合模块用于采用动态规划查找最大概率路径方法,找出基于词频的最大切分组合;

所述字符分割模块用于对于待分词语句中不存在于所述词典中的未登录词,按照字符进行分词,将未登录词分割为若干个字。

另一方面,本发明实施例提供了一种命名实体识别方法,包括以下步骤:

按照前述分词方法,对待识别语句进行分词,得到分词后的词序列;

将所述词序列输入预先训练的基于词序列的ner模型,输出得到识别结果。

另一方面,本发明实施例还提供了一种命名实体识别系统,包括:

本发明实施例提供的分词器,用于对语句进行分词,得到分词后的词序列;所述语句包括待识别语句以及模型训练时使用的语料、标注样本;

模型训练模块,用于训练得到基于词序列的ner模型;

识别模块,用于将待识别语句经分词后得到的词序列输入所述基于词序列的ner模型,输出得到识别结果。

再一方面,本发明实施例同时提供了一种电子设备,包括:存储器,存储程序指令;处理器,与所述存储器相连接,执行存储器中的程序指令,实现本发明实施例中所述方法中的步骤。

与现有技术相比,本发明针对分词,提出一种新的分词思路,尽可能保证分词的准确性,即对分词没有歧义的地方尽可能的分词,以减小输入序列长度,对于分词有歧义的地方,特别是针对未登录词,对其进行碎片化处理,直接采用字序列进行表示,避免因分词错误对后续ner任务产生影响。针对bert这样的参数较多的大规模语言模型,通过将输入由字序列变换为词序列,降低计算过程中显存占用量。因此,本发明一方面可以提高命名实体识别的效率,另一方面也可以提高识别的准确性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为实施例1中所述的分词方法的流程图。

图2为实施例1中所述分词系统的组成框图。

图3为实施例2中命名实体识别方法的流程图。

图4为实施例2中所述基于词序列的ner模型训练流程图。

图5为两种方法在不同参数下的显存占用对比图。

图6为两种方法的输入矩阵大小对比图。

图7为实施例2中所述命名实体识别系统的示意框图。

图8为实施例中所述的电子设备的组成框图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

如图1所示,本实施例中示意性地提供了一种分词方法,包括以下步骤:

步骤1(图中的s1),构建词典。

本实施例提供的分词方法尤其适用于中文语句分词,因此此处构建的是一个中文的分词器。jieba是一个经常使用的中文分词工具,这里直接采用jieba的词典作为分词器的词典,并把一些并不常用的词汇删除,尽可能保留正确且常用的词汇,以减小分词器的容量。当然地,简要操作中也可以直接采用jieba的词典作为分词器的词典,而不做任何处理。

步骤2,基于步骤1中构建的词典,将待分词语句生成前缀树(trie树),实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(dag)。

词典在生成trie树的同时,会把每个词的出现次数转换为频率。trie树结构的词图扫描,就是把词典中词语放到一个trie树中,一个词语的前面几个字一样,就表示他们具有相同的前缀,就可以使用trie树来存储,具有查找速度快的优势。也就是将待分词语句(由一个或多个语句组成)中的句子根据给定的词典进行查词典操作,生成所有可能的句子切分。前缀树的生成及词图扫描都采用的是现有技术,故此处对此过程不做细述。

以“他已赢回主帅信任”这句话为例,构建的dag为:{0:[0],1:[1],2:[2,3],3:[3],4:[4,5],5:[5],6:[6,7],7:[7]},其中key为语句中位置,键为可能成词的位置,该语句的有向无环图如图2所示。

步骤3,采用动态规划查找最大概率路径的方法,找出基于词频的最大切分组合。有了有向无环图以后,就要找出最好的整体划分方案,例如“主”和“主帅”之间只能选一种,而具体的选择要从整体看,找到一个全局最佳方案,具体方法为一个动态规划算法。

具体地,首先查找待分词语句中已经切分好的词语,得出查找该词语出现的频率,如果没有该词,就把词典中出现频率最小的那个词语的频率作为该词的频率;然后根据动态规划查找最大概率路径的方法,对句子从右往左反向计算最大概率,因为通常情况下形容词太多,后面的才是主干。因此,从右往左计算,正确率要高于从左往右计算,这里类似于逆向最大匹配,p(noden)=1.0,p(noden-1)=p(noden)*max(p(倒数第一个词))…依次类推,最后得到最大概率路径,得到最大概率的切分组合。

步骤4,对于待分词语句中,不存在于词典中的未登录词,不再进行分词处理,直接将其打散,按照字符进行分词,即是说,将未登录词分割为一个个单独的字。

上述分词方法中,前面三个步骤都是采用的现有例如jieba分词方法进行分词,而针对于未登录词则单独采用按字符分割的方式将其分割为若干个字,由此可以避免为登录词与前面词进行重新组合,继而导致分词不准确。

试验例

以语句“湘鄂情是一家餐饮公司”为例,其中“湘鄂情”是一个未登录词,基于本实施例中上述方法所识别的结果为:湘|鄂|情|是|一|家|餐饮|公司;而基于字符串匹配(jieba)的分词方法所识别的结果为:湘鄂|情是|一|家|餐饮公司。

从两种方法的对比可以看出,传统基于字符串匹配的分词方法将命名实体(或简称实体)“湘鄂情”拆分成了两个词,而且被拆分开的词会与其前后文字组合形成新词,就导致在命名实体识别过程中,命名实体无法被正确识别;而本实施例中使用的分词器(上述改进后的分词方法),并不会将实体与其他词或字重新组成新词。其原因是,由于实体一般是指人名、地名、组织机构名等具有特定意义的一些名词,然而这些词汇在词典中很难全部覆盖,现有技术中的其他分词器的一般策略是根据不同的算法将这些未登录词尽可能分词,这样难免会产生一些错误分词的情况,而本实施中上述改进后的分词方法针对这些未登录词是将其打散,按照字进行分割,这样就保证了在做实体识别任务的时候,不会因为分词错误的原因而使得无法识别出正确的实体。

请参阅图2,基于相同的发明构思,本实施例中同时提供了一种分词系统,也可以理解为分词器。该分词器包括词典构建模块、有向无环图生成模块、切分组合模块和字符分割模块。

具体地,词典构建模块用于构建词典。

有向无环图生成模块用于基于前缀词典,将待分词语句生成前缀树,实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(dag)。

切分组合模块用于采用动态规划查找最大概率路径的方法,找出基于词频的最大切分组合。

字符分割模块用于对待分词语句中不存在于词典中的未登录词,按照字符进行分词,将未登录词分割为一个个单独的字。

本系统中未描述之处请参考前述方法实施例中的相应描述,此处不再赘述。

实施例2

请参阅图3,本实施例中提供了一种命名实体识别方法,该方法利用了实施例1中所述的分词方法。具体的,所述命名实体识别方法包括以下步骤:

步骤10,按照实施例1中所述方法,对待识别语句进行分词,得到组成所述待识别语句的若干个词,若干个词组成词序列。仍以待识别语句中的一个语句“湘鄂情是一家餐饮公司”为例,其中“湘鄂情”是一个未登录词,基于实施例1中所述方法所识别的结果为:湘|鄂|情|是|一|家|餐饮|公司。

步骤20,将分词后得到的词序列输入预先训练好的基于词序列的ner模型,输出得到识别结果,即识别出待分词语句中的命名实体。

其中,请参阅图4,所述基于词序列的ner(namedentityrecognition,命名实体识别)模型通过以下步骤训练得到:

步骤11,搜集中文语料:通过爬虫抓取尽可能多的中文语料,同时尽可能包含不同的领域。在试验时是针对中文语句进行处理,因此此处搜索的是中文语料,但是容易理解的,如果将本方法应用于外文语句的命名实体识别,则此处搜索的是外文语料。

步骤12,采用实施例1中所述方法,对搜集整理的中文语料进行分词,得到大规模分词后的中文语料库。

步骤13,采用bert开源的模型训练代码,基于分词后的中文语料进行语言模型训练,得到基于分词的中文bert预训练模型。

步骤14,人工标注少量的实体识别所需的标注样本。这里的标注样本需要根据特定的任务进行选择,比如:关注新闻娱乐(即模型用于识别新闻娱乐中的命名实体),就标注新闻娱乐的语料,如果关注法院公告,就需要标注法院公告的数据。在标注样本前,首先需要采用实施例1中的分词器进行分词,然后再对实体进行标注。

步骤15,采用预训练的基于词的bert预训练模型,fine-tuning训练ner模型。将标注样本分割为训练集合和测试集合,训练集合用来训练模型,测试集合用来验证模型是否达到要求,如达到要求,则结束训练,如没有达到要求,就调节模型参数,或者增加标注样本量,直至误差满足要求或迭代次数达到阈值。

本实施例中所述命名实体识别方法,采用的是基于词序列的nrt模型,模型输入为词序列,而不是传统bert模型中所输入的字序列,因此可以提升识别效率,同时也可以减小占用内存。

请参阅图5,图5是基于词序列和基于字序列进行命名实体识别的对比图。在做对比试验时,人工标注了一批舆情数据和裁判文书等公告数据,主要涉及三个实体类型,分别为人名(person),公司名(company),组织机构名(organization);其中舆情数据分拆为训练集(train_yuqing)和测试集(test_yuqing),公告数据作为测试集(test_gonggao)。由图5可以看出,在模型参数相同时(隐藏层数:12,隐藏层大小:768,attention层head数:12),无论是舆情数据作为测试集还是公告数据作为测试集,基于词序列的nrt模型效果都要优于基于字序列的bert模型,同时也说明基于词序列的nrt模型其泛化能力更强,对训练集数据覆盖面要求没有那么高。由于一般情况下,深度模型参数越多,其识别能力越强,当然资源占用也就越多,于是试验时尝试减小基于词序列的nrt模型的参数,观察其识别效果,当把模型参数设置为隐藏层数为4,隐藏层大小为512(字节),attention层head数为8时,由图5可以看出,基于词序列的nrt模型,其识别准确率仍然优于基于字序列的bert模型。最后,对模型训练过程中显存占用进行了统计(三个模型的batchsize大小都为64,基于字序列长度为64,基于词序列长度为40),如图5中“显存占用”所示,当模型参数相同时,基于词序列的nrt模型显存为字序列模型的66.7%,而当计算精度相当时,即减小基于词序列的nrt模型参数时,基于词序列的nrt模型显存占用仅为字序列模型的16.7%。图6为输入层的一个示例,通常在进行nlp任务时,会首先将输入序列中的词或字,根据词向量转换成词或字对应的向量。现在输入语句为“湘鄂情是一家餐饮公司。”,词向量的长度为728,如果没有分词,直接按照字序列进行embedding,得到的输入矩阵大小为【11*728】,如果采用分词器进行分词后,以词序列输入,同样经过embedding后,得到的输入矩阵大小为【9*728】。如果使用的模型参数相同,则在输入层,使用字序列显存占用约为基于词序列的1.23倍。通过图5和图6可以展示出,本实施例所述命名实体识别方法既可以提升识别效率,减小显存占用空间,又可以提高识别结果的准确性。

请参阅图7,本实施例中同时给出了一种命名实体识别系统,包括实施例1中所述的分词器、模型训练模块和识别模块。

具体地,分词器用于对语句进行分词,得到分词后的词序列;所述语句包括待识别语句,以及训练基于词序列的ner模型时所需的语料、标注样本。经过该分词器分词后,语句中的其他文字被分割为词,而未登录名被分割为单个字。

模型训练模块用于训练得到基于词序列的ner模型。具体地,模型训练模块采用bert开源的模型训练代码,基于分词器分词后的语料库进行语言模型训练,得到基于分词的bert预训练模型;基于已对命名实体进行人工标注的标注样本,采用所述基于词的bert预训练模型,fine-tuning训练ner模型。

识别模块用于将待识别语句经分词后得到的词需序列输入所述基于词序列的ner模型,输出得到识别结果。

上述命名实体识别系统是基于上述识别方法相同的发明构思,对于不清楚之处可以参见上述方法介绍中的相关描述。

一方面,传统的基于bert模型的命名实体识别方法是基于字序列进行识别,本方法先将语句分割为词,基于词序列进行识别,继而可以大大提高识别效率,也可以降低显存占用量,如图5和图6所示;另一方面,提高采用实施例1中所述的分词方法进行分词,将未登录名分割为单个字而不是词,继而可以避免被分割为词后与前后文中的其他词进行重新组合,进而可以避免将未登录名识别错误,未登录名一般为命名实体,因此可以该分词方法可以提高命名实体识别的准确性。

如图8所示,本实施例同时提供了一种电子设备,该电子设备可以包括处理器51和存储器52,其中存储器52耦合至处理器51。值得注意的是,该图是示例性的,还可以使用其他类型的结构来补充或替代该结构,实现数据提取、报告生成、通信或其他功能。

如图8所示,该电子设备还可以包括:输入单元53、显示单元54和电源55。值得注意的是,该电子设备也并不是必须要包括图8中显示的所有部件。此外,电子设备还可以包括图8中没有示出的部件,可以参考现有技术。

处理器51有时也称控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器51接收输入并控制电子设备的各个部件的操作。

其中,存储器52例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其他合适装置中的一种或多种,可存储上述处理器51的配置信息、处理器51执行的指令等信息。处理器51可以执行存储器52存储的程序,以实现信息存储或处理等。在一个实施例中,存储器52中还包括缓冲存储器,即缓冲器,以存储中间信息。

输入单元53例如用于向处理器51提供语句数据。显示单元54用于显示处理过程中的各种结果,例如输入的语句数据、模型输出结果等,该显示单元例如可以为lcd显示器,但本发明并不限于此。电源55用于为电子设备提供电力。

本发明实施例还提供一种计算机可读指令,其中当在电子设备中执行所述指令时,所述程序使得电子设备执行本发明方法所包含的操作步骤。

本发明实施例还提供一种存储有计算机可读指令的存储介质,其中所述计算机可读指令使得电子设备执行本发明方法所包含的操作步骤。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成模块及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1