中文文本摘要提取 (文本摘要提取 有代码)基于python

您所在的位置:网站首页 自动生成摘要工具在哪找 中文文本摘要提取 (文本摘要提取 有代码)基于python

中文文本摘要提取 (文本摘要提取 有代码)基于python

2023-07-13 12:12| 来源: 网络整理| 查看: 265

任务简介

文本摘要旨在将文本或文本集合转换为包含关键信息的简短摘要。文本摘要按照输入类型可分为单文档摘要和多文档摘要。单文档摘要从给定的一个文档中生成摘要,多文档摘要从给定的一组主题相关的文档中生成摘要。按照输出类型可分为抽取式摘要和生成式摘要。 摘要:意思就是从一段文本 用几句话来概括这段话的意思

方法有很多 本文只讲我会的 。

思路

1 :将文本分词,统计一段文本的词频(当然是去除停用词之后的词频),得到{词:词频} 2: 对文本进行分句 3:对句子进行打分,统计这个句子中出现的每个词的词频, 句子得分=sum(每个词的词频 )

4.找到得分最高多的几个句子 作为摘要

得分最高的几个句子,包含了多个高频词 ,原则上可以作为概括文本的摘要。

算例:

数据集:《乘风破浪的小姐姐》 的一段网文

《乘风破浪的姐姐》现在已经播出到了第2期节目,在初舞台之后,现在大家都对姐姐们的实力是有所了解的了。在看完初舞台之后,很多观众就都清楚了哪些姐姐的实力是不错的,哪些姐姐是比较弱的了。不过呢只看了初舞台就认定姐姐们的实力是片面的了,因为小编发现在这么多“姐姐”中其实有一些姐姐是黑马选手呀。 像是在最新一期节目中,小编就发现了一位“黑马”姐姐,而这个人是谁呢?就是王智了,在最新播出的这一期节目中,王智可是成功逆袭了,她这回成功让观众们看到了她,让导师认可了自己的实力。《浪姐》出现“黑马”姐姐,初舞台最后一名,这一期却连连被夸!说到王智,在初舞台的时候小编对她的印象是不深的。 而在这一期节目中呢当小组在排练的时候,王智会反复跟老师强调自己是“最后一名”,这下小编采知道她原来在初舞台的时候是最后一名。王智在初舞台得到了最后一名,这打击对她来说还是挺大的,在排练的时候大家也可以看出了她的不自信。然而这回她很幸运地遇到了伊能静,在伊能静的教学下,最后她可是受到了老师的连连夸赞。 《浪姐》出现“黑马”姐姐,初舞台最后一名,这一期却连连被夸!此次节目中姐姐们进行了一段时间的练习,就去进行评测了,而在王智这一组表演完后,最终导师们也给出了评价,在她们三个人这一组中,王智就是被夸得最多的那一个。当在看了王智这次的表演后,最后赵兆老师竟然跟她道歉了。 赵兆老师说昨天很抱歉给她打了最低分,但是今天呢她真的让他觉得“傻”了,因为他将这首歌演唱得太好了,他觉得王智非常适合这首歌呢!一向比较严格的赵兆老师这回对王智很是赞扬,看来是被她的表演给惊喜到了。能够得到了专业的赵兆老师的赞扬,可见王智的实力那是很棒的呀。 而在赵兆说完后,黄晓明也补充说道“真的是,你一张嘴我们都惊了,真的。”这次可以从导师们的话中了解到王智的进步真的是很大了,她这次选择了一首合适自己的歌曲,并且有认真努力地去唱好它,就将它很好地诠释了出来了!这个姐姐其实并不是没有实力,只是实力没有一开始就表现出来。她真的是一匹“黑马”了,当看了这一期节目后,现在观众们都在期待着她后面带来的惊喜了!

代码来了 1读取文件; 第1,2,3行读取文件,读取后的文件格式为数组 第5,6,7将读取的文件转换为字符串

#读取文件 f=open('文档练手.txt',encoding='utf-8') data = f.readlines() # 直接将文件中按行读到list里,效果与方法2一样 f.close() # 关 #将文件转换成字符串 text="" for line in data: text+=line print(text)

在这里插入图片描述 2清洗数据: 第1,2行导入包 第3行去除一些类型[1]引用,本文用不上 第4行 单个空格替换额外空格 第5行分句 re.split(’(。|!|!|.|?|?)’,text) 加括号则保留分句符号如。!,不加则不保留分句符号

import re import jieba text = re.sub(r'[[0-9]*]',' ',text)#去除类似[1],[2] text = re.sub(r'\s+',' ',text)#用单个空格替换了所有额外的空格 sentences = re.split('(。|!|\!|\.|?|\?)',text)#分句 print(sentences)

在这里插入图片描述 3加载停用词

#加载停用词 def stopwordslist(filepath): stopwords = [line.strip() for line in open(filepath, 'r', encoding='gbk').readlines()] return stopwords stopwords = stopwordslist("停用词.txt")

停用词.txt 样子 在这里插入图片描述 4统计文本词频 第1行:创建一个空字典 第2行:文本分词,对每个单词循环 第3行:检查单词是否在stopwords停用词中,然后再次检查单词是否在word2count词频key中,不在则把word2count [word]置为1,否则word2count [word] 加1。 最后对词频归一化

#词频 word2count = {} #line 1 for word in jieba.cut(text): #对整个文本分词 if word not in stopwords: if word not in word2count.keys(): word2count[word] = 1 else: word2count[word] += 1 for key in word2count.keys(): word2count[key] = word2count[key] / max(word2count.values()) print(word2count)

在这里插入图片描述 5计算句子得分 第1行:创建一个空字典 第2行:对sentences中每个sentence进行循环 第3行:将sentence分词,对每个word循环 第4行:使用if检查word2count.keys()中是否存在该单词 第5行:这里我指定计算句子长度小于300的那部分,你可以根据需要更改 第6行:再次使用if-else条件,判断如果句子不存在于sentence2keys()中,则执行 sent2score [sentence] = word2count [word],否则执行 sent2score [sentence] + = word2count [word]

#计算句子得分 sent2score = {} for sentence in sentences: for word in jieba.cut(sentence): if word in word2count.keys(): if len(sentence)} for sentence in sentences: for word in jieba.cut(sentence): if word in word2count.keys(): if len(sentence)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3