NLP:基于nltk和jieba库对文本实现提取文本摘要(两种方法实现:top_n_summary和mean_scored_summary)
NLP:基于nltk和jieba库对文本实现提取文本摘要(两种方法实现:top_n_summary和mean_scored_summary)
目录
输出结果
设计思路
核心代码
输出结果
1、测试文本
今天一大早,两位男子在故宫抽烟对镜头炫耀的视频在网络上传播,引发网友愤怒。有人感到后怕,600年的故宫真要这两个人给点了,万死莫赎。也有评论称,把无知当成炫耀的资本,丢人!
视频中两位男子坐在故宫公共休息区的遮阳伞下,面对镜头问出:“谁敢在故宫抽烟?”语气极其嚣张,表情带有挑衅意味。话音刚落,另外一位男子面向镜头吸了一口烟。而视频中两人也表示知道有故宫禁止吸烟的规定。
事实上,2013年5月18日是国际博物馆日,故宫从这一天开始至今一直实行全面禁烟。根据规定,故宫博物院全体员工在院合作单位和个人不管在室内和室外,也不分开放区与工作区,一律禁止吸烟,对违反禁止吸烟规定的人员将进行严格处罚并通报全院。
此外,在2015年6月1日起北京全市也开始了《控制吸烟条例》,规定公共场所工作场所室内环境室外排队等场合禁止吸烟,违者将最高被罚200元,全市统一设立举报电话12320。
视频在网络上传播开来,不少网友担心故宫的安危,称一旦发生火情,后果不堪设想,有网友表示,这样的行为应该被旅游景区拉近黑名单,建议终身禁止进入任何景区和各种场馆。
设计思路
后期更新……
核心代码
def sent_tokenizer(texts):start=0i=0#每个字符的位置sentences=[]punt_list='.!?。!?'.encode('utf-8') #',.!?:;~,。!?:;~'.decode('utf8')# punt_lists='.!?。!?'.decode()for text in texts:if text in punt_list and token not in punt_list: #检查标点符号下一个字符是否还是标点sentences.append(texts[start:i+1])#当前标点符号位置start=i+1#start标记到下一句的开头i+=1else:i+=1#若不是标点符号,则字符位置继续前移token=list(texts[start:i+2]).pop()#取下一个字符if start<len(texts):sentences.append(texts[start:])#这是为了处理文本末尾没有标点符号的情况return sentencesdef load_stopwordslist(path):print('load stopwords...')stoplist=[line.strip() for line in codecs.open(path,'r',encoding='utf8').readlines()]stopwrods={}.fromkeys(stoplist)return stopwrodsdef summarize(text):stopwords=load_stopwordslist('stopwords.txt')sentences=sent_tokenizer(text)words=[w for sentence in sentences for w in jieba.cut(sentence) if w not in stopwords if len(w)>1 and w!='\t']wordfre=nltk.FreqDist(words)topn_words=[w[0] for w in sorted(wordfre.items(),key=lambda d:d[1],reverse=True)][:N]scored_sentences=_score_sentences(sentences,topn_words)#approach 1,利用均值和标准差过滤非重要句子avg=numpy.mean([s[1] for s in scored_sentences])#均值std=numpy.std([s[1] for s in scored_sentences])#标准差mean_scored=[(sent_idx,score) for (sent_idx,score) in scored_sentences if score>(avg+0.5*std)]#approach 2,返回top n句子top_n_scored=sorted(scored_sentences,key=lambda s:s[1])[-TOP_SENTENCES:]top_n_scored=sorted(top_n_scored,key=lambda s:s[0])return dict(top_n_summary=[sentences[idx] for (idx,score) in top_n_scored],mean_scored_summary=[sentences[idx] for (idx,score) in mean_scored])def _score_sentences(sentences,topn_words):scores=[]sentence_idx=-1for s in [list(jieba.cut(s)) for s in sentences]:sentence_idx+=1word_idx=[]for w in topn_words:try:word_idx.append(s.index(w))#关键词出现在该句子中的索引位置except ValueError:#w不在句子中password_idx.sort()if len(word_idx)==0:continue#对于两个连续的单词,利用单词位置索引,通过距离阀值计算族clusters=[]cluster=[word_idx[0]]i=1while i<len(word_idx):if word_idx[i]-word_idx[i-1]<CLUSTER_THRESHOLD:cluster.append(word_idx[i])else:clusters.append(cluster[:])cluster=[word_idx[i]]i+=1clusters.append(cluster)#对每个族打分,每个族类的最大分数是对句子的打分max_cluster_score=0for c in clusters:significant_words_in_cluster=len(c)total_words_in_cluster=c[-1]-c[0]+1score=1.0*significant_words_in_cluster*significant_words_in_cluster/total_words_in_clusterif score>max_cluster_score:max_cluster_score=scorescores.append((sentence_idx,max_cluster_score))return scores;
NLP:基于nltk和jieba库对文本实现提取文本摘要(两种方法实现:top_n_summary和mean_scored_summary)相关推荐
- python,基于http协议,最常用的是GET和POST两种方法
基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称 接口功能 接口地址 支持格式 json/xml 请求方式 请求示例 请求参数(是否必填.数据类型.传递参数 ...
- html选择文本框后提示消失,两种方法实现文本框输入内容提示消失
第一种方法: 基于HTML5 input标签的新特性 - placeholder .另外,x-webkit-speech 属性可以实现语音输入功能. 第二种方法: 用span模拟,定位span,借助J ...
- NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码
NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码 目录 全部代码 相关文章 NLP之情感分析:基于python编程(jieba库)实现中文文本情 ...
- NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码
NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码 目录 全部代码 相关文章 NLP之TEA:基于python编程(jieba库)实现中文文本情感分 ...
- NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)
NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分) 目录 输出结果 设计思路 相关资料 1.关于代码 2.关于数据集 关于留言 1.留言内容的注意事项 2.如 ...
- NLP:基于snownlp库对文本实现提取文本关键词和文本摘要
NLP:基于snownlp库对文本实现提取文本关键词和文本摘要 目录 输出结果 1.测试文本 设计思路 核心代码 输出结果 1.测试文本 今天一大早,两位男子在故宫抽烟对镜头炫耀的视频在网络上传播,引 ...
- NLP:基于textrank4zh库对文本实现提取文本关键词、文本关键短语和文本摘要
NLP:基于textrank4zh库对文本实现提取文本关键词.文本关键短语和文本摘要 目录 输出结果 设计思路 核心代码 输出结果 关键词: 故宫 0.030737773083470445 镜头 0. ...
- python jieba库分词_Python基于jieba库进行简单分词及词云功能实现方法
本文实例讲述了Python基于jieba库进行简单分词及词云功能实现方法.分享给大家供大家参考,具体如下: 目标: 1.导入一个文本文件 2.使用jieba对文本进行分词 3.使用wordcloud包 ...
- stm32 lwip 如何发送不出_mbedtls | 移植mbedtls库到STM32裸机的两种方法
一.mbedtls 开源库 1. mbedtls是什么 Mbed TLS是一个开源.可移植.易于使用.代码可读性高的SSL库.可实现加密原语,X.509证书操作以及SSL / TLS和 DTLS 协议 ...
最新文章
- winstore独立安装包下载_QT使用教程(二)之下载篇
- 极客学院职业路径图课程视频下载-爬虫
- 浅谈前端安全问题及策略
- linux 设置变量在脚本之外可用,linux – 在ssh上运行脚本时,环境变量不可用
- webkit如何实现JS DOM binding—基于V8分析
- 支付宝支付 - 构建支付表单填并提交
- 一个图片展示效果的站点
- 人工智能领域论文常见基本概念笔记
- 微信小程序 - 自定义swiper(dot)指示点
- Android--多线程之Handler
- 编写JAVA脚本的JSP页面
- java计算器课程报告_java课程设计报告计算器设计.doc
- 自学android要多长时间,自学android开发,从零开始学Android
- Python社区发现—Louvain—networkx和community
- 怎样杀计算机病毒,如何彻底查杀计算机病毒
- gophp解释器_golang底层用什么语言实现的
- 【建议收藏】6款高质量Windows软件,好用到无法拒绝
- 太原学院计算机科学与技术在哪个校区,太原学院有几个校区及校区地址
- 千牛插件开发,千牛SDK开发。
- 【概念】权限管理模型(RBAC、ABAC、ACL)