Python实现高频关键词筛选与共现次数计算

在这里插入图片描述

更多Python学习内容:ipengtao.com

大家好,我是彭涛,今天为大家分享 Python实现高频关键词筛选与共现次数计算,全文3300字,阅读大约10分钟。

在文本分析和自然语言处理中,关键词的提取和关键词共现分析是常见的任务。本文将详细介绍如何使用Python进行高频关键词的筛选以及计算关键词的共现次数,通过详实的示例代码帮助大家更好地理解和应用这些技术。

文本预处理

首先,需要对文本进行预处理,包括去除停用词、分词等步骤。使用常见的NLP库如NLTK或spaCy可以方便地实现这些功能。

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenizenltk.download('stopwords')
nltk.download('punkt')def preprocess_text(text):stop_words = set(stopwords.words('english'))words = word_tokenize(text.lower())filtered_words = [word for word in words if word.isalnum() and word not in stop_words]return filtered_words

高频关键词筛选

使用词频统计的方法,可以筛选出文本中的高频关键词。这里以一个简单的示例为例:

from collections import Counterdef extract_keywords(text, top_n=5):words = preprocess_text(text)word_freq = Counter(words)top_keywords = word_freq.most_common(top_n)return [keyword[0] for keyword in top_keywords]

关键词共现计算

计算关键词的共现次数有助于理解它们之间的关联性。以下是一个简单的共现计算示例:

def co_occurrence_matrix(texts, keywords):co_matrix = {keyword: {k: 0 for k in keywords} for keyword in keywords}for text in texts:words = preprocess_text(text)for i, keyword in enumerate(keywords):if keyword in words:for j in range(i + 1, len(keywords)):if keywords[j] in words:co_matrix[keyword][keywords[j]] += 1co_matrix[keywords[j]][keyword] += 1return co_matrix

示例与应用

下面使用一些示例文本来演示如何应用上述方法:

texts = ["Python is a powerful programming language.","Data science involves analyzing and interpreting complex data sets.","Machine learning is a subset of artificial intelligence.","Python libraries such as pandas and numpy are widely used in data analysis."
]top_keywords = extract_keywords(' '.join(texts))
print("Top Keywords:", top_keywords)co_matrix = co_occurrence_matrix(texts, top_keywords)
print("Co-Occurrence Matrix:")
for keyword, co_keywords in co_matrix.items():print(f"{keyword}: {co_keywords}")

可视化

最后,可以使用可视化工具如matplotlib或seaborn对关键词共现进行可视化展示,更直观地理解它们之间的关系。

import seaborn as sns
import matplotlib.pyplot as pltco_matrix_df = pd.DataFrame(co_matrix)
sns.heatmap(co_matrix_df, annot=True, cmap="YlGnBu")
plt.title("Keyword Co-Occurrence Matrix")
plt.show()

进一步优化与应用

1 TF-IDF权重

为了更准确地衡量关键词的重要性,可以使用TF-IDF(Term Frequency-Inverse Document Frequency)权重,它考虑了关键词在整个语料库中的重要性。

from sklearn.feature_extraction.text import TfidfVectorizerdef extract_keywords_tfidf(texts, top_n=5):vectorizer = TfidfVectorizer(stop_words='english')tfidf_matrix = vectorizer.fit_transform(texts)feature_names = vectorizer.get_feature_names_out()tfidf_sum = tfidf_matrix.sum(axis=0)tfidf_scores = [(feature_names[i], tfidf_sum[0, i]) for i in range(len(feature_names))]tfidf_scores = sorted(tfidf_scores, key=lambda x: x[1], reverse=True)return [keyword[0] for keyword in tfidf_scores[:top_n]]

2 关键词共现网络图

使用网络图可以更形象地展示关键词之间的关系。可以使用NetworkX库来创建关键词共现网络图。

import networkx as nx
import matplotlib.pyplot as pltdef plot_co_occurrence_network(co_matrix):G = nx.Graph()for keyword, co_keywords in co_matrix.items():for co_keyword, weight in co_keywords.items():G.add_edge(keyword, co_keyword, weight=weight)pos = nx.spring_layout(G)labels = {node: node for node in G.nodes}nx.draw(G, pos, labels=labels, with_labels=True, font_size=8, font_color='black', node_size=800, node_color='skyblue', edge_color='gray', font_family='sans-serif', alpha=0.8, linewidths=0.5)plt.title("Keyword Co-Occurrence Network")plt.show()

通过这两个进一步的优化,我们可以得到更精确的关键词提取和更具可视化效果的关键词共现网络图。

总结

通过本文的详细示例代码,我们学习了如何使用Python进行高频关键词的筛选和计算关键词共现次数。从基本的文本预处理到TF-IDF权重的应用,再到关键词共现网络图的可视化,我们覆盖了多个关键步骤。同时,我们介绍了一些进阶的技术和扩展思路,帮助大家更好地应用这些方法于实际项目中。

