推荐阅读:http://www.iis.sinica.edu.tw/papers/hsu/17741-F.pdf

http://www.ixueshu.com/document/c755e09b235a14d1318947a18e7f9386.html

MMR的全称为Maximal Marginal Relevance ,中文名字为最大边界相关法或者最大边缘相关。

在MMR的公式是这样的,截图来自http://www.cnblogs.com/little-horse/p/7191287.html

由于我们算的是自动摘要,所以主要看下面的公式。

左边的score计算的是句子的重要性分值,右边的计算的是句子与所有已经被选择成为摘要的句子之间的相似度最大值,注意这里的是负号,说明成为摘要的句子间的相似度越小越好。此处体现了MMR的算法原理,即均衡考虑了文章摘要的重要性和多样性。这种摘要提取方式与textrank不同,textrank只取全文的重要句子进行排序形成摘要,忽略了其多样性。

对于一篇文档,计算当前句子Q在全文中的相似度,MMR认为,对于相似度全文排名越高的表示为重要性越高。这里的相似度一般为余弦相似度,原来的论文就是cos。推荐介绍的两篇论文都有写到一些计算相似度的算法,可以研究研究。

代码来自:https://github.com/fajri91/Text-Summarization-MMR/blob/master/mmr.py 改写成中文摘要:

# -*- coding: utf-8 -*-
"""
Created on Thu Sep  7 17:10:57 2017@author: Mee
"""import os
import re
import jieba
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import operatorf=open(r'C:\Users\user\Documents\Python Scripts/stopword.dic')#停止词
stopwords = f.readlines()
stopwords=[i.replace("\n","") for i in stopwords]      def cleanData(name):setlast = jieba.cut(name, cut_all=False)seg_list = [i.lower() for i in setlast if i not in stopwords]return " ".join(seg_list)def calculateSimilarity(sentence, doc):#根据句子和句子,句子和文档的余弦相似度 if doc == []:return 0vocab = {}for word in sentence.split():vocab[word] = 0#生成所在句子的单词字典,值为0docInOneSentence = '';for t in doc:docInOneSentence += (t + ' ')#所有剩余句子合并for word in t.split():vocab[word]=0    #所有剩余句子的单词字典,值为0cv = CountVectorizer(vocabulary=vocab.keys())docVector = cv.fit_transform([docInOneSentence])sentenceVector = cv.fit_transform([sentence])return cosine_similarity(docVector, sentenceVector)[0][0]data=open(r"C:\Users\user\Documents\Python Scripts\test.txt")#测试文件
texts = data.readlines()#读行
texts=[i[:-1] if i[-1]=='\n' else i for i in texts]  sentences = []
clean = []
originalSentenceOf = {}import time
start = time.time()#Data cleansing
for line in texts:parts = line.split('。')[:-1]#句子拆分
#   print (parts) for part in parts:cl = cleanData(part)#句子切分以及去掉停止词
#       print (cl)sentences.append(part) #原本的句子clean.append(cl) #干净有重复的句子originalSentenceOf[cl] = part #字典格式
setClean = set(clean) #干净无重复的句子#calculate Similarity score each sentence with whole documents
scores = {}
for data in clean:temp_doc = setClean - set([data])#在除了当前句子的剩余所有句子score = calculateSimilarity(data, list(temp_doc)) #计算当前句子与剩余所有句子的相似度scores[data] = score#得到相似度的列表#print score#calculate MMR
n = 25 * len(sentences) / 100 #摘要的比例大小
alpha = 0.7
summarySet = []
while n > 0:mmr = {}#kurangkan dengan set summaryfor sentence in scores.keys():if not sentence in summarySet:mmr[sentence] = alpha * scores[sentence] - (1-alpha) * calculateSimilarity(sentence, summarySet) #公式  selected = max(mmr.items(), key=operator.itemgetter(1))[0]    summarySet.append(selected)
#   print (summarySet)n -= 1#rint str(time.time() - start)print ('\nSummary:\n')
for sentence in summarySet:print (originalSentenceOf [sentence].lstrip(' '))
print ('=============================================================')
print ('\nOriginal Passages:\n')

