Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dongqiang@keenage.com dzd@keenage.com 意义计算的实现 董强 董振东 dongqiang@keenage.com dzd@keenage.com www.keenage.com.

Similar presentations


Presentation on theme: "Dongqiang@keenage.com dzd@keenage.com 意义计算的实现 董强 董振东 dongqiang@keenage.com dzd@keenage.com www.keenage.com."— Presentation transcript:

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 谢谢大家 欢迎提出 宝贵的意见与建议!


Download ppt "Dongqiang@keenage.com dzd@keenage.com 意义计算的实现 董强 董振东 dongqiang@keenage.com dzd@keenage.com www.keenage.com."

Similar presentations


Ads by Google