Download presentation
Presentation is loading. Please wait.
Published by糊 雷 Modified 7年之前
1
dongqiang@keenage.com dzd@keenage.com
意义计算的实现 董强 董振东 第一届全国知网研讨会
2
提纲 相似度的计算 相关概念的计算 知网英汉翻译系统 在意义计算中,一些常用的函数
3
容易混淆的两个概念 词语相关性——反映的是两个词语互相关联的程度,即词语之间的组合特点,它可以用词语在同一个语境中共现的可能性来衡量。
词语相似性——反映的是词语之间的聚合特点。
4
什么是概念的相似度 概念相似度是一个主观性很强的概念,会根据不同的应用而产生不同的定义。
5
实现方法 同义词 同类词 反义或对义词 抽取参与计算的DEF片段 概念计算
6
实现方法—特殊情况 在符合下列情况是直接得出相似度值,无需其他计算: 同义词 相似度为1.000000。 同类词 相似度为0.950000。
反义或对义词 (仅限于单个义原) 相似度为 。
7
实现方法—抽取DEF 不是所有的概念都是直接拿到DEF就进行计算的,有些概念中存在特殊的动态角色,需要特别的处理。对于动态角色CoEvent, 需要用CoEvent 后面的KDML部分作为这个词语的DEF来参与计算,用以建立不同类别词语之间的关系。如 : 旅程(名词): DEF={fact|事情:CoEvent={tour|旅游}}。 旅行(动词): DEF={tour|旅游}
8
实现方法—四个部分 公式: Sim(D1,D2) = (P1*β1+P2*β2+P3*β3+P4*β4)* γ 概念相似度的计算分为4个部分来进行。 β是每一个部分计算结果的权值。 β1+β2+β3+β4 =1, 目前我们指定:β1=0.1,β2=0.1,β3=0.7,β4=0.1。 γ为惩罚因子。
9
实现方法—包含关系的计算(部分1) 两个DEF相互包含关系的计算 公式:P1 = 1/L L:包含关系存在的层次
10
实现方法—包含关系的计算(部分1) “心理医生”: DEF={human|人:HostOf={Occupation|职位},domain={medical|医},{doctor|医治:agent={~},content={disease|疾病:cause={mental|精神}}}} “医生”: DEF={human|人:HostOf={Occupation|职位},domain={medical|医},{doctor|医治:agent={~}}} “手指”: {part|部件:whole={part|部件:PartPosition={hand|手},whole={human|人}}} “手”: {part|部件:PartPosition={hand|手},whole={human|人}}
11
实现方法—概念主类相似度的计算(部分2) 两个概念主类之间的相似度的计算 公式:P2 = α / ( d +α ) d为两个主类义原在Taxonomy树上的距离。 α= 1 。 距离与相似度为反比关系,即距离越近相似度越高。
12
实现方法—概念主类相似度的计算(部分2) “human|人” : entity|实体 => thing|万物
=> physical|物质 => animate|生物 => AnimalHuman|动物 => human|人 “tree|树” : entity|实体 => thing|万物 => physical|物质 => animate|生物 => plant|植物 => tree|树
13
实现方法—节点相似性的计算(部分3) 同层相同节点的计算; 对于动态角色domain的进一步处理; 两个DEF相同节点数与总节点数的计算
具体包含如下三个方面的计算: 同层相同节点的计算; 对于动态角色domain的进一步处理; 两个DEF相同节点数与总节点数的计算
14
实现方法—节点相似性的计算(部分3) “患儿”: DEF={human|人:domain={medical|医},modifier={child|少儿}, {SufferFrom|罹患:experiencer={~}},{doctor|医治:patient={~}}} “儿科医生”: DEF={human|人:HostOf={Occupation|职位},domain={medical|医}, {doctor|医治:agent={~},patient={human|人:modifier={child|少儿}}}}
15
实现方法—节点相似性的计算(部分3) 患儿 儿科医生 第一层 ZeroRole={human|人} 第二层
domain={medical|医} modifier={child|少儿} HostOf={Occupation|职位} ZeroRole={SufferFrom|罹患} ZeroRole={doctor|医治} 第三层 experiencer={~} agent={~} patient={~} patient={human|人} 第四层
16
实现方法—节点相似性的计算(部分3) 同层相同节点的计算 公式:S1 = Nsim / Nmax / 2x Nsim :同层相同节点数 Nmax:同层最大节点数 2x :x是层次数 那么以上我们所举的例子的计算结果为: S1 =1/ / / /24 = =0.625
17
实现方法—节点相似性的计算(部分3) 对于动态角色domain的进一步处理。
如果两个DEF中都存在domain,并且domain的值也相同,那么不论这两个domain是否在同一个层次,都要再一次对domain 进行计算。 公式: S2 = a/ 2x a:相同domain节点个数 x:指定为两个DEF的最深层数。 上面例子通过计算这部分的相似度值为: S2 = 1/24 =
18
实现方法—节点相似性的计算(部分3) 两个DEF相同节点数与总节点数的计算 公式:S = a*2/(d1+d2) a:相同节点个数 d1 :第一个DEF的节点总数 d2 :第二个DEF的节点总数 本例中相同节点数为3,总节点数为14。 S3 = 3*2/14 =
19
实现方法—节点相似性的计算(部分3) 公式: P3 = (S1+S2)*0.7 + S3*0.3 根据上面的例子 P3 = ( )* *0.3 = =
20
实现方法—主类义原框架的计算(部分4) 两个DEF主类义原框架的计算,其计算方法与部分3相同。
├ {ActGeneral|泛动} {act|行动:agent={*}} │ ├ {start|开始} {ActGeneral|泛动:agent={*},content={*}} │ ├ {do|做} {ActGeneral|泛动:agent={*},content={*},manner={*}} │ │ ├ {try|尝试} {do|做:agent={*},content={*}}
21
实现方法—惩罚因子 在下列情况下需要对计算结果进行惩罚性修订: 存在否定关系。惩罚因子为0.3。
存在下列指定关系。惩罚因子为0.35。 agent patient experiencer target relevant content existent partner possessor PatientProduct PatientContent possession
22
什么是相关概念场 相关是指不同的概念在某种语境中共现的可能性。 相关概念是指词语所代表的概念与哪些概念相关。
相关概念场是一个相关概念的集合,是与一个词语的某个概念相关的所有概念的集合。
23
相关概念场的特点 基于概念 词语的相关性最终应归结于词语所代表的概念的相关性。 大范围 中英文词语各9万多,概念各11万多。
跨语种(cross-language) 中文与英文双语的系统。
24
相关概念场的应用 语义排歧 文本聚类
25
实现方法 从查询步骤来看,可以分为共性查询和个性查询 在查询范围上,共有三个级别
26
实现方法—共性查询 共性查询包括 同类、反义或对义以及高度相关的动态角色项:domain 、MaterialOf、RelateTo 共性查询在三个级别的查询范围和所有义原类都适合,并且查询范围为第一级时只进行共性查询。
27
实现方法—共性查询 动态角色:domain的特殊性
28
实现方法—个性查询 个性查询是根据概念主类划分的,共分为: 事件、实体、属性、属性值
29
实现方法—个性查询(事件类) 第二级查询: 根据DEF主类的节点深度决定查询方式,目前定义为节点深度大于4时进行查询。
如:“煲汤”
30
实现方法—个性查询(事件类) 第三级查询: 根据DEF主类的义原框架进行模糊查询。 如:“出阁”
遍历实体类每一个义原的框架,找出包含DEF主类的义原,并以这个义原作为DEF进行精确查询。 如:“吃”
31
实现方法—个性查询(实体类) 第二级查询: 根据DEF主类进行First方式的查询。 如:“禾苗”
如:“大春作物”
32
实现方法—个性查询(实体类) 第三级查询: 抽取DEF中深层的事件类概念片段进行查询。 抽取DEF主类义原的框架的概念片段进行查询。
如:“天空”
33
实现方法—个性查询(属性类) 找出所有属于这个属性的属性值,根据这些属性值进行查询 特别处理“scope” 如:“饭量”
34
实现方法—个性查询(属性值类) 找出这个属性值所属的属性,根据这一属性进行查询 特别处理“scope” 如:“长篇”
35
知网英汉翻译系统 知网英汉翻译系统是一个基于规则的翻译系统 三大组成部分: 程序部分 知网知识词典 规则 程序的三个组成部分: 词法处理
语法和语义分析 译文生成
36
词法处理 分词 组词 查单词 短语匹配 信息提取 生词处理
37
词法处理—分词 英文分词需要注意的几个问题: 标点符号:“,” “-” “'” 数字:可能是时间 英文句号:“.”
38
词法处理—组词 英文中有大量由“-”和“'”构成的词语, 如:Al-Qa'ida(“基地”组织)、T-shirt 特例:brother’s
39
词法处理—查单词 在真实文本中,英文单词会根据时态、数量、人称的不同而产生不同的变体。
I am reading. He has two books.
40
词法处理—查单词 还会因英文语法的需要加上不同的前后缀而产生词性的变体,如:tion、less、ness。
41
词法处理—查单词 因词义的需要加上前后缀而产生的变体,如: un、re、mini、micro。
42
词法处理—短语匹配 一般情况下词典中保存的短语往往不能直接与真实文本中的相匹配,由于在查单词时已经做了一定的工作,我们可以在此基础上通过排列组合,使词典中的短语和文本中的相匹配。
43
词法处理—信息提取 保留词尾信息 保留大小写信息 判定是否为同形
44
词法处理—生词处理 普通数字 序数词 时间 未收录名词
45
语法和语义分析 组成部分: 主控程序 规则解释器 特点: 充分利用了知网丰富的词汇信息和强大的语义系统 规则描述语言可以直接引用KDML
46
语法和语义分析 在规则中可以对每一个词语的每一个概念做出如下的提问:
指定的词语是否存在或包含某个概念,如: DEF={human|人:{SufferFrom|罹患:experiencer={~}}} DEF>{human|人:{SufferFrom|罹患:experiencer={~}}} 指定词语的概念主类是什么 指定词语的概念主类的上位为某个概念 指定词语的概念主类的父节点为某个概念 概念A是否为概念B的整体
47
译文生成 经过语法和语义分析,已得到了句子各成分间的逻辑语义关系,在此基础上,把上述逻辑语义关系,依照汉语的语法和语言习惯,进行适当的添加和调整,最后得出汉语译文。
48
在意义计算中,一些常用的函数 DEF的存储结构 包含关系 比较关系 片段提取
49
在意义计算中,一些常用的函数 DEF的存储结构如下: struct S_DEF_NODE { WORD Domai; // 域
WORD Class; // 类 char Fathe; // 父节点 char Exten; // 扩展标记,记录从哪个节点扩展出来的 char Layer; // 层次; char S_Off; // 子节点起始位置 }; struct S_DEF BYTE NodeNum; // 节点个数 BYTE SemeNum; // 义元个数 S_DEF_NODE Node[Max_Seme_Num]; //
50
在意义计算中,一些常用的函数 包含关系的计算:
用法: int Def_Match( const S_DEF* ApsA , const S_DEF* ApsB , int AiNodeA = 0 , int AiNodeB = 0 ) bool Def_Match_Recursion( const S_DEF* ApsA , const S_DEF* ApsB , int AiNodeA , int AiNodeB ) 功能: 判断DEF_A是否包含DEF_B; 判断DEF_A是否从指定节点开始包含DEF_B 参数: 返回值: N >= 0:DEF_A从第N个节点开始包含DEF_B; N < 0:DEF_A不包含DEF_B
51
在意义计算中,一些常用的函数 比较关系: 用法: int Def_Compare( const S_DEF* ApsA , const S_DEF* ApsB , int AiNodeA = 0 , int AiNodeB = 0 ) 功能: 从指定节点开始比较,判断DEF_A 与 DEF_B的大小; 参数: const S_DEF* ApsA: const S_DEF* ApsB: int AiNodeA: int AiNodeB: 返回值: >0 : A>B; < 0 : A<B ; == 0 : A == B;
52
在意义计算中,一些常用的函数 片段提取: 用法: void Capture_Def( const S_DEF* ApsDef , S_DEF* ApsRlt , int AiCurNode ); 功能: 从指定的节点开始提取一个DEF片段 参数: const S_DEF* ApsDef :源DEF; S_DEF* ApsRlt :提取结果 ; int AiCurNode :指定的节点; 返回值: 无
53
在意义计算中,一些常用的函数 实例一:提取一个部件的整体部分 {part|部件:whole={part|部件:PartPosition={hand|手},whole={human|人}}} 提取结果: {part|部件:PartPosition={hand|手},whole={human|人}} 实例二: {InstitutePlace|场所:domain={medical|医},{doctor|医治:content={disease|疾病},location={~}}} 提取结果: {doctor|医治:content={disease|疾病}}
54
谢谢大家 欢迎提出 宝贵的意见与建议!
Similar presentations