CN105824801B - 一种基于自动机的实体关系快速抽取方法 - Google Patents
一种基于自动机的实体关系快速抽取方法 Download PDFInfo
- Publication number
- CN105824801B CN105824801B CN201610150794.9A CN201610150794A CN105824801B CN 105824801 B CN105824801 B CN 105824801B CN 201610150794 A CN201610150794 A CN 201610150794A CN 105824801 B CN105824801 B CN 105824801B
- Authority
- CN
- China
- Prior art keywords
- rule
- state
- node
- rules
- finite
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Machine Translation (AREA)
Abstract
本发明提供一种基于自动机的实体关系快速抽取方法,包括以下步骤:步骤1,定制规则文件;步骤2,对规则文件中的各个规则进行文法检查,检测规则文件中的各个规则是否满足文法要求,如果满足,则执行步骤3;步骤3,对通过文法检查的所述规则文件中的各个规则进行语义解释;步骤4,将语义解释后的所述规则文件中的各个规则进行解析编译,完成规则向层叠有限状态自动机的转换,得到有限状态自动机;步骤5,使用所述有限状态自动机,对输入的文本数据进行实体属性以及实体关系的抽取,得到最终的实体属性以及实体关系。优点为:能够保证对开放域文本进行快速的实体关系与实体属性抽取。同时,对于特定领域的实体关系可以定制化的进行抽取。
Description
技术领域
本发明属于开放域文本中实体关系抽取技术领域,具体涉及一种基于自动机的实体关系快速抽取方法。
背景技术
随着互联网的爆发式发展,互联网上的数据呈指数级增长。在庞大的海量数据中,包含有丰富的信息。但是原始的无结构或半结构化的网页、文档、微博、多媒体等格式的数据,不能够直接提供给我们想要的精准信息。因此,开放域文本的信息抽取技术变得越来越重要。命名实体常常是文本蕴含重要信息的载体,因此命名实体以及实体关系的抽取是一项重要信息抽取技术。例如,利用抽取出的命名实体以及实体关系,可以构建人物档案系统,形成一张人物关系图。
比如针对“小王,A公司董事长,出生于B地区,夫人是小李。”这段文本,可以通过抽取出小王的个人属性以及关系,建立他的个人档案。如:人名:小王,出生地:B地区,头衔:A公司董事长,夫人:小李等。该过程可见附图1。抽取的这些结构化信息无论是对构建专家系统知识库,还是用于文本分析,甚至在一些商业领域都将产生价值。
现有的实体关系抽取方法中,基于规则的方法具有很好的准确性,但规则的好坏直接关系到实体关系抽取的结果质量,因此编写规则需要专家经验,加之规则一般会依赖于领域,因此规则的可移植性也是一项重大的挑战。而基于统计的方法通常也是针对某个领域的内容进行抽取,对于开放域文本的实体关系识别,具有很大的局限性;而且基于统计的抽取方法的模型解码速度也会比较慢。所以,现有的技术很难完全满足实体关系抽取方法的快速与高可移植性的要求。
发明内容
针对现有技术存在的缺陷,本发明提供一种基于自动机的实体关系快速抽取方法,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种基于自动机的实体关系快速抽取方法,包括以下步骤:
步骤1,定制规则文件;其中,所述规则文件由多条规则组成;所述规则包括以下元素:实体特征规则关键字、低级约束关键字、高级约束关键字和高级规则关键字;
其中,实体特征规则关键字包括CONCEPT、REGEX和MCONCEPT,CONCEPT的特征语义为文本元素表示的元实体特征;REGEX的特征语义为正则表达式表示的元实体特征;MCONCEPT的特征语义为元实体特征组合表达的复杂实体特征;
低级约束关键字包括AND、OR和NOT;AND代表的约束语义为:两个或多个实体特征必须同时出现在上下文环境;OR代表的约束语义为:两个或多个实体特征中至少有一个出现在上下文环境;NOT代表的约束语义为:某个或者多个实体特征不能出现在上下文环境;
高级约束关键字包括SENT、ORD和DIST_K;SENT代表的约束语义为:两个或多个实体特征必须同时出现在同一句话的上下文环境;ORD代表的约束语义为:两个或多个实体特征必须按照一定顺序关系同时出现在上下文环境;DIST_K代表的约束语义为:两个或多个实体特征必须按照一定距离限制同时出现在上下文环境;
高级规则关键字包括MCONCEPT_RULE,其规则语义为:代表两个或多个实体特征在满足由低层约束关键字和高层约束关键字约束基础上构成的关系;
步骤2,对步骤1定制的所述规则文件中的各个规则进行文法检查,检测所述规则文件中的各个规则是否满足文法要求,如果满足,则执行步骤3;
步骤3,对通过文法检查的所述规则文件中的各个规则进行语义解释;
步骤4,将语义解释后的所述规则文件中的各个规则进行解析编译,完成规则向层叠有限状态自动机的转换,得到有限状态自动机;
步骤5,使用所述有限状态自动机,对输入的文本数据进行实体属性以及实体关系的抽取,得到最终的实体属性以及实体关系。
优选的,步骤2具体包括:
步骤2-1,根据规则的特征关键字对规则进行分类,然后按照类别分类读取规则;
步骤2-2,对规则文件中的各个规则进行重复性检测,判断是否存在重复的规则,如果存在,则剔除重复的规则;
步骤2-3,对规则文件中的各个规则进行冲突性检测,判断同一类型的规则中是否存在两条或多条相互冲突的规则,如果存在,则发出警告信息,通知用户处理冲突;或者,按照配置文件的默认形式进行冲突处理;
步骤2-4,对规则文件中的各个规则进行合法性检测,即:检测规则的编写是否符合规则的定义形式,检测选项包括:规则约束键和规则类型关键字是否合法、规则元素是否齐全、规则元素是否匹配、规则的约束键和所约束实体特征的位置关系是否合理。
优选的,步骤3具体为:规则的语义解释是指根据规则定义中的不同规则关键字以及规则中的约束关键字进行不同的语义解释;其中,对于低级约束关键字OR,对其单独处理,将包含OR约束的规则在语义解释这一阶段进行拆分并进行标记。
优选的,步骤4具体为:
将规则分类为低级规则和高级规则;其中,低级规则包括CONCEPT规则、REGEX规则和MCONCEPT规则;高级规则包括MCONCEPT_RULE规则;
将低级规则编译为低级有限状态自动机;将高级规则编译为高级有限状态自动机;
在进行规则编译过程中,所有规则共用一个符号表;每种同类型的规则共用一套自动机,即CONCEPT规则编译为一个CONCEPT有限状态自动机;REGEX规则编译为一个REGEX有限状态自动机;MCONCEPT规则编译为一个MCONCEPT有限状态自动机;MCONCEPT_RULE规则编译为一个MCONCEPT_RULE有限状态自动机。
优选的,CONCEPT规则的编译步骤如下所示:
第一步,把所有的CONCEPT规则的规则名以及规则值放入符号表中,其中,规则值是经过分词处理后,以词为单位放入符号表;不同的规则名以及规则值中的词放在符号表中的不同单元;
第二步,创建CONCEPT有限状态自动机的初态节点,以初态节点为出发点,依次把每个CONCEPT规则的规则值部分以词为单位创建对应的状态节点,并按照词的前后顺序完成状态节点的迁移转换,每一个规则值的最后一个词形成有限状态自动机中的终态节点;由此形成最终的CONCEPT有限有限状态自动机;
REGEX规则的编译步骤如下所示:
第一步,把所有的REGEX规则的规则名以及规则值放入符号表中,其中,规则值是经过分词处理后,以词为单位放入符号表;不同的规则名以及规则值中的词放在符号表中的不同单元;
第二步,创建REGEX有限状态自动机的初态节点,以初态节点为出发点,依次把每个REGEX规则的规则值部分以词为单位创建对应的状态节点,并按照词的前后顺序完成状态节点的迁移转换,每一个规则值的最后一个词形成有限状态自动机中的终态节点;由此形成最终的REGEX有限状态自动机;
MCONCEPT规则编译步骤描述如下:
第一步,把所有的MCONCEPT规则名插入到符号表中,如果MCONCEPT规则的规则值含有纯文本,则把纯文本进行分词处理后插入符号表;
第二步,创建MCONCEPT有限状态自动机的初态节点,并以初态节点为起始节点,对MCONCEPT规则的规则值按照前后顺序关系,依次创建状态节点并进行状态转移,转移弧的label值为CONCEPT规则名或REGEX规则名或文本词在符号表中的槽位;每一个规则值的最后一个单元形成的状态节点为终态节点;
MCONCETP_RULE规则的编译步骤描述如下:
第一步,对所有的MCONCEPT_RULE规则的规则名和规则值中的参数字符串以及文本串插入到符号表中;
第二步,对所有的MCONCEPT_RULE规则进行宏指令翻译;
第三步,创建初态节点,并以初态节点为出发节点,对所有的宏指令序列,按照前后顺序关系依次创建状态节点并完成状态迁移,其中转移弧上的label值为宏指令的指令代码值,宏指令的最后一条指令构成有限状态自动机的一个终态节点。
优选的,步骤5,使用所述有限状态自动机,对输入的文本数据进行实体属性以及实体关系的抽取,得到最终的实体属性以及实体关系,具体为:
步骤5-1,使用低级有限状态自动机用于进行简单概念抽取,包括:
步骤5-1-1,使用CONCEPT有限状态自动机进行简单概念抽取,包括以下步骤:
第一步:将输入文本进行分句分词操作,每个词均携带句子id以及在原文本中的起始结束位置信息;
第二步:把分词结果以词为单位加入到构造自动机时建立的符号表中,并同时存入一张状态表,每个词对应一个状态;
第三步:结合使用状态表、符号表以及自动机完成概念匹配工作;本步骤可拆分成如下几个环节:
Ⅰ:遍历状态表,对状态表中的每个状态S作Ⅱ操作;
Ⅱ:在符号表中查找状态S的哈希值,以自动机的初态节点为起始节点,尝试往下一个节点移动,如果可以找到对应的转移弧,转入Ⅲ;否则转入Ⅰ;
Ⅲ:以转移弧的到达节点为新的起始节点,同时在状态表中步进到下一个状态进行Ⅱ操作,如果能够到达某个终态节点,则把对应弧上的规则名id及相关命中信息记录入命中表;
步骤5-1-2,使用REGEX有限状态自动机进行简单概念抽取,主要抽取对象是由正则表达式表示的简单元实体概念模式;
步骤5-1-3,使用MCONCEPT有限状态自动机进行简单概念抽取,包括以下步骤:
第一步:初始化时以自动机的初态为出发节点,对该节点的所有转移弧进行遍历,依次进行第二步操作;
第二步:根据转移弧上的label,在命中表中查找该label是否存在,如果存在则转入第三步,否则终止对该弧的遍历,转入出发节点的下一条转移弧进行第二步操作;如果该节点的所有转移弧都不满足条件,则退回到上一个节点;
第三步:如果命中为这条状态结点链的第一个命中,那么记录该命中的结束位置;反之,则把命中的起始位置和上一个命中的结束位置进行比较,判断是否满足连续关系,如果满足则转入第四步,否则转入下一条弧进入第二步;
第四步:如果命中弧的到达节点为终态,则表示命中一个MCONCEPT规则,把转移弧上的命中规则名id记录到命中表中,转入下一条弧进入第二步;否则,以命中弧的到达节点为新的出发点,回到第一步。
步骤5-2,使用高级有限状态自动机进行复杂模式抽取,包括以下步骤:
第一步:初始时,以自动机的初态为出发节点,把出发节点入栈;
第二步:如果栈为空,则结束;否则,弹出栈中的状态节点;
第三步:对状态节点的每条转移弧进行遍历,依次进入第四步;
第四步:如果转移弧为约束键转移弧,进入第五步;如果转移弧为操作子转移弧,进入第六步;如果转移弧为元规则转移弧,进入第七步;如果转移弧为OP_RULE_END,说明该条规则完成计算,则进入第八步;
第五步:如果约束键起始约束转移弧,则把约束键的类型保存到约束寄存器中和该转移弧的到达节点一同入栈;如果转移弧为约束键结束约束转移弧,则把当前的约束寄存器中的对应约束起始计算符清除,然后和到达节点一同入栈;转入第二步;
第六步:如果操作子为OP_MATCH_START并且紧邻的转移弧为concept_id,进入第七步;如果紧邻的转移弧为OP_PUSH_START,则跳过紧邻的转移弧,进入第七步;如果操作子为OP_MATCH_END,把转移弧的到达节点入栈,转入第二步;如果操作子为OP_PUSH_START,说明下一条转移弧是规则名,进入第九步;如果操作子为OP_PUSH_END,说明下一条转移弧为规则参数,进入第九步。
第七步:在命中表中找到所有id为concept_id的命中项,依次和约束寄存器中的约束进行检查,如果合法则把命中项id和转移弧的到达节点一同入栈,转入第二步;
第八步:如果结果寄存器中保存有元规则,则把当前规则的计算结果写入命中表;进入第二步;
第九步:把下一条转移弧的label保存到结果寄存器中,和转移弧的到达节点一同入栈,转入第二步。
本发明提供的基于自动机的实体关系快速抽取方法具有以下优点:
能够保证对开放域文本进行快速的实体关系与实体属性抽取。同时,对于特定领域的实体关系可以定制化的进行抽取。
附图说明
图1为现有技术提供的抽取实体关系示例的示意图;
图2为本发明提供的关系抽取架构与程序设计语言类比示意图;
图3为本发明提供的关系抽取方法流程图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明的目的是为了现有技术不能满足实体关系抽取方法快速与高可移植性的问题,创新性地实现了一种基于自动机的可定制化的开放域实体关系快速抽取方法。该方法具有较高的可定制性,能够通过简单地修改配置文件,实现对新定制的实体关系的抽取,并且该方法能够快速进行数据处理,满足从大量数据中获取实体关系的实际需要。
本发明提供的基于自动机的实体关系快速抽取方法,包括以下步骤:
步骤1,定制规则文件;其中,所述规则文件由多条规则组成;所述规则包括以下元素:实体特征规则关键字、低级约束关键字、高级约束关键字和高级规则关键字;
本发明所定制的规则应该为一套基于上下文无关文法的高语义涵盖性、高抽象性、高简洁、高可定制的规则。规则是否能够保证较高的抽象性和规则采用的语法是否足够简洁,直接关系到规则的语义覆盖性以及规则的可移植性,因此规则的定义非常重要,是基于自动机的关系抽取方法的基础和核心部分。
结合对语法的统计研究,发现对关系主客体的最有力、最直接的约束便是谓词约束和位置顺序约束,这两种约束最能够反应语言的表达习惯和内在语义。因此设计规则的约束力主要体现在对低层的谓词约束以及高层的位置和顺序关系约束。不同的约束类型由不同的约束关键字也称约束键表示,约束键作用于实体特征之上。实体特征可以根据关系语义以及表达方式进行灵活定义。在本发明中主要有三种实体特征的定义方式,实体特征的定义使用一些关键字进行描述,如下表所示:
实体特征规则关键字 | 特征语义 |
CONCEPT | 文本元素表示的元实体特征。 |
REGEX | 正则表达式表示的元实体特征。 |
MCONCEPT | 元实体特征组合表达的复杂实体特征。 |
表1实体特征规则关键字及特征语义
下面看看具体的约束键及对应语义定义,约束键的直接作用目标就是实体特征。其中约束键又分为低层约束键和高层约束键,低层约束键主要是谓词约束,高层约束键是距离顺序约束。具体描述如下表所示:
低层约束关键字 | 约束语义 |
AND | 两个或多个实体特征必须同时出现在上下文环境。 |
OR | 两个或多个实体特征中至少有一个出现在上下文环境。 |
NOT | 某个或者多个实体特征不能出现在上下文环境。 |
表2低层约束键关键字及约束语义
表3高层约束关键字及约束语义
表示实体特征的规则称为低级规则,由约束键和基本实体特征共同描述的规则称为高级规则。低级规则主要用来抽取概念性的实体特征,例如人名、地名、机构名等命名实体,也包括任何特征文本,可以为任何一段连续的文本表示。高级规则主要用来抽取复杂的关系模式,高级规则的表示关键字及规则语义如下表所示:
表4高级规则关键字及规则语义
给出约束关键字以及规则表示关键字后,下表给出低级规则、高级规则以及约束键的形式化定义。在给出具体形式化定义之前,为了表述的更加清楚,这里有一些约定:
(1)下列定义中的斜体表示可为任意文本表示;
(2)“|”表示或者;
(3)“+”表示要求连续;
(4)CF=CNAME|RNAME|MCNAME,表示使用CONCEPT、REGEX或MCONCPET表示的任意实体特征;
(5)(pattern)+表示模式pattern重复出现一次以上。
表5关键字定义及表现形式
为了更好的理解上面的规则以及约束键的定义,具体看几个例子:
(1)使用CONCEPT来定义人名,例如CONCEPT:NAME:张三
(2)使用REGEX来定义Email,例如REGEX:EMAIL:\w+@\w+(\.\w+)+
(3)使用MCONCEPT来定义复杂实体,比如定义具体公司头衔,例下:
MCONCEPT:ORG_TITLE:ORGANINATION+TITLE,其中另外两个实体特征分别为CONCEPT:ORGANINATION:微软
CONCEPT:TITLE:总裁
(4)使用AND来定义抽取两个人物的共现关系,例如:
MCONCEPT_RULE:NAME_NAME(person,person):(AND,“_per{NAME}”,“_per{NAME}”)
(5)使用OR来定义抽取人的联系方式,例如:
MCONCEPT_RULE:NAME_CONTACK(person,email,phone):
(AND,_per{NAME}”,(OR,“_em{EMAIL}”,“_ph{PHONE}”))
(6)使用NOT来定义抽取不包含“医疗”这个词页面的人的电话,例如:
MCONCEPT_RULE:NAME_PHONE(person,phone):(AND,“_per{NAME}”,
“_ph{PHONE}”,(NOT,“医疗”))
(7)使用ORD来定义人的活动信息,例如:
MCONCEPT_RULE:NAME_ACTION(person,action):(SENT,
(ORD,“_per{NAME}”,“_ac{ACTION}”))
(8)使用DIST_k来定义人的年龄,例如:
MCONCEPT_RULE:NAME_AGE(person,age):(SENT,(ORD,
(DIST_2,“_per{NAME}”,“_age{AGE}”)))
为了增强规则的表达力,无论是低级约束键还是高级约束键,都是可以进行任意组合递归表示,这一点在上面的例子中已经得到体现。
步骤2,对步骤1定制的所述规则文件中的各个规则进行文法检查,检测所述规则文件中的各个规则是否满足文法要求,如果满足,则执行步骤3;
本步骤具体为:
步骤2-1,根据规则的特征关键字对规则进行分类,然后按照类别分类读取规则;
规则可以分类为低级规则和高级规则,其中低级规则又可以进一步分为三种规则。进行规则的分类读取操作时,主要是根据规则的特征关键字来进行简单分类,然后分别存储。分类读取操作是服务于后期对不同类型规则的分类编译做准备。
步骤2-2,对规则文件中的各个规则进行重复性检测,判断是否存在重复的规则,如果存在,则剔除重复的规则;
具体的,规则集可能多人进行共同维护,因此规则集中可能出现重复的规则。规则的重复检测操作的目的就是为了识别出重复定义的规则,并进行剔除,以防被重复编译,并在后期进行多次匹配,从而带来性能的损失。重复检测这一操作可以在规则的读取阶段进行,也可以单独进行。
步骤2-3,对规则文件中的各个规则进行冲突性检测,判断同一类型的规则中是否存在两条或多条相互冲突的规则,如果存在,则发出警告信息,通知用户处理冲突;或者,按照配置文件的默认形式进行冲突处理;
具体的,规则的冲突检测是指检测出同一类型的规则中的两条或多条相互冲突的规则。如果规则A所覆盖的实体关系与规则B所覆盖的实体关系正好相反互补,那么规则A就和规则B相互冲突。
步骤2-4,对规则文件中的各个规则进行合法性检测,即:检测规则的编写是否符合规则的定义形式,检测选项包括:规则约束键和规则类型关键字是否合法、规则元素是否齐全(例如分割冒号是否存在)、规则元素是否匹配(例如括号是否匹配,引号是否匹配等)、规则的约束键和所约束实体特征的位置关系是否合理。
只有语法正确的规则才能够在规则编译期得到正确的语义解释并进行正确编译。
步骤3,对通过文法检查的所述规则文件中的各个规则进行语义解释;
步骤3具体为:规则的语义解释是指根据规则定义中的不同规则关键字以及规则中的约束关键字进行不同的语义解释;其中,对于低级约束关键字OR,对其单独处理,将包含OR约束的规则在语义解释这一阶段进行拆分并进行标记。
具体的,规则的语义解释是指根据规则定义中的不同规则关键字以及规则中的约束关键字进行不同的语义解释。四种不同的规则会被分别转换成对应的有限状态自动机,而对复杂规则中所包含的六种不同的语义约束,也会被进行不同的处理解释,以实现正确的语义约束。在这一阶段需要完成的主要操作时对具有特殊语义的约束键OR进行单独处理。约束键OR的语义含义是两个或者多个实体特征至少有一个出现在上下文环境中。为了保证后期有限状态自动机上的匹配计算过程能够保持对所有约束相同的计算模式,我们可以对该约束键进行预处理。举例说明:
假如我们需要抽取与张三或者李四共现的人物关系,那么如下定义规则:
MCONCEPT_RULE:COEXIST(person):(AND,“_per{NAME}”,(OR,“张三”,”李四”))
显然,这条规则可以拆分成如下两条规则:
MCONCEPT_RULE:COEXIST(person):(AND,“_per{NAME}”,“张三”)
MCONCEPT_RULE:COEXIST(person):(AND,“_per{NAME}”,”李四”)
由于约束键OR的语义特殊性,所以需要单独处理。对包含OR约束的规则在语义解释这一阶段进行拆分并进行标记,以方便后期的编译操作以及匹配操作。
步骤4,将语义解释后的所述规则文件中的各个规则进行解析编译,完成规则向层叠有限状态自动机的转换,得到有限状态自动机;
规则的解析编译是对规则处理的核心步骤,主要功能是完成规则向层叠有限状态自动机的转换。其中主要包含两层有限状态自动机的转换,分别为低级有限状态自动机和高级有限状态自动机。低级有限状态自动机由低级规则编译而来,即由CONCEPT规则、REGEX规则和MCONCEPT规则编译得到,高级有限状态自动机由高级规则即MCONCEPT_RULE规则编译而来。对规则的编译,主要涉及到的数据结构是符号表和自动机的表现形式。我们对所有类型的规则共用一个符号表,这样可以保证不同的规则能够进行信息共享。每种同类型的规则共用一套自动机,即CONCEPT规则、REGEX规则、MCONCEPT规则和MCONCEPT_RULE规则均对应自有的一套规则,独立的自动机能够以不同的形式进行模式抽取,并且可以带来自动机的多种优化方式。
步骤4具体为:
将规则分类为低级规则和高级规则;其中,低级规则包括CONCEPT规则、REGEX规则和MCONCEPT规则;高级规则包括MCONCEPT_RULE规则;
将低级规则编译为低级有限状态自动机;将高级规则编译为高级有限状态自动机;
在进行规则编译过程中,所有规则共用一个符号表;每种同类型的规则共用一套自动机,即CONCEPT规则编译为一个CONCEPT有限状态自动机;REGEX规则编译为一个REGEX有限状态自动机;MCONCEPT规则编译为一个MCONCEPT有限状态自动机;MCONCEPT_RULE规则编译为一个MCONCEPT_RULE有限状态自动机。
CONCEPT规则的编译:
CONCEPT规则作为元规则,完成元实体特征的抽取。它是MCONCEPT规则以及MCONCEPT_RULE规则的基础,只有在CONCEPT规则进行编译和抽取后,MCONCEPT规则和MCONCEPT_RULE规则才能够开始抽取工作。所有的CONCEPT规则在经过编译后融合进同一个有限状态自动机,这样能够进行所有规则的同一处理。
CONCEPT规则的编译步骤如下所示:
第一步,把所有的CONCEPT规则的规则名以及规则值放入符号表中,其中,规则值是经过分词处理后,以词为单位放入符号表;不同的规则名以及规则值中的词放在符号表中的不同单元;
第二步,创建CONCEPT有限状态自动机的初态节点,以初态节点为出发点,依次把每个CONCEPT规则的规则值部分以词为单位创建对应的状态节点,并按照词的前后顺序完成状态节点的迁移转换,每一个规则值的最后一个词形成有限状态自动机中的终态节点;由此形成最终的CONCEPT有限有限状态自动机;
REGEX规则的编译:
同CONCEPT规则,REGEX规则也是用于抽取元实体特征。不同的是,对REGEX规则,为了更加高效的进行编译和抽取,可以选择使用开源的正则表达式库PCRE(Perl CompatibleRegular Expressions)。
REGEX规则的编译步骤如下所示:
第一步,把所有的REGEX规则的规则名以及规则值放入符号表中,其中,规则值是经过分词处理后,以词为单位放入符号表;不同的规则名以及规则值中的词放在符号表中的不同单元;
第二步,创建REGEX有限状态自动机的初态节点,以初态节点为出发点,依次把每个REGEX规则的规则值部分以词为单位创建对应的状态节点,并按照词的前后顺序完成状态节点的迁移转换,每一个规则值的最后一个词形成有限状态自动机中的终态节点;由此形成最终的REGEX有限状态自动机;
MCONCEPT规则编译:
MCONCEPT规则能够抽取较为复杂的实体特征,它所对应自动机的构造也建立在CONCEPT、REGEX规则的基础之上。MCONCEPT规则的编译和CONCEPT规则的编译本质上相同,只是CONCEPT规则在进行编译构造自动机时以词为基本粒度,而MCONCEPT规则在进行编译构造自动机时,以CONCEPT规则和REGEX规则为基本粒度。
MCONCEPT规则编译步骤描述如下:
第一步,把所有的MCONCEPT规则名插入到符号表中,如果MCONCEPT规则的规则值含有纯文本,则把纯文本进行分词处理后插入符号表;
第二步,创建MCONCEPT有限状态自动机的初态节点,并以初态节点为起始节点,对MCONCEPT规则的规则值按照前后顺序关系,依次创建状态节点并进行状态转移,转移弧的label值为CONCEPT规则名或REGEX规则名或文本词在符号表中的槽位;每一个规则值的最后一个单元形成的状态节点为终态节点;
MCONCETP_RULE规则的编译:
MCONCETP_RULE规则为系统的核心规则,完成实体属性以及实体关系的定义抽取任务。由于MCONCEPT_RULE规则的定义是基于CONCEPT、REGEX和MCONCEPT规则,因此它的编译也建立在实体特征规则编译的基础上。该规则主要包括如下元素:规则名、规则参数、约束键、约束实体特征。其中约束实体特征包括三种形式:“_arg-name{CONCEPT|REGEX|MCONCEPT}”、“CONCEPT|REGEX|MCONCEPT”以及“_arg-name{CONCEPT|REGEX|MCONCEPT}text”。这三种形式分别表示带参数的实体特征、不带参数的实体特征和带参数的实体特征与文本并存。举例说明:
(1)“_person{NAME}”表示抽取人名,并且作为规则参数输出;
(2)“TITLE”表示抽取头衔,但不作为规则参数输出。
(3)“_age{AGE}岁”表示抽取年龄,“岁”要紧跟AGE特征来复合表示年龄这一特征模式。也会作为规则参数进行输出。
约束实体特征不同,在编译过程中所做的处理就有差异。在进行详细的编译细节介绍之前,先约定一些规定,用来指导编译过程的操作行为和推进方式,见下表:
表6宏指令及对应含义
对MCONCEPT_RULE规则的编译,本质上是对规则进行解析转换翻译成上表中的宏序列指令的过程。而宏指令本质上为有限状态自动机的计算符,完成在自动机上的相关计算操作。
在本小节开头提到的三种不同形式的约束实体特征对应的宏指令序列模式如下:
(1)“_arg-name{CONCEPT|REGEX|MCONCEPT}”对应:
【OP_MATCH_START→OP_PUSH_START→concept_id→OP_PUSH_END→arg_id→OP_MATCH_END】
(2)“CONCEPT|REGEX|MCONCEPT”对应:
【OP_MATCH_START→concept_id→OP_MATCH_END】
(3)“_arg-name{CONCEPT|REGEX|MCONCEPT}text”对应:
【OP_MATCH_START→OP_PUSH_START→concept_id→OP_PUSH_END→arg_id→text_id→OP_MATCH_END】
上述宏指令序列中的concept_id、arg_id和text_id均为在符号表中的索引位置id。
MCONCEPT_RULE编译步骤描述如下:
第一步,对所有的MCONCEPT_RULE规则的规则名和规则值中的参数字符串以及文本串插入到符号表中;
第二步,对所有的MCONCEPT_RULE规则进行宏指令翻译;
第三步,创建初态节点,并以初态节点为出发节点,对所有的宏指令序列,按照前后顺序关系依次创建状态节点并完成状态迁移,其中转移弧上的label值为宏指令的指令代码值,宏指令的最后一条指令构成有限状态自动机的一个终态节点。
步骤5,使用所述有限状态自动机,对输入的文本数据进行实体属性以及实体关系的抽取,得到最终的实体属性以及实体关系。
该部分是关系抽取的核心模块,实现了层叠有限状态自动机到模式抽取的算法和运行过程的构建。正是经过有限状态自动机的模式匹配计算,才得到最终的实体属性以及实体关系。
在层叠有限状态自动机的两个层次中,下层为由低级规则即CONCEPT规则、REGEX规则和MCONCEPT规则编译得到的低级有限状态自动机,上层为由高级规则即MCONCEPT_RULE规则编译得到的高级有限状态自动机。低级有限状态自动机主要是完成一些简单的概念抽取,比如人名、地名、机构名、时间、各种人物属性特征、驱动关键词等。
本步骤具体为:
步骤5-1,使用低级有限状态自动机用于进行简单概念抽取,包括:
步骤5-1-1,使用CONCEPT有限状态自动机进行简单概念抽取。
CONCEPT自动机的主要抽取对象是简单的明文元实体概念模式。抽取工作由CONEPT规则编译得到的有限状态自动机来完成。自动机的输入为待抽取的文本,具体CONCEPT自动机抽取算法为:
第一步:将输入文本进行分句分词操作,每个词均携带句子id以及在原文本中的起始结束位置信息;
第二步:把分词结果以词为单位加入到构造自动机时建立的符号表中,并同时存入一张状态表,每个词对应一个状态;
第三步:结合使用状态表、符号表以及自动机完成概念匹配工作;本步骤可拆分成如下几个环节:
Ⅰ:遍历状态表,对状态表中的每个状态S作Ⅱ操作;
Ⅱ:在符号表中查找状态S的哈希值,以自动机的初态节点为起始节点,尝试往下一个节点移动,如果可以找到对应的转移弧,转入Ⅲ;否则转入Ⅰ;
Ⅲ:以转移弧的到达节点为新的起始节点,同时在状态表中步进到下一个状态进行Ⅱ操作,如果能够到达某个终态节点,则把对应弧上的规则名id及相关命中信息记录入命中表;
步骤5-1-2,使用REGEX有限状态自动机进行简单概念抽取,主要抽取对象是由正则表达式表示的简单元实体概念模式;
REGEX自动机的主要抽取对象是由正则表达式表示的简单元实体概念模式。我们采用PCRE进行高效抽取。不论是规则的编译,还是编译完成后进行的模式抽取,都直接采用PCRE中的相应模块进行,这里不再赘述。
步骤5-1-3,使用MCONCEPT有限状态自动机进行简单概念抽取。
MCONCEPT自动机的抽取建立在CONCEPT自动机及REGEX自动机抽取的基础之上,相当于做了二次计算。该自动机的抽取算法与CONCEPT自动机抽取算法的最大区别是:CONCEPT自动机的抽取是以待抽取文本为驱动,而MCONCPET自动机直接对自动机进行遍历,以自动机为驱动,无需对输入文本进行遍历操作。
MCONCEPT有限状态自动机过程包括以下步骤:
第一步:初始化时以自动机的初态为出发节点,对该节点的所有转移弧进行遍历,依次进行第二步操作;
第二步:根据转移弧上的label,在命中表中查找该label是否存在,如果存在则转入第三步,否则终止对该弧的遍历,转入出发节点的下一条转移弧进行第二步操作;如果该节点的所有转移弧都不满足条件,则退回到上一个节点;
第三步:如果命中为这条状态结点链的第一个命中,那么记录该命中的结束位置;反之,则把命中的起始位置和上一个命中的结束位置进行比较,判断是否满足连续关系,如果满足则转入第四步,否则转入下一条弧进入第二步;
第四步:如果命中弧的到达节点为终态,则表示命中一个MCONCEPT规则,把转移弧上的命中规则名id记录到命中表中,转入下一条弧进入第二步;否则,以命中弧的到达节点为新的出发点,回到第一步。
上述算法本质上是一个递归操作,递归终止的条件是完成了对状态机的所有遍历。
步骤5-2,使用高级有限状态自动机进行复杂模式抽取。
MCONCEPT_RULE自动机作为层叠有限状态自动机的上层,它是完成对低级有限状态自动机抽取结果的约束计算,找到满足约束键约束范围内的实体组合,即复杂模式,包括实体属性以及实体关系等。MCONCEPT_RULE自动机的抽取主要是完成自动机在不同状态之间的迁移,由于迁移过程中会面临不同种类的转移弧,包括约束键转移弧、操作子转移弧、元规则转移弧、参数转移弧等。
1)约束键转移弧计算。
约束键转移弧主要包括OP_AND_START、OP_AND_END、OP_NOT_START、OP_NOT_END、OP_SENT_START、OP_SENT_END、OP_ORD_START、OP_ORD_END、OP_DIST_START和OP_DIST_END。
在高级有限状态自动机中,约束键有着至关重要的作用,因为正是约束键完成了对元规则的的约束计算,进而析取合法的实体关系。约束键的生效起始位置由形式为OP_XXX_START的约束操作子来表示,生效结束位置由形式为OP_XXX_END的约束操作子来表示。因此同一形式的约束键生效起始转移弧和生效结束转移弧之间的所有实体特征均受该约束键的约束。
对约束键转移弧的计算,要按照约束键的语义的不同做出不同的计算,对同一约束键的起始生效转移弧和结束生效转移弧的计算也不同。约束键AND、SENT、ORD、DIST_k对自动机状态节点链中的实体特征约束都是对位置顺序关系的约束,它们的约束需要保证被约束的实体特征必须出现这一前提。而约束键NOT对实体特征的约束具有本质区别,它不是基于位置关系的约束,而是实体特征是否出现。因此对约束键NOT的处理与对其他约束键的处理完全不同。对于在状态节点链中的不受NOT约束的其它部分完成处理后,它们就构成“临时合法”的关系,当对NOT约束的实体特征进行存在性检查完毕后,如果满足NOT约束,则“临时合法”的关系就成为最终真正合法的关系,这些关系不要求NOT约束的实体特征出现,而且必须不能出现。相比NOT,其它四种类型的约束键约束的实体特征必须出现在最终合法关系中。在另外四种约束键中,约束键DIST_k与其它三种也有细微的区别,因为该约束键本身就携带一个参数元素,而该参数元素又构成了紧接DIST约束转移弧的下一条转移弧,因此在进行DIST约束键转移弧计算时,接下来要立即对该转移弧到达节点的所有转移弧进行计算,以防止DIST约束键的约束丢失。
使用栈来完成整个计算过程,那么当遇到约束键起始生效转移弧时,是做入栈操作,当配对的约束键结束生效转移弧需要进行计算时,是做出栈操作。
2)操作子转移弧计算。操作子转移弧主要包括OP_MATCH_START、OP_MATCH_END、OP_PUSH_START和OP_PUSH_END。
操作子运算符主要是完成对实体特征的计算,这些实体特征或者是已经由低级有限状态自动机完成抽取的,或者是元文本实体特征。由于操作子转移弧的起始生效位置和结束生效位置之间的实体特征具有三种形式,而对这三种形式的处理是完全不同的。根据这三种形式的实体特征对应的宏指令序列来进行操作子转移弧计算。
(1)【OP_MATCH_START→OP_PUSH_START→concept_id→OP_PUSH_END→arg_id→OP_MATCH_END】对应的实体特征形式为:“_arg-name{CONCEPT|REGEX|MCONCEPT}”。这种形式的实体特征需要保留规则的参数信息。
(2)【OP_MATCH_START→concept_id→OP_MATCH_END】对应的实体特征形式为:“CONCEPT|REGEX|MCONCEPT”,这种形式的实体特征不需要保留规则参数。
(3)【OP_MATCH_START→OP_PUSH_START→concept_id→OP_PUSH_END→arg_id→text_id→OP_MATCH_END】对应的实体特征形式为:“_arg-name{CONCEPT|REGEX|MCONCEPT}text”。
3)元规则转移弧计算。元规则转移弧是除形式为OP_XXX_XXX以外的所有转移弧。
当进行元规则转移弧的计算时,也就是完成元规则是否满足约束键的约束检查。当通过约束检查时,把该元规则进行入栈操作,否则就不用入栈。由于每一个元规则可能在原始待抽取文本中有多个命中,因此对每个命中都需要做同样的计算处理。
使用高级有限状态自动机进行复杂模式抽取包括以下步骤:
第一步:初始时,以自动机的初态为出发节点,把出发节点入栈;
第二步:如果栈为空,则结束;否则,弹出栈中的状态节点;
第三步:对状态节点的每条转移弧进行遍历,依次进入第四步;
第四步:如果转移弧为约束键转移弧,进入第五步;如果转移弧为操作子转移弧,进入第六步;如果转移弧为元规则转移弧,进入第七步;如果转移弧为OP_RULE_END,说明该条规则完成计算,则进入第八步;
第五步:如果约束键起始约束转移弧,则把约束键的类型保存到约束寄存器中和该转移弧的到达节点一同入栈;如果转移弧为约束键结束约束转移弧,则把当前的约束寄存器中的对应约束起始计算符清除,然后和到达节点一同入栈;转入第二步;
第六步:如果操作子为OP_MATCH_START并且紧邻的转移弧为concept_id,进入第七步;如果紧邻的转移弧为OP_PUSH_START,则跳过紧邻的转移弧,进入第七步;如果操作子为OP_MATCH_END,把转移弧的到达节点入栈,转入第二步;如果操作子为OP_PUSH_START,说明下一条转移弧是规则名,进入第九步;如果操作子为OP_PUSH_END,说明下一条转移弧为规则参数,进入第九步。
第七步:在命中表中找到所有id为concept_id的命中项,依次和约束寄存器中的约束进行检查,如果合法则把命中项id和转移弧的到达节点一同入栈,转入第二步;
第八步:如果结果寄存器中保存有元规则,则把当前规则的计算结果写入命中表;进入第二步;
第九步:把下一条转移弧的label保存到结果寄存器中,和转移弧的到达节点一同入栈,转入第二步。
本发明的优点在于:在开放域的前提下能够尽量保证可定制地快速抽取出命名实体和实体关系。
本发明提供的基于自动机的开放域可定制的实体关系快速抽取方法,相当于实现了一门程序设计语言。完成了语言的定义、预处理器、编译器及优化直至二进制执行逻辑的整个实现过程。图2是本发明方法与程序设计语言的实现对比。
本发明应用起来很简单,只需用户编写简单的规则文件即可定制化的从开放域文本中快速的抽取出感兴趣的实体关系。下面以一条简单的规则解释本发明的处理流程。
生日属性抽取规则:
#birthday
REGEX:DATE:([\d]{4}年){1}([\d]{1,2}月){0,1}([\d]{1,2}日){0,1}
REGEX:DATE:[\d]{4}[\.-][\d]{1,2}([\.-][\d]{1,2}){0,1}
CONCEPT:BIRTH_OR:生于
CONCEPT:BIRTH_OR:出生
CONCEPT:NAME:鲁迅
MCONCEPT_RULE:NAME_BIRTHDAY(person,birthday):(SENT,(ORD,(DIST_2,"_person{NAME}",(DIST_1,"_birthday{DATE}","BIRTH_OR"))))
规则格式:规则元字符:规则名称(返回参数):规则内容
规则解读:
DATE为利用REGEX规则定义的日期类型,可以抽取出符合正则的日期。BIRTH_OR为定义的具有提示生日属性的关键字。这两个都是元规则定义的标签。MCONCEPT_RULE是一个高级规则。里面结合了SENT、ORD和DIST_k约束。NAME_BIRTHDAY是该高级规则的名字。该规则包含两个返回参数(person,birthday);参数后的为该高级规则的规则内容。其含义为DATE和BIRTH_OR距离不超过1,NAME和(DATE,BIRTH_OR)的距离不超过2,并且要求NAME、DATE和BIRTH_OR的出现顺序必须是NAME-DATE-BIRTH_OR,且三者出现在同一个句子中。比如句子“鲁迅,1881年9月25日生于浙江绍兴”,可以抽出(鲁迅,1881年月25日)。处理过程如下
步骤1检查规则的文法并解释编译。此步骤工作又可细化为规则文法检查、规则的语义解释和规则的解析编译三个步骤。
步骤1-1文法检查包括按类别读取规则、规则重复检查、规则冲突检查、规则合法检查。根据上述例子规则,该方法会在读入规则时跳过定义的注释内容,然后根据关键字CONCEPT、REGEX和MCONCEPT_RULE分类读取规则。进而进行规则的重复和冲突检查。规则的合法性检测也是在读取过程中进行的。
步骤1-2规则的语义解释。将对具有OR关键字的规则进行拆分。
步骤1-3规则的解析编译。此条规则具有CONCEPT、REGEX和MCONCEPT_RULE三种规则,根据相应算法生成3中规则对应的自动机。
步骤2层叠有限状态自动机的模式抽取。该部分内容处理如何利用生成的自动机抽取符合的模式文本。根据相应规则产生的自动机去模式匹配。对于鲁迅的例子,”鲁迅”就匹配了NAME,1881年9月25日匹配了DATE,”生于”匹配了BIRTH_OR。高级规则的抽取需要判断约束条件,可以抽取出生日属性(鲁迅,1881年9月25日)。
本发明提供了一种基于自动机的实体关系快速抽取方法,基于上下文无关文法定义了一套高语义涵盖性、高抽象性、高简洁、高可定制的规则,用户所需要做的就是根据需求领域,定制化的编写规则文件。规则的编写极其简单,并不需要专家知识,对普通的开发人员,甚至系统的维护人员也能够快速编写出一套高可用的规则系,很好的满足实际需求。该方法在实际应用时会先对用户编写的规则进行预处理,包括去除注释,文法检查等。然后对规则进行编译生成对应的自动机。自动机将是进行实体关系模式抽取的核心。最后将输入串与自动机进行模式匹配,就可以抽取出与用户编写的规则相应的内容。本发明能够保证对开放域文本进行快速的实体关系与实体属性抽取。同时,对于特定领域的实体关系可以定制化的进行抽取。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (6)
1.一种基于自动机的实体关系快速抽取方法,其特征在于,包括以下步骤:
步骤1,定制规则文件;其中,所述规则文件由多条规则组成;所述规则包括以下元素:实体特征规则关键字、低级约束关键字、高级约束关键字和高级规则关键字;
其中,实体特征规则关键字包括CONCEPT、REGEX和MCONCEPT,CONCEPT的特征语义为文本元素表示的元实体特征;REGEX的特征语义为正则表达式表示的元实体特征;MCONCEPT的特征语义为元实体特征组合表达的复杂实体特征;
低级约束关键字包括AND、OR和NOT;AND代表的约束语义为:两个以上实体特征必须同时出现在上下文环境;OR代表的约束语义为:两个以上实体特征中至少有一个出现在上下文环境;NOT代表的约束语义为:某个或者多个实体特征不能出现在上下文环境;
高级约束关键字包括SENT、ORD和DIST_K;SENT代表的约束语义为:两个以上实体特征必须同时出现在同一句话的上下文环境;ORD代表的约束语义为:两个以上实体特征必须按照一定顺序关系同时出现在上下文环境;DIST_K代表的约束语义为:两个以上实体特征必须按照一定距离限制同时出现在上下文环境;
高级规则关键字包括MCONCEPT_RULE,其规则语义为:代表两个以上实体特征在满足由低层约束关键字和高层约束关键字约束基础上构成的关系;
步骤2,对步骤1定制的所述规则文件中的各个规则进行文法检查,检测所述规则文件中的各个规则是否满足文法要求,如果满足,则执行步骤3;
步骤3,对通过文法检查的所述规则文件中的各个规则进行语义解释;
步骤4,将语义解释后的所述规则文件中的各个规则进行解析编译,完成规则向层叠有限状态自动机的转换,得到有限状态自动机;
步骤5,使用所述有限状态自动机,对输入的文本数据进行实体属性以及实体关系的抽取,得到最终的实体属性以及实体关系。
2.根据权利要求1所述的基于自动机的实体关系快速抽取方法,其特征在于,步骤2具体包括:
步骤2-1,根据规则的特征关键字对规则进行分类,然后按照类别分类读取规则;
步骤2-2,对规则文件中的各个规则进行重复性检测,判断是否存在重复的规则,如果存在,则剔除重复的规则;
步骤2-3,对规则文件中的各个规则进行冲突性检测,判断同一类型的规则中是否存在两条以上相互冲突的规则,如果存在,则发出警告信息,通知用户处理冲突;或者,按照配置文件的默认形式进行冲突处理;
步骤2-4,对规则文件中的各个规则进行合法性检测,即:检测规则的编写是否符合规则的定义形式,检测选项包括:规则约束键和规则类型关键字是否合法、规则元素是否齐全、规则元素是否匹配、规则的约束键和所约束实体特征的位置关系是否合理。
3.根据权利要求1所述的基于自动机的实体关系快速抽取方法,其特征在于,步骤3具体为:规则的语义解释是指根据规则定义中的不同规则关键字以及规则中的约束关键字进行不同的语义解释;其中,对于低级约束关键字OR,对其单独处理,将包含OR约束的规则在语义解释这一阶段进行拆分并进行标记。
4.根据权利要求1所述的基于自动机的实体关系快速抽取方法,其特征在于,步骤4具体为:
将规则分类为低级规则和高级规则;其中,低级规则包括CONCEPT规则、REGEX规则和MCONCEPT规则;高级规则包括MCONCEPT_RULE规则;
将低级规则编译为低级有限状态自动机;将高级规则编译为高级有限状态自动机;
在进行规则编译过程中,所有规则共用一个符号表;每种同类型的规则共用一套自动机,即CONCEPT规则编译为一个CONCEPT有限状态自动机;REGEX规则编译为一个REGEX有限状态自动机;MCONCEPT规则编译为一个MCONCEPT有限状态自动机;MCONCEPT_RULE规则编译为一个MCONCEPT_RULE有限状态自动机。
5.根据权利要求4所述的基于自动机的实体关系快速抽取方法,其特征在于,CONCEPT规则的编译步骤如下所示:
第一步,把所有的CONCEPT规则的规则名以及规则值放入符号表中,其中,规则值是经过分词处理后,以词为单位放入符号表;不同的规则名以及规则值中的词放在符号表中的不同单元;
第二步,创建CONCEPT有限状态自动机的初态节点,以初态节点为出发点,依次把每个CONCEPT规则的规则值部分以词为单位创建对应的状态节点,并按照词的前后顺序完成状态节点的迁移转换,每一个规则值的最后一个词形成有限状态自动机中的终态节点;由此形成最终的CONCEPT有限有限状态自动机;
REGEX规则的编译步骤如下所示:
第一步,把所有的REGEX规则的规则名以及规则值放入符号表中,其中,规则值是经过分词处理后,以词为单位放入符号表;不同的规则名以及规则值中的词放在符号表中的不同单元;
第二步,创建REGEX有限状态自动机的初态节点,以初态节点为出发点,依次把每个REGEX规则的规则值部分以词为单位创建对应的状态节点,并按照词的前后顺序完成状态节点的迁移转换,每一个规则值的最后一个词形成有限状态自动机中的终态节点;由此形成最终的REGEX有限状态自动机;
MCONCEPT规则编译步骤描述如下:
第一步,把所有的MCONCEPT规则名插入到符号表中,如果MCONCEPT规则的规则值含有纯文本,则把纯文本进行分词处理后插入符号表;
第二步,创建MCONCEPT有限状态自动机的初态节点,并以初态节点为起始节点,对MCONCEPT规则的规则值按照前后顺序关系,依次创建状态节点并进行状态转移,转移弧的label值为CONCEPT规则名或REGEX规则名或文本词在符号表中的槽位;每一个规则值的最后一个单元形成的状态节点为终态节点;
MCONCETP_RULE规则的编译步骤描述如下:
第一步,对所有的MCONCEPT_RULE规则的规则名和规则值中的参数字符串以及文本串插入到符号表中;
第二步,对所有的MCONCEPT_RULE规则进行宏指令翻译;
第三步,创建初态节点,并以初态节点为出发节点,对所有的宏指令序列,按照前后顺序关系依次创建状态节点并完成状态迁移,其中转移弧上的label值为宏指令的指令代码值,宏指令的最后一条指令构成有限状态自动机的一个终态节点。
6.根据权利要求5所述的基于自动机的实体关系快速抽取方法,其特征在于,步骤5,使用所述有限状态自动机,对输入的文本数据进行实体属性以及实体关系的抽取,得到最终的实体属性以及实体关系,具体为:
步骤5-1,使用低级有限状态自动机用于进行简单概念抽取,包括:
步骤5-1-1,使用CONCEPT有限状态自动机进行简单概念抽取,包括以下步骤:
第一步:将输入文本进行分句分词操作,每个词均携带句子id以及在原文本中的起始结束位置信息;
第二步:把分词结果以词为单位加入到构造自动机时建立的符号表中,并同时存入一张状态表,每个词对应一个状态;
第三步:结合使用状态表、符号表以及自动机完成概念匹配工作;本步骤可拆分成如下几个环节:
Ⅰ:遍历状态表,对状态表中的每个状态S作Ⅱ操作;
Ⅱ:在符号表中查找状态S的哈希值,以自动机的初态节点为起始节点,尝试往下一个节点移动,如果可以找到对应的转移弧,转入Ⅲ;否则转入Ⅰ;
Ⅲ:以转移弧的到达节点为新的起始节点,同时在状态表中步进到下一个状态进行Ⅱ操作,如果能够到达某个终态节点,则把对应弧上的规则名id及相关命中信息记录入命中表;
步骤5-1-2,使用REGEX有限状态自动机进行简单概念抽取,抽取对象是由正则表达式表示的简单元实体概念模式;
步骤5-1-3,使用MCONCEPT有限状态自动机进行简单概念抽取,包括以下步骤:
第一步:初始化时以自动机的初态为出发节点,对该节点的所有转移弧进行遍历,依次进行第二步操作;
第二步:根据转移弧上的label,在命中表中查找该label是否存在,如果存在则转入第三步,否则终止对该弧的遍历,转入出发节点的下一条转移弧进行第二步操作;如果该节点的所有转移弧都不满足条件,则退回到上一个节点;
第三步:如果命中为这条状态结点链的第一个命中,那么记录该命中的结束位置;反之,则把命中的起始位置和上一个命中的结束位置进行比较,判断是否满足连续关系,如果满足则转入第四步,否则转入下一条弧进入第二步;
第四步:如果命中弧的到达节点为终态,则表示命中一个MCONCEPT规则,把转移弧上的命中规则名id记录到命中表中,转入下一条弧进入第二步;否则,以命中弧的到达节点为新的出发点,回到第一步;
步骤5-2,使用高级有限状态自动机进行复杂模式抽取,包括以下步骤:
第一步:初始时,以自动机的初态为出发节点,把出发节点入栈;
第二步:如果栈为空,则结束;否则,弹出栈中的状态节点;
第三步:对状态节点的每条转移弧进行遍历,依次进入第四步;
第四步:如果转移弧为约束键转移弧,进入第五步;如果转移弧为操作子转移弧,进入第六步;如果转移弧为元规则转移弧,进入第七步;如果转移弧为OP_RULE_END,说明该条规则完成计算,则进入第八步;
第五步:如果约束键起始约束转移弧,则把约束键的类型保存到约束寄存器中和该转移弧的到达节点一同入栈;如果转移弧为约束键结束约束转移弧,则把当前的约束寄存器中的对应约束起始计算符清除,然后和到达节点一同入栈;转入第二步;
第六步:如果操作子为OP_MATCH_START并且紧邻的转移弧为concept_id,进入第七步;如果紧邻的转移弧为OP_PUSH_START,则跳过紧邻的转移弧,进入第七步;如果操作子为OP_MATCH_END,把转移弧的到达节点入栈,转入第二步;如果操作子为OP_PUSH_START,说明下一条转移弧是规则名,进入第九步;如果操作子为OP_PUSH_END,说明下一条转移弧为规则参数,进入第九步;其中,OP_MATCH_START代表开始匹配元实体特征;OP_MATCH_END代表结束匹配元实体特征;OP_PUSH_START代表带参数的元实体特征入栈开始;OP_PUSH_END代表带参数的元实体特征入展结束;concept_id代表在符号表中的索引位置id;
第七步:在命中表中找到所有id为concept_id的命中项,依次和约束寄存器中的约束进行检查,如果合法则把命中项id和转移弧的到达节点一同入栈,转入第二步;
第八步:如果结果寄存器中保存有元规则,则把当前规则的计算结果写入命中表;进入第二步;
第九步:把下一条转移弧的label保存到结果寄存器中,和转移弧的到达节点一同入栈,转入第二步。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510113347 | 2015-03-16 | ||
CN2015101133471 | 2015-03-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105824801A CN105824801A (zh) | 2016-08-03 |
CN105824801B true CN105824801B (zh) | 2018-06-15 |
Family
ID=56523857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610150794.9A Expired - Fee Related CN105824801B (zh) | 2015-03-16 | 2016-03-16 | 一种基于自动机的实体关系快速抽取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824801B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304372B (zh) * | 2017-09-29 | 2021-08-03 | 腾讯科技(深圳)有限公司 | 实体提取方法和装置、计算机设备和存储介质 |
CN107894978B (zh) * | 2017-11-14 | 2021-04-09 | 鼎富智能科技有限公司 | 时间词的抽取方法及装置 |
CN107918865B (zh) * | 2017-12-08 | 2021-05-14 | 中国平安财产保险股份有限公司 | 保单数据批改处理方法、装置、服务器和存储介质 |
CN109919175B (zh) * | 2019-01-16 | 2020-10-23 | 浙江大学 | 一种结合属性信息的实体多分类方法 |
CN111611793B (zh) * | 2019-02-22 | 2023-06-13 | 北京猎户星空科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN110597959B (zh) * | 2019-09-17 | 2023-05-02 | 北京百度网讯科技有限公司 | 文本信息抽取方法、装置以及电子设备 |
CN112948347A (zh) * | 2019-12-11 | 2021-06-11 | 北京懿医云科技有限公司 | 文本数据结构化处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262658A (zh) * | 2011-07-13 | 2011-11-30 | 东北大学 | 一种基于实体的自底向上Web数据抽取方法 |
US8407169B2 (en) * | 2008-06-26 | 2013-03-26 | Glenn Hofford | Expert system and method |
-
2016
- 2016-03-16 CN CN201610150794.9A patent/CN105824801B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407169B2 (en) * | 2008-06-26 | 2013-03-26 | Glenn Hofford | Expert system and method |
CN102262658A (zh) * | 2011-07-13 | 2011-11-30 | 东北大学 | 一种基于实体的自底向上Web数据抽取方法 |
Non-Patent Citations (3)
Title |
---|
Automatic extraction of semantic relations between medical entities: a rule based approach;Asma Ben Abacha 等;《Journal of Biomedical Semantics》;20111231;第2卷(第S4期);1-11 * |
实体关系抽取的技术方法综述;徐健 等;《现代图书情报技术》;20080825(第168期);18-23 * |
实体及其属性的相关抽取技术;孟涛 等;《信息技术快报》;20100731;第8卷(第4期);7-15 * |
Also Published As
Publication number | Publication date |
---|---|
CN105824801A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824801B (zh) | 一种基于自动机的实体关系快速抽取方法 | |
Ponti et al. | Modeling language variation and universals: A survey on typological linguistics for natural language processing | |
Maynard et al. | Natural language processing for the semantic web | |
Chan et al. | A text-based decision support system for financial sequence prediction | |
Nguyen et al. | Relation extraction from wikipedia using subtree mining | |
US9152623B2 (en) | Natural language processing system and method | |
CN110532328B (zh) | 一种文本概念图构造方法 | |
WO2009058899A1 (en) | System and method for automatically summarizing fine-grained opinions in digital text | |
Qazi et al. | Enhancing business intelligence by means of suggestive reviews | |
Huang et al. | Seq2emo for multi-label emotion classification based on latent variable chains transformation | |
Heist et al. | Information extraction from co-occurring similar entities | |
Siklósi | Using embedding models for lexical categorization in morphologically rich languages | |
CN116611443A (zh) | 知识交互图指导的事件因果关系识别系统及方法 | |
Oo et al. | An analysis of ambiguity detection techniques for software requirements specification (SRS) | |
Szwed | Concepts extraction from unstructured Polish texts: A rule based approach | |
Mahendran et al. | Identifying chemical reactions and their associated attributes in patents | |
Rondon et al. | Never-ending multiword expressions learning | |
Asgari-Bidhendi et al. | PERLEX: A Bilingual Persian‐English Gold Dataset for Relation Extraction | |
Fischbach | Why and How to Extract Conditional Statements From Natural Language Requirements | |
Akhtar et al. | Unsupervised morphological expansion of small datasets for improving word embeddings | |
Starc et al. | Joint learning of ontology and semantic parser from text | |
Nikhil et al. | Hindi derivational morphological analyzer | |
Kim | Detection of gene interactions based on syntactic relations | |
Parniani et al. | Relation extraction with sentence simplification process and entity information | |
Mumtaz et al. | CustRE: a rule based system for family relations extraction from english text |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180615 Termination date: 20190316 |
|
CF01 | Termination of patent right due to non-payment of annual fee |