7-Answer 系列-语义解析模块(二)

上一篇文章中我们介绍了语义解析模块中的分词和句法分析,句法分析输出的结果是语句的句法依存关系,而依据这个句法依存关系就能按照语义图算法构建查询语义图。

这一篇介绍语义图算法及其实现。

语义图算法简介

在北京大学徐坤的论文《面向知识库的中文自然语言问句的语义理解》中,提出了一种利用 Stanford Parser 的句法分析树构建查询语义图,从而获取用户自然语言表述的语义的方法,这种方法我称之为语义图算法。

在最终构建的语义图中,图的顶点代表着名词或命名实体,顶点之间的连线代表顶点之间的联系。

论文中提到,经过统计,发现问句的实体有将近 90% 左右概率是名词,而其中的关系有 80% 的概率是名词或者动词。因此基于这个统计我们可以认为语义图算法在自然语言理解的处理上有一定的准确性和实用性。

语义图算法详解

基于上述的统计,语义图算法的原理为:

分析问句中各个单词的词性,如果是名词,则构造名词性结点,并将名词性结点区分为两类,一类为上一步提到的实体词典中的命名实体,如 “周星驰、周杰伦、美人鱼” 等,另一类则是普通的名词性变量,如 “导演、母亲” 等。

根据词性找到名词性结点后,我们需要分析单词之间的依存关系,如果名词性结点之间存在修饰关系,如 “美人鱼的导演” 问句中,并存在 “美人鱼” 修饰 “导演” 这一关系,其中 “美人鱼” 可称为修饰词,而 “导演” 可称为被修饰词。在此基础上,如果被修饰词是名词性结点(而不是命名实体),我们并可构建一条从修饰词到被修饰词的边,并且边上的关系名称为被修饰词的名称(即例句中的“导演”一词)。

仍然以 “美人鱼的导演?” 为例,其构建的语义图如下图所示:

2018-09-05-7-Answer-pic-1.png

上述为对名词性结点的处理。

而对于词性为动词的单词,我们构造动词性结点,并且以动词为核心,根据依存句法分析的结果找出动词的主体动词的客体,也就是谓语的主语和宾语,然后构建出主体-动词-客体的有向图关系。

现在以 “美人鱼的导演是谁?” 为例,其中 “是” 为动词,再根据上一节中提到的依存句法分析的结果,很容易并能得出谓语 “是” 的主语为 “导演”,而宾语则是 “谁”,因此我们并可以获得图关系:导演-是-谁,最终结合之前的名词性结点的处理结果,我们构建查询语义图如下图所示:

2018-09-05-7-Answer-pic-2.png

其中 美人鱼-导演-导演 为名词性结点处理的结果,导演(主体)-是(谓语)-谁(客体)则是动词性结点处理的结果。

语义图算法实现

在论文《面向知识库的中文自然语言问句的语义理解》中已经给出了基于 Stanford Parser 句法解析树的语义图算法实现的伪码。但在 Answer 系统中依存句法分析采用 HanLP 的结果,所以过程稍微有点不同。

在 Answer 系统中语义图算法最终实现的主要步骤如下:

  1. 第一次遍历依存关系分析后输出的结果
  2. 找出其中的名词性词语,构建名词性结点,并加入到名词性结点集合中
  3. 找出其中的动词性词语,根据依存关系,找出谓语的主体和客体(如果是ADV,构建新词组,这一点是自己对语义图的一个还没有验证准确度的小优化)
  4. 结束遍历
  5. 第二次遍历依存关系分析后输出的结果
  6. 根据依存关系,建立名词性结点集合中修饰词和被修饰词之间的图关系
  7. 结束遍历

Answer 系统语义图算法的伪码如下:

for (CoNLLWord coNLLWord : coNLLsentence) {
    if (this.isNounWord(coNLLWord.CPOSTAG))
        添加结点到名词性结点集合中
    if (this.isVerbWord(coNLLWord.POSTAG))
        找出其主谓宾
        如果是 ADV,则构建新词组(如 出生地方)
}
for (CoNLLWord word : coNLLsentence) {
    遍历名词性结点集合,造出修饰关系的名词构建成图
}

算法实现过程如下图所示:

2018-09-05-7-Answer-pic-3.png

语义图算法的实现源码可见 查询语义图算法源码

下一篇

人类的自然语言极其复杂,并非构造出查询语义图之后,就能完成语义理解。例如将 “星爷的年龄?” 这条问句构建成语义图之后,仍然存在很多需要解决的问题,如句中的星爷指代着谁,是否是某一个实体的别名?如果问句为 “星爷的年纪?” 那我们该如何解析等等。

在构造出查询语义图之后,我们后续还需要解决同名实体和实体别名(实体消歧)问题,同时也需要进行谓语消歧的处理。

下一篇将介绍这些处理过程。

汪.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容