test.txt文本如下:

米家行车记录仪正式发布,告别驾驶孤单。继上周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迈一直在专注并打磨持续打磨的环节。
只有持续保持庞大的用户量,才能保证互联网增值服务的空间与价值。

生成摘要如下:

Summary:

米家行车记录仪是由小米生态链企业板牙科技所生产,也是唯一一家致力于车载智能产品的小米生态链公司
70迈创造性的将“小米生态链企业Mai OS/手机App汽车后市场服务”的模式相结合,在智能后视镜完美融合进小米产品体系的同时,用精品模式和数据驱动深挖驾驶场景的价值
继上周70迈智能后视镜在小米众筹上线,数小时便完成了目标众筹之后,今日小米生态链布局中的另一个车载智能新产品,米家行车记录仪正式上线小米商城,售价349元
为何小米生态链持续发力车载智能产品?随着中国汽车市场快速蓬勃发展,目前车辆存量已达1.2亿辆,还在以每年2000万以上的速度扩充,但是连载互联网的车辆占比低于5%

按照文中的顺序应该是这样的:

继上周70迈智能后视镜在小米众筹上线,数小时便完成了目标众筹之后,今日小米生态链布局中的另一个车载智能新产品,米家行车记录仪正式上线小米商城,售价349元
米家行车记录仪是由小米生态链企业板牙科技所生产,也是唯一一家致力于车载智能产品的小米生态链公司
为何小米生态链持续发力车载智能产品?随着中国汽车市场快速蓬勃发展,目前车辆存量已达1.2亿辆,还在以每年2000万以上的速度扩充,但是连载互联网的车辆占比低于5%
70迈创造性的将“小米生态链企业Mai OS/手机App汽车后市场服务”的模式相结合,在智能后视镜完美融合进小米产品体系的同时,用精品模式和数据驱动深挖驾驶场景的价值

另外我觉得需要改进的是:分词算法和停止词库,开头和结尾的重要度需要提升,还有文章中的转折语句重要性也需要提升。但是由于没有可监督的数据做测试,所以以后有机会再尝试一下。

=========

后续:

尝试了一下有一些并不是分的很好,比如下面这段

中新网9月8日电综合报道,美国征信机构Equifax称它们的数据库遭到了攻击,将近1.43亿美国人的个人信息可能被泄露,这几乎是全美人口的一半
报道称,网络犯罪者已经接触到了包括姓名、社会安全号码、出生日期、地址和驾照编号等在内的敏感信息
还有约20.9万美国客户的信用卡卡号泄露
此外,居住在英国和加拿大的人也受到影响
Equifax称,这次信息泄露可能发生在5月中旬到7月之间
公司称它们于7月29日制止了此次攻击
美国有线电视台(CNN)称,从被泄露信息的广度和类型来看,此次数据泄露可能是有史以来“最糟糕的”
Equifax的董事长兼首席执行官理查德·史密斯称:“对我们的公司来说,这显然是一起令人失望的事件,打击了我们工作的核心
Equifax是全美三大征信机构之一,追踪和评估美国消费者的财务状况
它有客户的贷款和信用卡资料,并有相关的决定信用评分的信息
Equifax的数据是从信用卡公司、银行和销售商等多种渠道获得
这些机构会将客户个人的信用活动报给征信机构
因此,并非所有受到此次信息泄露影响的人,都知道他们是Equifax的客户
消费者可以通过提交姓氏和社会安全号的后六位来查询自己是否受到影响
Equifax也将寄送文件给那些受到影响的客户

摘要出来的是:

因此,并非所有受到此次信息泄露影响的人,都知道他们是Equifax的客户
中新网9月8日电综合报道,美国征信机构Equifax称它们的数据库遭到了攻击,将近1.43亿美国人的个人信息可能被泄露,这几乎是全美人口的一半
Equifax也将寄送文件给那些受到影响的客户

这里编辑一下也是可以看的:

