您的位置:首页 > 娱乐 > 八卦 > 微信公众号开发商城_web网页设计师培训_教育培训机构_关键词优化排名首页

微信公众号开发商城_web网页设计师培训_教育培训机构_关键词优化排名首页

2025/2/25 17:45:06 来源:https://blog.csdn.net/kobeyu652453/article/details/145556636  浏览:    关键词:微信公众号开发商城_web网页设计师培训_教育培训机构_关键词优化排名首页
微信公众号开发商城_web网页设计师培训_教育培训机构_关键词优化排名首页

文章目录

  • 一、TextRank 算法提取关键词 [工具包]
  • 二、TextRank 算法提取关键短语[工具包]
  • 三、TextRank 算法提取关键句[工具包]
  • 四、TextRank 算法提取关键句(Python源码实现)


一、TextRank 算法提取关键词 [工具包]

见链接
【自然语言处理】TextRank 算法提取关键词(Python源码实现)

也可以使用textrank4zh工具包

# coding=utf-8
# 导入textrank4zh的相关工具包
from textrank4zh import TextRank4Keyword, TextRank4Sentence# 导入常用工具包
import pandas as pd
import numpy as np# 关键词抽取
def keywords_extraction(text):# allow_speech_tags : 词性列表, 用于过滤某些词性的词tr4w = TextRank4Keyword(allow_speech_tags=['n', 'nr', 'nrfg', 'ns', 'nt', 'nz'])# text: 文本内容, 字符串# window: 窗口大小, int, 用来构造单词之间的边, 默认值为2# lower: 是否将英文文本转换为小写, 默认值为False# vertex_source: 选择使用words_no_filter, words_no_stop_words, words_all_filters中的>哪一个来构造pagerank对应的图中的节点#                默认值为'all_filters', 可选值为'no_filter', 'no_stop_words', 'all_filters'# edge_source: 选择使用words_no_filter, words_no_stop_words, words_all_filters中的哪>一个来构造pagerank对应的图中的节点之间的边#              默认值为'no_stop_words', 可选值为'no_filter', 'no_stop_words', 'all_filters', 边的构造要结合window参数# pagerank_config: pagerank算法参数配置, 阻尼系数为0.85tr4w.analyze(text=text, window=2, lower=True, vertex_source='all_filters',edge_source='no_stop_words', pagerank_config={'alpha': 0.85, })# num: 返回关键词数量# word_min_len: 词的最小长度, 默认值为1keywords = tr4w.get_keywords(num=6, word_min_len=2)# 返回关键词return keywordsif __name__ == "__main__":text = "来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式," \"我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂。国家天文台党委书记、" \"副台长赵刚在致辞一开始更是送上白居易的诗句:“令公桃李满天下,何须堂前更种花。”" \"据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站," \"获得国际永久编号第120730号。2018年9月25日,经国家天文台申报," \"国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会," \"正式将该小行星命名为“周又元星”。"# 关键词抽取keywords = keywords_extraction(text)print(keywords)

[{‘word’: ‘小行星’, ‘weight’: 0.05808441467341854}, {‘word’: ‘天文台’, ‘weight’: 0.057216537757425114}, {‘word’: ‘命名’, ‘weight’: 0.0485177005159723}, {‘word’: ‘中国’, ‘weight’: 0.04571647812425182}, {‘word’: ‘中国科学院’, ‘weight’: 0.03781893783699663}, {‘word’: ‘国家’, ‘weight’: 0.03438059254484017}]

二、TextRank 算法提取关键短语[工具包]

关键短语抽取: 关键词抽取结束后, 可以得到N个关键词, 在原始文本中相邻的关键词便构成了关键短语.
具体方法: 分析get_keyphrases()函数可知, 内部实现上先调用get_keywords()得到关键词, 然后分析关键词是否存在相邻的情况, 最后即可确定哪些是关键短语.

# coding=utf-8
from textrank4zh import TextRank4Keyword, TextRank4Sentence# 关键短语抽取
def keyphrases_extraction(text):tr4w = TextRank4Keyword()tr4w.analyze(text=text, window=2, lower=True, vertex_source='all_filters',edge_source='no_stop_words', pagerank_config={'alpha': 0.85, })# keywords_num: 抽取的关键词数量# min_occur_num: 关键短语在文中的最少出现次数keyphrases = tr4w.get_keyphrases(keywords_num=6, min_occur_num=1)# 返回关键短语return keyphrasesif __name__ == "__main__":text = "来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式," \"我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂。国家天文台党委书记、" \"副台长赵刚在致辞一开始更是送上白居易的诗句:“令公桃李满天下,何须堂前更种花。”" \"据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站," \"获得国际永久编号第120730号。2018年9月25日,经国家天文台申报," \"国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会," \"正式将该小行星命名为“周又元星”。"# 关键短语抽取keyphrases = keyphrases_extraction(text)print(keyphrases)

[‘小行星命名’]

三、TextRank 算法提取关键句[工具包]

关键句抽取: 句子抽取任务主要就是为了解决自动文本摘要任务, 将每一个sentence作为一个顶点, 根据两个句子之间的内容重复程度来计算他们之间的相似度. 由于不同的句子对之间相似度大小不同, 因此最终构建的是以相似度大小作为edge权重的有权图.