在实际应用中,根据具体需求不断调整和优化算法参数,结合大规模语料库处理、实时数据处理和深度学习方法,可以使关键词提取和共现分析更为灵活、高效。


Python学习路线

在这里插入图片描述

更多资料获取

📚 个人网站:ipengtao.com

如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。

在这里插入图片描述
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/257083.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java (JDK 21) 调用 OpenCV (4.8.0)

Java 调用 OpenCV 一.OpenCV 下载和安装二.创建 Java Maven 项目三.其他测试 一.OpenCV 下载和安装 Open CV 官网 可以下载编译好的包,也可以下载源码自行编译 双击安装 opencv-4.8.0-windows.exe 默认为当前目录 安装即解压缩 根据系统位数选择 将 x64 目录下 op…

【二分查找】LeetCode2141: 同时运行 N 台电脑的最长时间

作者推荐 贪心算法LeetCode2071:你可以安排的最多任务数目 本文涉及的基础知识点 二分查找算法合集 题目 你有 n 台电脑。给你整数 n 和一个下标从 0 开始的整数数组 batteries ,其中第 i 个电池可以让一台电脑 运行 batteries[i] 分钟。你想使用这些电池让 全…

Go--协程

协程 协程是Go语言最大的特色之一。 1、协程的概念 协程并不是Go发明的概念,支持协程的变成语言有很多。Go在语言层面直接提供对协程的支持称为goroutine。 1.1 基本概念 进程 进程是应用程序启动的实例,每个进程都有独立的内存空间,不同…

JVM虚拟机:如何查看JVM初始和最终的参数?

本文重点 在前面的课程中,我们学习了如何查看当前程序所处于的xx参数,本文再介绍一种如何参看JVM的xx参数? 查看JVM的所有初始化参数 方式一:java -XX:PrintFlagsInitial 方式二:java -XX:PrintFlagsInitial -versio…

Linux篇之在Centos环境下搭建Nvidia显卡驱动

一、前提条件 1、首先确认内核版本和发行版本,再确认显卡型号 uname -a // Linux localhost.localdomain 4.18.0-408.el8.x86_64 #1 SMP Mon Jul 18 17:42:52 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux1.2 cat /etc/redhat-release // CentOS Stream release 81.3…

计算机基础:一颗芯片是怎样诞生的?

一颗芯片是怎样诞生的? 芯片属于半导体。半导体是介于导体和绝缘体之间的一类物质,元素周期表中硅、锗、硒、硼的单质都属于半导体。这些单质通过掺杂其他元素生成的一些化合物,也属于半导体的范畴。这些化合物在常温下可激发载流子的能力大…

在 JavaScript 中导入和导出 Excel XLSX 文件:SpreadJS

在 JavaScript 中导入和导出 Excel XLSX 文件 2023 年 12 月 5 日 使用 MESCIUS 的 SpreadJS 将完整的 JavaScript 电子表格添加到您的企业应用程序中。 SpreadJS 是一个完整的企业 JavaScript 电子表格解决方案,用于创建财务报告和仪表板、预算和预测模型、科学、工…

从 Kindle 文件中提取内容:GroupDocs.Parser V23.11

从 Kindle 文件中提取内容 2023 年 12 月 6 日 GroupDocs.Parser V23.11 增加了对 Kindle 文档格式的支持,支持从 Kindle 电子书和文档中提取文本和元数据。 GroupDocs.Parser 是一款全面的文档解析解决方案,使您能够从多种文档格式中提取文本、元数据和…

JS基础面试题之手写bind

JS基础面试题之手写bind 手写bind返回函数的模拟实现传参的模拟实现构造函数效果的模拟实现构造函数效果的优化实现最终版 手写bind bind()方法会创建一个新的函数。当这个函数被调用时,bind()的第一个参数将作为它的运行时的this,之后的一序列参数将会在…

【征稿倒计时十天】第三届高性能计算与通信工程国际学术会议(HPCCE 2023)

【有ISSN、ISBN号!!往届均已完成EI检索】 第三届高性能计算与通信工程国际学术会议(HPCCE 2023) 2023 3rd International Conference on High Performance Computing and Communication Engineering (HPCCE 2023) 2023年12月22-24日 | 中国哈尔滨 第三…

【LeetCode】2723. 两个 Promise 对象相加

两个 Promise 对象相加 题目题解 题目 给定两个 promise 对象 promise1 和 promise2,返回一个新的 promise。promise1 和 promise2 都会被解析为一个数字。返回的 Promise 应该解析为这两个数字的和。 示例 1: 输入: promise1 new Promise…

MySQL数据库,函数与分组

单行函数: 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以嵌套 参数也可以是一列或一个值 数值函数 基本函数: 注:ROUND(x,y)函数的y是负数时,即往高位进行四舍五入,如-3就是按百位…