logo
BosonNLP Blog
玻森新闻自动摘要算法简介

Alt text

《一张图看懂自动摘要》中,已经为大家简要勾勒了自动摘要技术。在这篇文章中,将要详细谈一谈自动摘要算法实现,以及玻森进行的优化。

如前文所说,自动摘要可以分为笼统式和查询式。由于查询式摘要的应用场景较为特定,笼统式摘要成为现阶段主流,它也能在很大程度上满足人们对摘要的需求。因此玻森的新闻摘要是笼统式抽取摘要。

玻森采用的是最大边缘相关模型(Maximal Marginal Relevance)的一个变种。MMR是无监督学习模型,它的提出是为了提高信息检索(Information Retrieval)系统的表现。例如搜索引擎就是目前大家最常用的信息检索系统。大家可能经常会碰到,对于我们输入的一个关键词,搜索引擎通常会给出重复的或者内容太接近的检索的情况。为了避免这个现象,搜索引擎可以通过MMR来增加内容的多样性,给出多方面考虑的检索结果,以此来提高表现。

这样的思想是可以被借鉴用来做摘要的,因为它是符合摘要的基本要求的,即权衡相关性和多样性。不难理解,摘要结果与原文的相关性越高,它就接近全文中心意思。而考虑多样性则使得摘要内容更加的全面。非常的直观和简单是该模型的一个优点。

相比于其他无监督学习方法,如TextRank(TR), PageRank(PR)等,MMR是考虑了信息的多样性来避免重复结果。TR,PR是基于图(Graph)的学习方法,每个句子看成点,每两个点之间都有一条带权重(Weighted)的无向边。边的权重隐式定义了不同句子间的游走概率。这些方法把做摘要的问题看成随机游走来找出稳态分布(Stable Distribution)下的高概率(重要)的句子集,但缺点之一便是无法避免选出来的句子相互之间的相似度极高的现象。

Alt text

而MMR方法可以较好地解决句子选择多样性的问题。具体地说,在MMR模型中,同时将相关性多样性进行衡量。因此,可以方便的调节相关性和多样性的权重来满足偏向“需要相似的内容”或者偏向“需要不同方面的内容”的要求。对于相关性和多样性的具体评估,玻森是通过定义句子之间的语义相似度实现。句子相似度越高,则相关性越高而多样性越低。

自动摘要的核心便是要从原文句子中选一个句子集合,使得该集合在相关性与多样性的评测标准下,得分最高。数学表达式如下。

$$ \mathrm{MMR = arg\ \underset{D*{i}\in R \setminus S}{max}\left [ \lambda sim*{1}\left (D*{i}, Q \right ) - \left ( 1 - \lambda \right )\underset{D*{j}\in S}{max}\ sim*{2}\left ( D*{i}, D_{j} \right )\right ]}$$

需要注意的是,D,Q,R,S都为句子集,其中,D表示当前文章,Q表示当前中心意思,R表示当前非摘要,S表示当前摘要。

可以看出,在给定句子相似度的情况下,上述MMR的求解为一个标准的最优化问题。但是,上述无监督学习的MMR所得摘要准确性较低,因为全文的结构信息难以被建模,如段落首句应当有更高的权重等。为了提高新闻自动摘要的表现,玻森在模型中加入了全文结构特征,将MMR改为有监督学习方法。从而模型便可以通过训练从“标准摘要”中学习特征以提高准确性。

玻森采用摘要公认的Bi-gram ROUGE F1方法来判断自动生成的摘要和“标准摘要”的接近程度。经过训练,玻森在训练数集上的表现相对于未学习的摘要结果有了明显的提升——训练后的摘要系统F1提高了30%。值得一提的是,在特征训练中,为了改善摘要结果的可读性,玻森加指代关系特征,使得模型表现提高了8%。摘要引擎的具体调用API可以参见文档


玻森分词与词性标注揭秘

在九月初BosonNLP全面开放了分词和词性标注引擎以后,很多尤其是从事数据处理和自然语言研究的朋友在试用后很好奇,玻森如何能够做到目前的高准确率?希望这篇文章能够帮助大家理解玻森分词背后的实现原理。 众所周知,中文并不像英文那样词与词之间用空格隔开,因此,在一般情况下,中文分词与词性标注往往是中文自然语言处理的第一步。一个好的分词系统是有效进行中文相关数据分析和产品开发的重要保证。 玻森采用的结构化预测模型是传统线性条件随机场(Linear-chain CRF)的一个变种。在过去及几年的分词研究中,以字符为单位进行编码,从而预测分词与词性标注的文献占到了主流。这类模型虽然实现较容易,但比较难捕捉到高阶预测变量之间的关系。比如传统进行词性标注问题上使用Tri-gram特征能够得到较高准确率的结果,但一阶甚至高阶的字符CRF都难以建立这样的关联。所以玻森在字符编码以外加入了词语的信息,使这种高阶作用同样能被捕捉。 分词与词性标注中,新词识别与组合切分歧义是两个核心挑战。玻森在这方面做了不少的优化,包括对特殊字符的处理,对比较有规律的构词方式的特征捕捉等。例如,近些年比较流行采用半监督的方式,通过使用在大规模无标注数据上的统计数据来改善有监督学习中的标注结果,也在我们的分词实现上有所应用。比如通过使用Accessory Variety作为特征,能够比较有效发现不同领域的新词,提升泛化能力。 我们都知道上下文信息是解决组合切分歧义的重要手段。而作为一个面向实际商用环境的算法,除了在准确率上的要求之外,还需要注意模型算法的时间复杂度需要足够高效。例如,相比于普通的Linear-chain CRF,Skip-chain CRF因为加入了更多的上下文信息,能够在准确率上达到更好的效果,但因为其它在训练和解码过程,不论是精确算法还是近似算法,都难以达到我们对速度的要求,所以并没有在我们最终实现中采用 ...

阅读全文…
玻森分词与词性标注引擎新版上线,全面免费开放!

分词在很多网站平台,APP的开发中都是不可或缺的组件,但网上常见的分词项目,对新词与切分歧义的处理差强人意,甚至缺乏一个统一的词语切分标准。在过去的一年时间里,我们玻森在与很多开发团队的沟通中,不断看到这样的情况上演: 开发者由于项目进度周期等限制,对于分词需求,常常直接在网上搜索到一个可能已经停止维护的分词系统,进行简单测试后,快速集成上线。项目初期一切都看上去良好,但随着数据增多、使用的深入,越来越多的问题不断暴露出来。如集成在网站搜索中,随着项目开展需要手动添加越来越多的特殊判定规则以修复由分词所产生的各种bad case,最终使得项目变得愈发臃肿与维护困难。 为开发者提供高质量的分析引擎,这是我们BosonNLP语义开发平台成立的初衷。自然语言处理(NLP)是一个专业领域,玻森已经有多年的积累。我们希望自己在NLP上花费足够多的时间,从而作为开发者的您不需要在上面花费太多时间。希望您能更多集中在产品和创意,或得闲出门走走,看看这个挺大的世界。 本次分词与词性标注引擎是BosonNLP过去一年最大的升级 我们将服务器从美国迁回了中国,调用速度有成倍的提升 通过不断对算法进行调优,我们成功将分词与词性标注的错误率降低了25%~35% 我们决定将其不加限制,完全免费开放出来 希望能对您有所帮助~ BosonNLP团队 新特性 RESP API模式,SDK与之前调用接口完全兼容 ...

阅读全文…
  • 1
  • 2