一种支持自然语言结构计算的分析框架

文档序号:33752689发布日期:2023-04-18 13:30阅读:53来源:国知局
本发明涉及一种自然语言处理方法,尤其是涉及一种支持自然语言结构计算的分析框架。
背景技术
::1、语言结构计算就是将自然语言结构化的过程,也就是将自然语言分析成语言结构,是自然语言理解的本质。而语言结构,是自然语言在形式、内容和用法等多方面规律性的体现。这一规律性在形式上体现为语法结构;在内容上体现为语义结构;在用法上体现为语用结构。2、现有技术进行语言结构计算的策略有两种:端到端策略和级联策略。端到端策略是指输入原始数据,直接输出最后结果,其中主流的方法为基于深度学习的方法,它往往是数据驱动的,针对目标设置优化函数,用参数化的向量表示语言单元,通过参数学习构建模型,例如采用端到端策略进行汉语句法分析任务时,通常以标注出句法信息的语料作为训练数据,设计适当的模型进行参数学习。3、端到端策略是近些年来普遍采用方法,几乎所有的自然语言处理任务的效果,无论是nlp的本体任务,还是落地应用,都有大幅度提升。但该策略在发展中也遇到了以下瓶颈:4、1)缺乏使用显式知识的能力。深度学习模型的知识完全来自数据,如标注数据中的领域知识、语法知识、语义知识,大规模预训练语言模型中的世界知识。但是外部的非数据类的知识,例如专家知识,离线的知识,没有合适的方法嵌入到模型中,模型不能根据知识引导来解决复杂问题。5、2)缺乏推理和分析的能力。深度学习模型是黑匣子式的参数系统,内部不是类人的概念体系,外部不能关联世界知识,无法进行推理和分析。6、3)缺乏可解释性与可控性。由于端到端计算的黑盒子特点,深度学习模型完全参数化的内部结构,具有解释性和可控性差的问题。7、级联策略是指把问题分解为两个或者多个接续的子任务,每个子任务独立完成,后续子任务的输入是前序的任务输出。例如采用级联策略进行汉语句法分析任务时,往往分为两个阶段:一个是汉语分词,另外一个任务为句法结构分析,其中句法结构分析以汉语分词任务的输出为输入。8、级联策略的问题主要是错误传递,由于级联模型间的“概率乘”使得整体模型的正确率与召回率指标不理想。技术实现思路1、本发明提供了一种支持自然语言结构计算的分析框架,用于解决语言结构计算的问题,其技术方案如下所述:2、一种支持自然语言结构计算的分析框架,其特征在于,包括:3、网格:一种数据结构,用以存储语言结构,作为承载各种语言结构的计算平台;4、数据表:用于封装符号类型的一元知识和二元知识,作为封装部件;5、有限状态自动机:用于表征语言上下文的计算控制部件,配合脚本语言共同完成代码功能结构的控制任务,6、api体系,围绕网格、数据表和有限状态自动机,配合lua脚本语言来完成语言结构计算脚本的书写;7、语言结构计算脚本的可执行程序:具有索引功能,能够实现对数据表和有限状态自动机的索引;具有执行功能,能够执行语言结构计算脚本,实现语言结构计算;具有对总控脚本的执行功能,将数据表和有限状态自动机的索引文件路径以及外部服务的ip地址和接口写在配置文件中,并将配置文件传入可执行程序。8、所述网格包括以下内部变量:待分析文本、网格属性、网格单元、网格单元之间的关系;9、所述网格单元包括以下内部变量:所存储的语言单元、网格单元属性、网格单元属性的特征及分数;10、所述网格单元之间的关系包括以下内部变量:网格单元之间的关系的属性、网格单元之间关系的特征及分数。11、所述语言结构表示为带有属性信息的有向图,包括语言单元、关系、属性,装载到网格中承载方式为:语言单元由网格单元承载,每个语言单元对应一个网格单元;语言单元之间的关系由网格单元之间的关系承载;语言单元的属性由网格单元的属性承载;语言单元之间关系的属性由网格单元之间关系的属性承载。12、所述语言结构表示为g=(u,r),其中:13、1)u是图的节点,这里是语言单元的有限集合,记为:u={tu,au},tu∈lex,lex为语言单元字串的集合,au是语言单元的属性,是键值对的集合,记为:au={k=v},k为属性名,v为属性值;14、2)r是连接u中两个不同节点的边的有限集合,即两个语言单元之间的关系的集合;由于语言单元之间往往不是对偶的,所以是一个有向边,记为:r={ui,uj,r,ar},这里:ui∈u,uj∈u,r∈rt,rt为关系类型的集合。ar是语言单元关系的属性,是键值对的集合,记为:ar={k=v},k为属性名,v为属性值。15、所述api包括:(1)调用外部服务并将服务结果导入到网格的api,从而实现了参数计算模型的调度;(2)对网格结构内部变量进行控制的api,包括内部变量的添加、测试与获取,从而实现了语言结构的可控性;(3)应用数据表的api,即实现数据表与网格之间的互动,从而引入了显示知识;(4)应用有限状态自动机的api,即实现有限状态自动机与网格之间的互动,从而扩展了本框架的功能。16、所述数据表定义为三元组的集合,即:tablename={<item,attribute,condition>},其中:17、tablename:表名;18、item:数据项,是字符串形式word,或者是键值表达式kv,为word时,对应一个语言单元,在网格计算时,对应一个网格单元;为kv时,该数据项对应网格内满足kv为真的所有网格单元;19、attribute:item的属性,是键值对的集合,即{k=v},{k=v}会带入到网格单元的属性中或单元之间的关系属性中;20、condition:应用item的限定条件,是键值表达式的集合,即{kv},当前item对应的网格单元满足{kv}其中一个键值表达式时,则继续下一步操作,包括添加网格单元、属性或建立关系。21、所述数据表分为两类,一类是描述型数据表,另外一类是关系型数据表;22、所述描述型数据表,描述的对象是一个个独立的语言单元,给出语言单元的形式、语言单元的属性知识,这些知识用于确定语言单元、设置语言单元属性;23、关系型数据表,描写的对象涉及两个语言单元,一个是中心语语言单元,另一个是与中心语单元具有某种关系的语言单元,用多个数据表封装二元关系,设计成一个主表,多个从表的形式,主表存放中心语语言单元列表,从表存放与中心语语言单元形成某种关系的语言单元列表。24、所述有限状态自动机定义为四元组的集合,即:fsaname={<enter,path,operation,exit>},其中:fsaname:有限状态自动机的名称,全局唯一名;enter:入口节点,一个有限状态自动机有唯一入口;path:对应有限状态自动机的路径,在结构计算时,代表上下文信息;operation:操作节点,即path对应的上下文都测试成功时,要执行的动作;exit:出口节点,一个有限状态自动机有唯一出口。25、一个脚本可以对应一个或多个有限状态自动机,每个有限状态自动机的脚本都包括fsa名、参数项、控制项,还有多个有限状态自动机共用的函数库;26、所述fsa名:不同有限状态自动机之间通过fsa名进行区分;27、所述参数项:对当前fsa运行相关情况的配置;28、所述控制项:描述不同的上下文情况及其对应的操作,由context和operation两部分组成,context用于描述fsa路径的条件部分,由多个item构成;operation描述对应条件下的操作;29、所述函数库:以“namespace name”的形式定义函数库名,并以lua脚本的形式定义函数体,其中“namespace”是保留字。30、进一步的,所述调用外部服务并将服务结果导入到网格的api,实现了参数模型的应用,包括:31、(1)callservice(sentence,servicename):调用服务的api,调用的服务是进行结构分析的参数化模型,将待分析文本结构化,返回初始语言结构的数据;第一个参数是要传给服务的输入,第二个参数是服务名,需要在配置文件中配置,返回值为服务返回的语言结构;32、(2)addstructure(sentence_json):将json格式的语言结构注入到网格中。33、所述对网格结构内部变量进行控制的api,实现了对网格结构内部变量的添加、获取与测试,提高了语言结构计算的可控性和可解释性,包括:(1)内部变量的添加类api;(2)内部变量的获取类api;(3)内部变量的测试类api。34、所述应用数据表的api,分为三类:功能类、获取类、测试类,所述功能类api实现了网格与数据表的互动,使得本框架具有应用显式知识的能力,包括:35、1)segment(tablename)36、segment的功能是基于数据表对网格中的文本进行分词并添加属性;37、2)setlexicon(tablename)38、setlexicon的功能是将数据表中数据项的属性添加到网格单元中,为网格单元提供应用属性信息;39、3)relate(tablename)40、relate的功能是通过对主表名、关系类名和关系名的调用,实现关系类型数据表的导入;41、在用relate函数将关系型数据表导入到网格中时,数据表中的数据项对应网格单元,主表中的数据项和从表数据项形成的关系对应网格中的单元关系,relate函数实现的功能分解为步骤如下:42、①将满足limit条件的主表数据项及其属性导入到网格;并为网格添加“st-unit”属性,其值为tablename,表示网格中存在来源为数据表tablename的网格单元;43、②通过coll属性取得主表数据项对应的所有从表;44、③将满足limit条件的从表数据项添加到网格中;45、④将网格单元关系、u型属性、r型属性添加到网格单元中,以tablename为主表的二元数据表中;46、⑤将从表数据项的属性添加到网格单元关系的属性中;47、⑥为网格添加“uroot”、"uroottablename"、"rroot"、"rroottablename"、"st-relation"属性,对于每一个成功添加到网格中的网格单元间的关系<headunit,subunit,relation>,以上属性的属性值分别为:headunit、headunit、relation、relation、tablename。48、4)str=getprefix(tablename,string)49、getprefix判断字符串是否以数据表中的某一数据项为前缀串,如果有,则返回最长匹配串;50、5)str=getsuffix(tablename,string)51、getsuffix判断字符串是否以数据表中的某一数据项为后缀串,如果有,则返回最长匹配串。52、所述应用有限状态自动机的api,实现了网格与有限状态自动机的互动,从而使得本框架具有高效识别上下文并对其进行处理的能力;该类api包括runfsa和getfsanode以及getparam:53、(1)runfsa(fsaname(,param))54、该api的功能是执行一个有限状态自动机,即完成fsa脚本中的context与网格的匹配并执行对应的operation,其中,fsaname是要执行的有限状态自动机的名称,param是需要传递的参数,该参数能在有限状态自动机脚本中通过api getparam调用;55、(2)no=getfsanode(-1)或no1,no2=getfsanode("$tag")56、执行一个有限状态自动机,就是完成有限状态自动机脚本中的context与网格的匹配,如果匹配成功,即完成了从enter到exit节点的连通,此时有一条或多条路径实现连通;在operation的脚本中,能够访问context中node对应的网格单元,因此对fsa路径上的属性节点依次进行编号,通过引用节点编号,进而访问网格单元。57、(3)str=getparam(key)58、在fsa中读取runfsa函数传进来的参数值。59、所述支持自然语言结构计算的分析框架以符号计算为主导,由它接收输入、输出结果,具有更好的可控性、可扩展性和可解释性;在计算过程中可以调度各个参数计算模型,可以充分发挥参数模型的能力;最后,本框架还可以引入显式知识,在显示知识的引导下,使得深度而精细的语言结构计算成为可能。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1