from textrank4zh import TextRank4Keyword, TextRank4Sentence# 关键句抽取
def keysentences_extraction(text):tr4s = TextRank4Sentence()# text: 文本内容, 字符串# lower: 是否将英文文本转换为小写, 默认值为False# source: 选择使用words_no_filter, words_no_stop_words, words_all_filters中的哪一个来生成句子之间的相似度#         默认值为'all_filters', 可选值为'no_filter', 'no_stop_words', 'all_filters'tr4s.analyze(text, lower=True, source='all_filters')# 获取最重要的num个长度大于等于sentence_min_len的句子用来生成摘要keysentences = tr4s.get_key_sentences(num=3, sentence_min_len=6)# 返回关键句子return keysentencesif __name__ == "__main__":text = "来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式," \"我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂。国家天文台党委书记、" \"副台长赵刚在致辞一开始更是送上白居易的诗句:“令公桃李满天下,何须堂前更种花。”" \"据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站," \"获得国际永久编号第120730号。2018年9月25日,经国家天文台申报," \"国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会," \"正式将该小行星命名为“周又元星”。"# 关键句抽取keysentences = keysentences_extraction(text)print(keysentences)

[{‘index’: 4, ‘sentence’: ‘2018年9月25日,经国家天文台申报,国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会,正式将该小行星命名为“周又元星”’, ‘weight’: 0.22810403250964517}, {‘index’: 3, ‘sentence’: ‘”据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站,获得国际永久编号第120730号’, ‘weight’: 0.21062461059717202}, {‘index’: 1, ‘sentence’: ‘4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式,我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂’, ‘weight’: 0.20209234016610828}]

四、TextRank 算法提取关键句(Python源码实现)

原理参考【自然语言处理】TextRank 算法提取关键词(Python源码实现)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author: yudengwu(余登武)
# @Date  : 2025/2/06
#@email:1344732766@qq.comimport jieba
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as npclass TextRank(object):def __init__(self, text, alpha, iternum):self.text = text  # 文本self.alpha = alpha  # 权重self.iternum = iternum  # 迭代次数self.top_n=2 #文本句子最小个数# 辅助函数 Jieba 分词def chinese_tokenizer(self,sentence):return jieba.cut(sentence, cut_all=False)# 辅助函数 余弦相似度def cosine_similarity_text(self,str1, str2):words1 = ' '.join(self.chinese_tokenizer(str1))words2 = ' '.join(self.chinese_tokenizer(str2))vectorizer = TfidfVectorizer()tfidf = vectorizer.fit_transform([words1, words2])return cosine_similarity(tfidf)[0][1]##步骤1   对文本进行分句def cut_text(self):# 1. 分句self.text = self.text.replace(r"!|?", "。")  # 将! ?替换为句号self.sentences = self.text.split(r"。")  # 简单按句号分句#步骤2  根据边的相连关系,构建矩阵def createMatrix(self):# 计算句子相似度矩阵self.sim_matrix = np.zeros((len(self.sentences), len(self.sentences)))for i in range(len(self.sentences)):for j in range(len(self.sentences)):if i != j:self.sim_matrix[i][j] = self.cosine_similarity_text(str(self.sentences[i]), str(self.sentences[j]))# 归一化for j in range(self.sim_matrix.shape[1]):  # 列sum = 0.1  # 防止分母为0for i in range(self.sim_matrix.shape[0]):  # 行sum += self.sim_matrix[i][j]  # 一列的和for i in range(self.sim_matrix.shape[0]):self.sim_matrix[i][j] /= sum# 步骤3  根据textrank公式计算权重def calPR(self):self.PR = np.ones((len(self.sentences), 1))  # 每个句子重要性初始化为1for i in range(self.iternum):self.PR = (1 - self.alpha) + self.alpha * np.dot(self.sim_matrix, self.PR)  # 重要性迭代更新# 步骤4  输出词和相应的权重def printResult(self):word_pr = {}for i in range(len(self.PR)):word_pr[self.sentences[i]] = self.PR[i][0]  # {句子:重要性}res = sorted(word_pr.items(), key=lambda x: x[1], reverse=True)[:5]  # 前5个句子print(res)if __name__ == '__main__':# 示例text = "来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式," \"我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂。国家天文台党委书记、" \"副台长赵刚在致辞一开始更是送上白居易的诗句:“令公桃李满天下,何须堂前更种花。”" \"据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站," \"获得国际永久编号第120730号。2018年9月25日,经国家天文台申报," \"国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会," \"正式将该小行星命名为“周又元星”。"tr = TextRank(text, 0.85, 600)tr.cut_text()tr.createMatrix()tr.calPR()tr.printResult()

结果>[(‘2018年9月25日,经国家天文台申报,国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会,正式将该小行星命名为“周又元星”’, 0.4601715134048322), (‘”据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站,获得国际永久编号第120730号’, 0.42860509563953664), (‘来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式,我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂’, 0.3821014436325072), (‘国家天文台党委书记、副台长赵刚在致辞一开始更是送上白居易的诗句:“令公桃李满天下,何须堂前更种花’, 0.2869523859422471), (‘’, 0.15000000000000002)]

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com