NLP学习之语篇

1、语篇

        1.1语篇相关概念

                语篇:在文档中理解句子之间怎么关联起来的,在浏览文档时语篇可以将整个文档串成一条故事线,从上到下连贯有逻辑性。

                词性标注:在一个句子中标注所有单词的词性

                词汇/分布语义学:当我们训练这些模型时通常是以句子作为边界的

        1.2 三个关键语篇任务:                

                语篇分段(discourse segmentation):在一篇文章中,我们希望让它按照内容之间的连贯性分成一些独立的块,比如第一段是abstract,第二段是introuduction,我们希望在这两个段落之间插入一个分隔。

                语篇解析(discourse parsing):语篇解析的和核心思想是将文档组织为一种层级结构(hierarchical structure)。例如包含3个句子的一个小文档,语篇解析将这三个句子组织成为一个层级树形结构,这段文中心句是第一个子句,后面两个句子知识用来支持前面句子的观点,因此可以分为以下结构:

           

                 指代消解(Anaphora resolution)

                        目的消除文档中的指代词的歧义问题,比如在下面的句子中He在上下文猴子那个指代对象

                                                        

2、语篇分段

        2.1 语篇分段

  • 一个 文档(document)可以被视为 一个由分段组成的序列(a sequence of segments
  •         分段(Segment):一段连贯的文字
  • 连贯性(Coheion)
    • 连贯性意味着这段文字是围绕某个特定 主题(topic)或 功能(function)来组织的
      • 维基百科里的人物类传记:早年经历 (early years)、主要事件 (major events)、其他方面的影响 (impact on others)
      • 科学性的文章:简介 (introduction)、相关工作 (related work)、实验 (experiments)

           2.2 无监督方法 

                       2.2.1TextTiling算法:寻找句子之间具有较低词汇连贯性的点

                       2.2.2 对于每个句子间隙(sentence gap)    

                        创建两个 词袋向量(BOW vectors),它们由间隙两侧的各自 k 个句子中的单词组成

                         计算两个向量的余弦相似度得分

                         对于间隙 i,计算一个 深度分数(depth score),当深度分数超过某个 阈值(threshold)t 时,就在这个间隙处插入一个分界线     

                 2.3 TextTiling的例子

                   这里,我们来看一个具体的使用 TextTiling 算法进行语篇分段的例子,这里我们将相关参数设为 k=1,t=0.9(即词袋向量来自间隙前后的各一个句子,深度分数的阈值为 0.9)     

                                                   

                我们将文档分成了 7 个单独的句子,另外,我们还用不同颜色标记了文本中的一些内容相关的高频关键词。首先,我们计算第一个间隙的相似度,由于 k=1,所以这里我们得到第 1 个和第 2 个句子的词袋向量,并计算两个向量的余弦相似度,结果为 0.9。同理,我们计算第二个间隙的相似度(即第 2 个句子和第 3 个句子的词袋向量的余弦相似度),得到结果为 0.7。按照相同方法,计算得到所有其余间隙的相似度。

接下来,我们将计算每个间隙的深度分数。对于每个间隙 i,我们将前一个间隙 i−1 和当前间隙 i 的相似度差值 (simi−1−simi),与后一个间隙 i+1 和当前间隙 i 的相似度差值 (simi+1−simi) 进行求和,得到当前间隙 i 的深度分数。注意,对于第一个间隙,由于其前面没有其他间隙,所以在计算深度分数时我们可以直接忽略前项。通过计算得到的第一个间隙的深度分数为 −0.2<t=0.9,因此,我们不在这里插入分界线,而是继续往后看。我们发现,第三个间隙深度分数为 1.0>0.9,所以我们在第三个间隙处插入一个分界线。按照相同方法,计算得到所有其余间隙的深度分数。然后,我们发现没有其他分界线需要插入,因此最终我们将这段语篇以第三个句子间隙为界分为两段。

                        如果我们观察一下两个语篇分段的内容,我们会发现第一个分段主要介绍了某人面临的一个问题(没有等到电车),第二个分段则主要讲述了对于该问题的应对措施(回家取自行车)

    2.4 有监督方法     

  • 我们可以从一些容易获得的渠道得到一些带标签数据:
    • 科学出版物
    • 维基百科的文章

              

                 

                例如,我们知道科学出版物一般会按照章节(sections)和子章节(subsections)等进行分段。假设现在我们希望创建一些分段(segments)来合并文章中的一些段落(paragraphs),所以现在我们不再以句子为边界,而是以段落为边界进行分段。

                首先,我们将所有的段落单独分开,例如,上面的文章包含了 6 个单独的段落。然后,我们尝试对这些段落间隙进行标注:如果前后两个段落之间涉及到章节之间的跳转(例如,第 1 段到第 2 段是从 Abstract 跳到了 Introduction),那么我们将这两个段落之间的间隙给予一个正标签,即我们将对这两个段落进行切分;如果前后段落不涉及章节跳转(例如,第 2 段和第 3 段都属于 Introduction),我们将给予段落间隙一个负标签,即我们会不对这两个段落进行切分。然后,我们可以利用这些带标签数据来训练一个有监督分类器,再对测试集中的其他语篇数据进行分段

        2.5 有监督语篇分类器(supervised Discourage Segmenter)        

                应用一个二分类器来识别边界:就像前面提到的例子,我们可以采用一个基于正负标签数据的二分类器来决定是否需要对给定的两个段落进行切分

                或者使用序列分类器:我们也可以使用像 HMM 或者 RNN 这类序列模型进行分类。这种情况下,我们在分段时会考虑一些上下文信息,从而在分段时得到一个全局最优的决策结果

                我们还可以潜在地包含分类的章节类型 (section type):假如我们使用维基百科或者科学文章,我们知道其中每个章节都有特定的主题/功能,我们可以原问题转换为一个多任务问题:我们不仅对语篇文本进行分段,并且我们还需要给出每个分段所对应的章节

                 我们还可以集成一些更宽泛的特征: 包括:分布语义学和语篇标记(discourse markers)例如:threfore、and、howerver等

 3、语篇解析

        语篇解析(Discourse Parsing),其目标是将 语篇单元 (discourse units) 组织成层级结构中的故事线,例如:某段文本是否是对另一段文本的解释

        3.1 语篇解析:         

  • 识别 语篇单元 (discourse units),以及它们之间所维系的 关系(relations)
  • 修辞结构理论 (Rhetorical Structure Theory, RST) 是一个对文档中的语篇结构进行层级分析的框架。RST 在计算机科学中具有广泛应用,例如:总结 (Summarisation)、问答 (QA) 等。

        下面是之前的一个例子,RST可以将文档组织成语篇单元

                

          在这个文档中,我们一共有 3 个语篇单元,RST 试图在给定这些语篇单元的情况下,发现它们之间所维系的关系。例如:第 2 个从句和第 3 个从句之间存在 让步(Concession)关系,而这两个语篇单元作为整体又和第一个主要句子之间存在 详述(Elaboration)关系。一旦我们构建完成这样一个层级树形结构,我们就可以知道根结点代表的核心语篇单元以及用于支持它的其他语篇单元。

        3.2 RST  

                3.2.1 基本单元:基本语篇单元(elementary discourse units, EDUs)

                         通常是组成一个句子的 子句(clauses)

                         EDUs 不会跨越句子边界。 例如,RST 将下面的句子划分为两个 EDUs

                  3.2.2 RST 还定义了语篇单元之间的 关系(relations)

                          连接 (conjuction),论证 (justify),让步 (concession),详述 (elaboration) 等      

                           例如,在之前的例句中,第二个 EDU 和第一个 EDU 之间是详述 (elaboration) 关系      

                          

        3.3  核心 vs. 伴随体

                     在每个 RST 语篇关系中,都有一个论点作为 核心(nucleus),即主要论点

                     支持论点作为 伴随体(satellite)

                        

                         有些关系是对等的(例如:连接 conjunction),这种情况下,两个论点都是核心(nuclei)

                        

                         在 RST 关系中,总是存在作为核心的语篇单元,因此我们可以有两个核心,或者一个核心和一个伴随体,但是,不会存在只有伴随体组成的关系。

        3.4 RST树

                下面是一个RST树

                

                 一段 RST 关系将两个或者更多的语篇单元 (DU) 合并为一个复合语篇单元 (composite DU)。通常,一个 RST 树的是通过迭代地对语篇单元进行合并的方式构建的。可以看到,每段 RST 关系都是在两个语篇单元之间定义的。例如:1F 和 1G 之间存在 CONJUCTION 关系,而 1E 与 1F 和 1G 的结合体之间也存在 JUSTIFY 关系。一旦我们将 RST 中的两个语篇单元 (DU) 结合起来,我们将得到一个复合语篇单元 (composite DU),然后这个复合 DU 就可以和 RST 中的其他 DU 或者复合 DU 形成另外的关系

                通过重复合并 DU 的过程来创建一个 RST 树。在上面的例子中,我们可以自底向上依次对 DU 进行合并,最终得到一个 RST 树

        3.5 使用语篇标记进行解析

                接下来我们将讨论 解析(Parsing),即给定一段文本,我们希望 自动化 地构建出包含了语篇单元及其关系的 RST 树形结构

                一些语篇标记(discourse markers) 显示表明了一些关系,例如:although,but,for example... 我们可以使用这些语篇标记去构建简单的基于规则的解析器(rule-based parser),但是,许多关系根本没有用话语标记进行标记,可能在语篇单元中没有显示的语篇标记,但是这些语篇单元之间确实存在某种关系,还有重要的标记具有歧义性,例如"and" 可以表示连接(conjunction)、原因(reason)、论证(justify),我们不能总是基于简单的规则将其视为连接关系。

                

                        

                               

                         

                

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值