首页 > 技术文章 > 利用最大边缘相关改进一个简单的文本摘要程序

little-horse 2017-07-16 18:21 原文

关于文本摘要的介绍网上有很多资料,大家可以搜一搜。本文主要是针对单文档文本摘要的抽取方法,使用java实现。主要方法是基于两篇文献:

1.

(这里引用阮一峰的博客介绍http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html。)H.P. Luhn在1958年的论文《The Automatic Creation of Literature Abstracts》

Luhn博士认为,文章的信息都包含在句子中,有些句子包含的信息多,有些句子包含的信息少。"自动摘要"就是要找出那些包含信息最多的句子。

句子的信息量用"关键词"来衡量。如果包含的关键词越多,就说明这个句子越重要。Luhn提出用"簇"(cluster)表示关键词的聚集。所谓"簇"就是包含多个关键词的句子片段。

上图就是Luhn原始论文的插图,被框起来的部分就是一个"簇"。只要关键词之间的距离小于"门槛值",它们就被认为处于同一个簇之中。Luhn建议的门槛值是4或5。也就是说,如果两个关键词之间有5个以上的其他词,就可以把这两个关键词分在两个簇。

下一步,对于每个簇,都计算它的重要性分值。

以前图为例,其中的簇一共有7个词,其中4个是关键词。因此,它的重要性分值等于 ( 4 x 4 ) / 7 = 2.3。

然后,找出包含分值最高的簇的句子(比如5句),把它们合在一起,就构成了这篇文章的自动摘要。

2.

利用最大边缘相关模型(Maximal Marginal Relevance)提高返回句子的多样性。因为使用以上方法通常会得到一些太相似或太相近的句子,为了避免这种情况,结合MMR来增加内容的多样性。这种方法是权衡相关性和多样性。使得摘要内容更加的全面。MMR方法可以较好地解决句子选择多样性的问题。具体地说,在MMR模型中,同时将相关性和多样性进行衡量。因此,可以方便的调节相关性和多样性的权重来满足偏向“需要相似的内容”或者偏向“需要不同方面的内容”的要求。摘要的核心便是要从原文句子中选一个句子集合,使得该集合在相关性与多样性的评测标准下,得分最高。具体的资料介绍可以看https://github.com/jiangnanboy/NewsSummary有一篇英文介绍。

mmr

Di: Documents in the collection C
Q: Query,
R: Relevant documents in C,
S: Current result set

- Constructs the result set incrementally
- User-tunable diversity through λ parameter
- High λ = Higher accuracy
- Low λ = Higher diversity

以上公式中是针对搜索引擎中的查询与文档的关系,这里我们稍作改变:

 max[λ*score(i) - (1-λ)*max[similarity(i,j)]]:score(i)根据1中计算句子的得分,similarity(i,j)句子i与j的相似度