中新网9月8日电综合报道,美国征信机构Equifax称它们的数据库遭到了攻击,将近1.43亿美国人的个人信息可能被泄露,这几乎是全美人口的一半
并非所有受到此次信息泄露影响的人,都知道他们自己是Equifax的客户
Equifax将寄送文件给那些受到影响的客户

试着使用bm25+textrank的分值当作左边的score和MMR结合一下看下成果:

我先尝试用bm25+textrank提取摘要,下面显示的是原来的结果,第一条调换一下顺序可能结果不错,后续的话会再写这个分析

1、

70迈创造性的将“小米生态链企业MaiOS/手机App汽车后市场服务”的模式相结合,在智能后视镜完美融合进小米产品体系的同时,用精品模式和数据驱动深挖驾驶场景的价值
继上周70迈智能后视镜在小米众筹上线,数小时便完成了目标众筹之后,今日小米生态链布局中的另一个车载智能新产品,米家行车记录仪正式上线小米商城,售价349元
作为小米生态链企业产品,70迈智能后视镜不惜使用8.88英寸极限高清大屏,“1920*480”高清分辨率,1670万色,搭配高品质银镜7层光学镀膜,完美兼顾界面与镜面
2、
中新网9月8日电综合报道,美国征信机构Equifax称它们的数据库遭到了攻击,将近1.43亿美国人的个人信息可能被泄露,这几乎是全美人口的一半
报道称,网络犯罪者已经接触到了包括姓名、社会安全号码、出生日期、地址和驾照编号等在内的敏感信息
美国有线电视台(CNN)称,从被泄露信息的广度和类型来看,此次数据泄露可能是有史以来“最糟糕的”
关于二者结合的话,结果如下,第一条的画风变成了广告语:
1、
70迈创造性的将“小米生态链企业MaiOS/手机App汽车后市场服务”的模式相结合,在智能后视镜完美融合进小米产品体系的同时,用精品模式和数据驱动深挖驾驶场景的价值
米家行车记录仪搭载了SONYIMX323图像传感器,感光度高的CMOS可以全面提升暗光环境下的成像表现,感光元件大至1/2.9英寸,阴天或者夜景等弱光条件下,影像画面品质优势尽显
互联快速发展的时代,未来车辆将成为重要的终端入口之一
采用的耐高温胶和静电贴组合简单又安全,单指就可以进行触摸按键,160°超广角,覆盖三车道安全全方位
2、
中新网9月8日电综合报道,美国征信机构Equifax称它们的数据库遭到了攻击,将近1.43亿美国人的个人信息可能被泄露,这几乎是全美人口的一半
报道称,网络犯罪者已经接触到了包括姓名、社会安全号码、出生日期、地址和驾照编号等在内的敏感信息
美国有线电视台(CNN)称,从被泄露信息的广度和类型来看,此次数据泄露可能是有史以来“最糟糕的”

文本摘要没有一个特定的标准,看读者到底想从文章中获取信息,比如上面那个事件,有人希望获知事件发生的后果,有人希望获知事件的过程,有人需要或者产品发布的信息,有人关注产品本身的价值,所以看上去也没有所谓分得好坏的标准。而一般评价分的好坏,是根据Rouge-N标准,请看这里http://blog.csdn.net/lcj369387335/article/details/69845385,需要根据专家来人工生成摘要,还是比较麻烦的。

