NLP:基于nltk和jieba库对文本实现提取文本摘要(两种方法实现:top_n_summary和mean_scored_summary)

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: NLP:基于nltk和jieba库对文本实现提取文本摘要(两种方法实现:top_n_summary和mean_scored_summary)

输出结果

image.png



1、测试文本


今天一大早,两位男子在故宫抽烟对镜头炫耀的视频在网络上传播,引发网友愤怒。有人感到后怕,600年的故宫真要这两个人给点了,万死莫赎。也有评论称,把无知当成炫耀的资本,丢人!

视频中两位男子坐在故宫公共休息区的遮阳伞下,面对镜头问出:“谁敢在故宫抽烟?”语气极其嚣张,表情带有挑衅意味。话音刚落,另外一位男子面向镜头吸了一口烟。而视频中两人也表示知道有故宫禁止吸烟的规定。

事实上,2013年5月18日是国际博物馆日,故宫从这一天开始至今一直实行全面禁烟。根据规定,故宫博物院全体员工在院合作单位和个人不管在室内和室外,也不分开放区与工作区,一律禁止吸烟,对违反禁止吸烟规定的人员将进行严格处罚并通报全院。

此外,在2015年6月1日起北京全市也开始了《控制吸烟条例》,规定公共场所工作场所室内环境室外排队等场合禁止吸烟,违者将最高被罚200元,全市统一设立举报电话12320。

视频在网络上传播开来,不少网友担心故宫的安危,称一旦发生火情,后果不堪设想,有网友表示,这样的行为应该被旅游景区拉近黑名单,建议终身禁止进入任何景区和各种场馆。


设计思路


后期更新……




核心代码

def sent_tokenizer(texts):

   start=0

   i=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+=1

       else:

           i+=1#若不是标点符号,则字符位置继续前移

           token=list(texts[start:i+2]).pop()#取下一个字符

   if start<len(texts):

       sentences.append(texts[start:])#这是为了处理文本末尾没有标点符号的情况

   return sentences

def load_stopwordslist(path):

   print('load stopwords...')

   stoplist=[line.strip() for line in codecs.open(path,'r',encoding='utf8').readlines()]

   stopwrods={}.fromkeys(stoplist)

   return stopwrods

def 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=-1

   for s in [list(jieba.cut(s)) for s in sentences]:

       sentence_idx+=1

       word_idx=[]

       for w in topn_words:

           try:

               word_idx.append(s.index(w))#关键词出现在该句子中的索引位置

           except ValueError:#w不在句子中

               pass

       word_idx.sort()

       if len(word_idx)==0:

           continue

       #对于两个连续的单词,利用单词位置索引,通过距离阀值计算族

       clusters=[]

       cluster=[word_idx[0]]

       i=1

       while 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+=1

       clusters.append(cluster)

       #对每个族打分,每个族类的最大分数是对句子的打分

       max_cluster_score=0

       for c in clusters:

           significant_words_in_cluster=len(c)

           total_words_in_cluster=c[-1]-c[0]+1

           score=1.0*significant_words_in_cluster*significant_words_in_cluster/total_words_in_cluster

           if score>max_cluster_score:

               max_cluster_score=score

       scores.append((sentence_idx,max_cluster_score))

   return scores;



相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】python之人工智能应用篇——文本生成技术
文本生成是指使用自然语言处理技术,基于给定的上下文或主题自动生成人类可读的文本。这种技术可以应用于各种领域,如自动写作、聊天机器人、新闻生成、广告文案创作等。
53 8
|
2月前
|
机器学习/深度学习 存储 人工智能
自然语言处理 Paddle NLP - 检索式文本问答-理论
自然语言处理 Paddle NLP - 检索式文本问答-理论
20 1
|
2月前
|
机器学习/深度学习 自然语言处理 算法
nlp文本提取关键词
8月更文挑战第21天
25 0
|
3月前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:文本生成与自然语言处理
【7月更文挑战第14天】 使用Python实现深度学习模型:文本生成与自然语言处理
63 12
|
6天前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习在自然语言处理中的应用与挑战
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,包括机器翻译、情感分析和文本生成等方面。同时,讨论了数据质量、模型复杂性和伦理问题等挑战,并提出了未来的研究方向和解决方案。通过综合分析,本文旨在为NLP领域的研究人员和从业者提供有价值的参考。
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在自然语言处理中的应用
【9月更文挑战第17天】本文主要介绍了AI技术在自然语言处理(NLP)领域的应用,包括文本分类、情感分析、机器翻译和语音识别等方面。通过实例展示了AI技术如何帮助解决NLP中的挑战性问题,并讨论了未来发展趋势。
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI技术在自然语言处理中的应用
【9月更文挑战第22天】本文将探讨AI技术在自然语言处理(NLP)领域的应用,包括文本挖掘、情感分析、机器翻译等方面。我们将通过实例和代码示例,展示如何使用Python和相关库实现这些功能。
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与未来展望
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,重点分析了神经网络模型如循环神经网络(RNN)、长短期记忆网络(LSTM)和Transformer等在文本生成、语义理解及情感分析等任务中的卓越表现。通过具体案例展示了这些模型如何有效解决传统方法难以处理的问题,并讨论了当前面临的挑战及未来可能的发展方向,为进一步研究提供了新的视角和思路。
|
22天前
|
机器学习/深度学习 数据采集 人工智能
AI技术在自然语言处理中的应用与挑战
【9月更文挑战第12天】本文将探讨AI技术在自然语言处理(NLP)领域的应用及其面临的挑战。我们将介绍NLP的基本概念、主要任务和应用场景,并分析当前AI技术在NLP中的局限性和未来发展趋势。通过实际案例和代码示例,我们将展示AI技术如何帮助解决NLP问题,并探讨如何克服现有挑战以实现更高效的自然语言处理系统。
|
8天前
|
机器学习/深度学习 自然语言处理 搜索推荐
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
32 0
下一篇
无影云桌面