MMR程序java程序(完整程序https://github.com/jiangnanboy/NewsSummary)

 1 /**
 2  * 最大边缘相关(Maximal Marginal Relevance),根据λ调节准确性和多样性
 3  * max[λ*score(i) - (1-λ)*max[similarity(i,j)]]:score(i)句子的得分,similarity(i,j)句子i与j的相似度
 4  * User-tunable diversity through λ parameter
 5  * - High λ= Higher accuracy
 6  * - Low λ= Higher diversity
 7  * @param sortedSentList 排好序的句子,编号及得分
 8  * @return
 9  */
10 private Map<Integer,Double> MMR(List<Map.Entry<Integer, Double>> sortedSentList){
11     //System.out.println("MMR In...");
12     double[][] simSentArray=sentJSimilarity();//所有句子的相似度
13     Map<Integer,Double> sortedLinkedSent=new LinkedHashMap<Integer,Double>();
14     for(Map.Entry<Integer, Double> entry:sortedSentList){
15         sortedLinkedSent.put(entry.getKey(),entry.getValue());
16     }
17     Map<Integer,Double> MMR_SentScore=new LinkedHashMap<Integer,Double>();//最终的得分(句子编号与得分)
18     Map.Entry<Integer, Double> Entry=sortedSentList.get(0);//第一步先将最高分的句子加入
19     MMR_SentScore.put(Entry.getKey(), Entry.getValue());
20     boolean flag=true;
21     while(flag){
22         int index=0;
23         double maxScore=Double.NEGATIVE_INFINITY;//通过迭代计算获得最高分句子
24         for(Map.Entry<Integer, Double> entry:sortedLinkedSent.entrySet()){
25             if(MMR_SentScore.containsKey(entry.getKey())) continue;
26             double simSentence=0.0;
27             for(Map.Entry<Integer, Double> MMREntry:MMR_SentScore.entrySet()){//这个是获得最相似的那个句子的最大相似值
28                 double simSen=0.0;
29                 if(entry.getKey()>MMREntry.getKey())
30                     simSen=simSentArray[MMREntry.getKey()][entry.getKey()];
31                 else
32                     simSen=simSentArray[entry.getKey()][MMREntry.getKey()];
33                 if(simSen>simSentence){
34                     simSentence=simSen;
35                 }
36             }
37             simSentence=λ*entry.getValue()-(1-λ)*simSentence;
38             if(simSentence>maxScore){
39                 maxScore=simSentence;
40                 index=entry.getKey();//句子编号
41             }
42         }
43         MMR_SentScore.put(index, maxScore);
44         if(MMR_SentScore.size()==sortedLinkedSent.size())
45             flag=false;
46     }
47     return MMR_SentScore;
48 }
View Code
测试文本:
家行车记录仪正式发布,告别驾驶孤单<@>继上周70迈智能后视镜在小米众筹上线,数小时便完成了目标众筹之后," +
"今日小米生态链布局中的另一个车载智能新产品,米家行车记录仪正式上线小米商城,售价349元。米家行车记录仪搭载了SONY IMX323图像传感器," +
"感光度高的CMOS可以全面提升暗光环境下的成像表现,感光元件大至1/2.9英寸,阴天或者夜景等弱光条件下,影像画面品质优势尽显。" +
"同时搭载了Mstar的全高清影像处理芯片,具备1080P的图像处理技术。采用的耐高温胶和静电贴组合简单又安全,单指就可以进行触摸按键," +
"160°超广角,覆盖三车道安全全方位。米家行车记录仪是由小米生态链企业板牙科技所生产,也是唯一一家致力于车载智能产品的小米生态链公司。" +
"为何小米生态链持续发力车载智能产品?随着中国汽车市场快速蓬勃发展,目前车辆存量已达1.2亿辆,还在以每年2000万以上的速度扩充," +
"但是连载互联网的车辆占比低于5%。互联快速发展的时代,未来车辆将成为重要的终端入口之一。2015年,行车记录仪全国各品牌销量在3500万台每年," +
"大量厂商试图挤入这个火热的市场。2016下半年,在行业经过大洗牌后,剩下的厂商对自家品牌进行积累,汽车后视镜的2.0时代正式拉开序幕。" +
"2017年,一家叫做70迈的智能后视镜产品出现在了浪潮之中,其背后同时站着顺为和小米等多家知名VC,这样的产品为何会受到多方投资的关注?作为小米生态链企业产品," +
"70迈智能后视镜不惜使用8.88英寸极限高清大屏,“1920*480”高清分辨率,1670万色,搭配高品质银镜7层光学镀膜,完美兼顾界面与镜面。" +
"屏保界面进入沉浸模式,将导航HUD、ADAS预警与整车自然融为一体。70迈创造性的将“小米生态链企业+Mai OS/手机App+汽车后市场服务”的模式相结合," +
"在智能后视镜完美融合进小米产品体系的同时,用精品模式和数据驱动深挖驾驶场景的价值。业内人士表示,未来靠硬件赚大钱已经不再是市场发展主趋势," +
"小米就是一个最好的例子,只有互联网服务才是突破。70迈的产品用户黏性是否足够高,产品更新换代是否足够快,都是70迈一直在专注并打磨持续打磨的环节。" +
"只有持续保持庞大的用户量,才能保证互联网增值服务的空间与价值。"+
"NULL<@>国际<@>齐鲁网<@>日本男子袭击女学生扯走内裤 事发半年嫌犯仍在逃<@>日本警方公布的照片国际在线专稿:据日本媒体3月16日报道," +
"去年9月,东京发生一起男子袭击高中女生并将其内裤扯走的事件。16日,东京警方公开了案发现场摄像头拍下的男子正脸照片。目前,警方正在追捕这名男子。" +
"据警方介绍,去年9月24日晚上10时10分左右,在东京足立区的一个公寓门前,一名正要回家的女高中生被这名男子从背后袭击。男子用手捂住她的嘴," +
"并将她放倒在地,将手伸进裙子里做出猥亵行为,最后扯走内裤逃跑。这名男子大约30多岁,身高在165厘米到170厘米之间,案发时穿着白色T恤和蓝色裤子。" +
"[责任编辑:杨凡、苏琛]想爆料?请登录《阳光连线》(http://minsheng.iqilu.com/)、拨打新闻热线0531-66661234," +
"或登录齐鲁网官方微博(@齐鲁网)提供新闻线索。齐鲁网广告热线0531-81695052,诚邀合作伙伴。"+
"NULL<@>商业职场<@>金羊网<@>国务院:实施城乡居民增收行动 这七类人将“加薪”<@>" +
"国务院6日印发《&ldquo;十三五&rdquo;促进就业规划》,《规划》提出,江苏镇江,上海" +
"实施城乡居民增收行动,技能人才、新型职业农民、科研人员、小微创业者、企业经营管理人员、基层干部队伍、有劳动能力的困难群体这七类人将&ldquo;" +
"加薪&rdquo;。城乡居民增收行动:1.技能人才增收行动。发挥企业主体作用,提升技能人才待遇;完善技术工人薪酬激励机制。" +
"贯通职业资格、学历等认证渠道;营造崇尚技能的社会氛围,培养造就更多技术工人。2.新型职业农民增收行动。" +
"将培育新型职业农民纳入国家教育培训发展规划,提高职业农民增收能力,创造更多就业空间,拓展增收渠道。" +
"3.科研人员增收行动。保障合理的基本薪酬水平,提高就业质量;落实中央财政科研项目资金管理有关政策," +
"发挥科研项目资金的激励引导作用。健全绩效评价和奖励机制,激励创业创新。4.小微创业者增收行动。" +
"深化简政放权、放管结合、优化服务改革,释放市场活力,降低市场准入门槛,健全创业成果利益分配机制," +
"打通创业创富通道。5.企业经营管理人员增收行动。在国有企业建立职业经理人制度," +
"采取多种方式探索完善中长期激励机制;为非公经济组织重点营造公平、公正、透明、稳定的法治环境," +
"依法平等保护财产权。6.基层干部队伍增收行动。完善基层干部队伍薪酬制度;实现对不同地区、不同岗位的差别化激励," +
"充分调动基层干部队伍积极性。7.有劳动能力的困难群体增收行动。鼓励有劳动能力的困难群体提升人力资本,主动参加生产劳动,通过自身努力增加收入。编辑:"+
"NULL<@>财经<@>中江网<@>“千企千镇工程”启动仪式在京举行<@>

summary: 

米家行车记录仪是由小米生态链企业板牙科技所生产,也是唯一一家致力于车载智能产品的小米生态链公司。为何小米生态链持续发力车载智能产品?作为小米生态链企业产品,70迈智能后视镜不惜使用8.NULL<@>国际<@>齐鲁网<@>日本男子袭击女学生扯走内裤 事发半年嫌犯仍在逃<@>日本警方公布的照片国际在线专稿:据日本媒体3月16日报道,去年9月,东京发生一起男子袭击高中女生并将其内裤扯走的事件。促进就业规划》,《规划》提出,江苏镇江,上海实施城乡居民增收行动,技能人才、新型职业农民、科研人员、小微创业者、企业经营管理人员、基层干部队伍、有劳动能力的困难群体这七类人将&ldquo加薪。

 


参考资料:1.阮一峰的博客介绍http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html
     2.The Automatic Creation of Literature Abstracts
     3.MMR: Maximal Marginal Relevance Devrim Şahin & Selçuk Emre Solmaz

推荐阅读