MMR自动摘要 python实现相关推荐

  1. 自动摘要生成(三):词向量相似度与有效词含量

    一.前言 新闻在动摘要生成的前两部分在这里: 自动摘要生成(一):最大边界相关算法(MMR) 自动摘要生成(二):由PageRank转变而来的TextRank算法 这里是新闻摘要生成系列的第三部分,这 ...

  2. Python实现利用MMR提取自动摘要

    目录 文章目录 目录 算法原理 Demo实践 算法原理 MMR的全称是Maximal Marginal Relevance ,最大边界相关法或者最大边缘相关.公式如下: MMR:=arg⁡max⁡Di ...

  3. python文本挖掘视频课_自动摘要的python实现

    请至PC端网页下载本课程代码课件及数据. 文本挖掘(TM),又称自然语言处理(NLP),是AI时代炙手可热的数据分析挖掘前沿领域,其所涉及的人机对话系统,推荐算法,文本分类等技术在BAT等企业中都得到 ...

  4. 自动摘要生成(一):最大边界相关算法(MMR)

    分享一下前一段时间公司需要做的文章自动摘要. 一.摘要方法 目前来说,文章摘要自动生成主要分为两种方法:生成式和抽取式. 生成式采用sequence2sequence+Attention的模型,采用E ...

  5. 推荐系统:最大边缘相关多样性算法(MMR)(python实现)

    MMR论文 Q:用户 R:待排序商品集合 S:已排序商品集合 D:商品 Maximal Marginal Relevance(MMR)主要通过结合用户对于商品的喜爱程度与商品间的相似度加权做差值,重新 ...

  6. 实现自动文本摘要(python,java)

    参考资料:http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html http://joshbohde.com/blog/d ...

  7. MMR(最大边界相关算法)

    最大边界相关算法 用于计算查询文本和搜索文档之间的相似度,然后对文档进行排序.算法公式为 MMR ( Q , C , R ) = A r g max ⁡ d i , i n , c k [ λ s i ...

  8. python 视频播放 拖动_视频画中画效果,拖动进度条可以seek到相应视频帧显示

    在视频开发中,我们常常看到这样的效果,拖动进度条时,或是在进度条上方或是在屏幕中间,显示拖动进度条位置时刻的某一帧画面. 这个需求,如果是你,你会如何做? 通常一个需求,不仅要考虑实现,还有考虑一些是 ...

  9. 文档自动摘要及案例实现

    文档自动摘要及案例实现 自动摘要的python实现: 以小说射雕英雄传中的第一段为例: import pandas as pd raw = pd.read_table('../data/金庸-射雕英雄 ...

最新文章

  1. 如果做不了合格的工程师,那就做个艺术家吧
  2. openstack环境准备
  3. 开发日记-20190430 关键词 apt,aspectj,javassist
  4. 【Android 逆向】IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )
  5. Angular Universal 学习笔记
  6. c#扩展方法的理解(二:接口)
  7. EJB3.0学习笔记---Bean实现多个接口的情况下定义,访问方式:
  8. python数据对比找不同_利用Python读取文件的四种不同方法比对
  9. 性能可靠服务器虚拟化,服务器虚拟化分析
  10. 《HBase权威指南》一第1章 简介
  11. 第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV
  12. python如何识别图片中的文字_如何利用Python识别图片中的文字
  13. python3自动化软件发布系统pdf_Python 3自动化软件发布系统 -Django 2实战
  14. java 支付宝 验证签名失败,关于支付宝签名校验失败的问题排解
  15. 8月第4周基金排行榜 | TokenInsight
  16. 视觉SLAM十四讲学习笔记——第十三讲 实践:设计SLAM系统
  17. spring boot验证码的实现
  18. 磁盘与文件系统管理--鸟哥私房菜读书笔记
  19. Hello World for RRDtool
  20. android手机功能创新,Android手机QQ浏览器1.1发布多项创新功能

热门文章

  1. 视频教程-C++微服务架构及安全云盘项目实训-C/C++
  2. 树莓派lnmp安装mysql_在树莓派上搭建LNMP环境
  3. 深度解读后疫情时代下,零售行业的趋势及技术前瞻
  4. 1only batches of spatial targets supported (non-empty 3D tensors) but got targets of size
  5. 记录eset nod32的使用~
  6. Qcon演讲实录|手机淘宝客户端的攻防演练实践
  7. 2019 China Collegiate Programming Contest Qinhuangdao Onsite F. Forest Program
  8. 机器学习与数据挖掘——数据预处理
  9. 最强数据集集合:50个最佳机器学习公共数据集
  10. iPhone屏幕投影到Mac屏幕