Python数据分析之PMI数据图形展示

非常感谢你对Python数据分析之PMI数据图形展示的关注。下面是完整攻略:

Python数据分析之PMI数据图形展示

1. 介绍

PMI(Pointwise Mutual Information)指的是一种用来衡量两个事件的相关性的指标,它广泛应用于NLP(自然语言处理)和文本挖掘领域。PMI可用于计算两个单词之间的相似度,以及衡量一个单词在某个上下文中的重要性等。本篇攻略将介绍如何通过Python对PMI数据进行图形展示。

2. 准备工作

在进行图形展示前,需要先进行一些准备工作。具体包括:

2.1 安装Python包

需要安装以下Python包:

  • jieba
  • numpy
  • pandas
  • matplotlib

可以通过以下命令安装这些包:

pip install jieba numpy pandas matplotlib

2.2 准备文本数据

需要准备一份文本数据,可以使用示例数据,在此示例中,我们将使用《红楼梦》全文作为示例数据。

2.3 分词

使用_jieba_对文本进行分词,得到文本的分词结果,可以参考以下代码示例:

import jieba

# 读取文本数据
with open('hongloumeng.txt', 'r', encoding='utf-8') as f:
    text = f.read()

# 对文本进行分词
seg_list = jieba.lcut(text)

2.4 构建词频统计表

对分词结果进行词频统计,可以使用_Pandas_包中的_value_counts()_方法,代码示例如下:

import pandas as pd

# 将分词结果转换为数据框
word_counts = pd.DataFrame(seg_list, columns=['word'])

# 构建词频统计表
word_count_table = word_counts['word'].value_counts()

2.5 构建PMI相关数据

构建PMI相关的数据,可以参考以下代码示例:

import numpy as np

# 计算每个单词的PMI
word_pmi = pd.DataFrame(columns=['word_1', 'word_2', 'pmi'])

for i in range(len(word_counts)):
    for j in range(i+1,len(word_counts)):
        w1 = word_counts['word'][i]
        w2 = word_counts['word'][j]
        if w1 != w2:
            count_w1 = word_counts['word'].value_counts()[w1]
            count_w2 = word_counts['word'].value_counts()[w2]
            count_w1_w2 = np.sum([(seg_list[k] == w1 and seg_list[k+1] == w2) or (seg_list[k] == w2 and seg_list[k+1] == w1) for k in range(len(seg_list)-1)])
            pmi = np.log2(count_w1_w2) + np.log2(len(seg_list)) - np.log2(count_w1) - np.log2(count_w2)
            word_pmi = word_pmi.append({'word_1':w1, 'word_2':w2, 'pmi':pmi}, ignore_index=True)

3. 图形展示

使用_matplotlib_包进行图形展示,可以使用以下代码示例进行绘图:

3.1 词云展示

使用_WordCloud_包对文本分词结果进行词云展示,代码示例如下:

from wordcloud import WordCloud

# 将分词结果转换为字符串
seg_str = ' '.join(seg_list)

# 构建词云对象
wordcloud = WordCloud(width=800, height=600, background_color='white').generate(seg_str)

# 在matplotlib中展示词云
import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis('off')
plt.show()

3.2 PMI矩阵展示

使用_matplotlib_中的imshow()函数对PMI相关数据进行热力图展示,代码示例如下:

# 构建PMI相关数据矩阵
pmi_matrix = np.zeros((len(word_counts),len(word_counts)))

for i in range(len(word_counts)):
    for j in range(i+1,len(word_counts)):
        w1 = word_counts['word'][i]
        w2 = word_counts['word'][j]
        if w1 != w2:
            pmi = word_pmi.loc[(word_pmi['word_1'] == w1) & (word_pmi['word_2'] == w2)]['pmi']
            if len(pmi) > 0:
                pmi_matrix[i][j] = pmi
                pmi_matrix[j][i] = pmi

# 绘制PMI矩阵热力图
plt.imshow(pmi_matrix, cmap='RdPu')
plt.colorbar()
plt.show()

以上就是Python数据分析之PMI数据图形展示的完整攻略及两个示例说明。希望能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据分析之PMI数据图形展示 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • android开发教程之获取使用当前api的应用程序名称

    Android开发教程之获取使用当前API的应用程序名称 在Android应用程序中,有时需要获取当前正在使用当前API的应用程序名称。本文将提供一个完整的攻略,包括如何获取当前API的应用程序名称。以下是详细步骤: 步骤1:添加权限 在获取当前API的应用程序名称之前,我们需要添加一个权限。以下是一个示例说明,演示如何添加权限: 在AndroidManif…

    云计算 2023年5月16日
    00
  • python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】

    下面我就来为你详细讲解“Python栈的基本定义与使用方法示例”的完整攻略。 栈的基本定义 栈是一种先进后出的数据结构,类似于堆叠一摞书的过程。我们可以把栈想象成一个装有元素的容器,只能从顶端进出。栈的两个基本操作是入栈(push)和出栈(pop)。入栈将元素放到栈顶,而出栈则是弹出栈顶元素。 在Python中,我们可以使用列表(list)来模拟一个栈。通过…

    云计算 2023年5月18日
    00
  • 不可错过的十本Python好书

    不可错过的十本Python好书 Python 作为一门现代化的高级编程语言,被广泛应用于各种领域,如数据科学、人工智能、机器学习、网络编程等。如果你希望通过阅读书籍来深入学习 Python,以下是十本不可错过的 Python 好书,可以让你快速入门或提高自己的 Python 技能。 1. “Python编程从入门到精通”(侯捷著) 《Python编程从入门到…

    云计算 2023年5月18日
    00
  • .NET6新特新 struct优化

    .NET 6中的新特性:struct优化 在.NET 6中,对struct类型进行了优化,以提高性能和减少内存占用。以下是一个完整攻略,包括如何使用struct类型、何时使用struct类型以及如何优化struct类型,并提供两个示例说明。 什么是struct类型? 在C#中,struct是一种值类型,它可以存储数据,并且通常比class类型更轻量级。与cl…

    云计算 2023年5月16日
    00
  • QQ群里一场关于未来云计算的讨论,非常精彩

    goshawk(39212766)  11:21:28企业应用的移动化,,大家怎么看goshawk(39212766)  11:21:51随着智能终端,手机的流行,是否快到来北京-阳子<15901244262@163.com>  11:21:57那相当给力goshawk(39212766)  11:22:09这也是个趋势。。goshawk(392…

    云计算 2023年4月11日
    00
  • 详解在ASP.NET Core下使用SignalR技术

    详解在ASP.NET Core下使用SignalR技术 什么是SignalR技术? SignalR是一种实时通讯技术,借助它,我们可以在客户端和服务器之间建立实时且双向的通讯,使得我们能够更加容易地实现实时的推送、聊天、消息提醒等等功能。 如何使用SignalR技术? 在ASP.NET Core下,我们可以通过以下几个步骤来使用SignalR技术: 1.添加…

    云计算 2023年5月17日
    00
  • pytorch K折交叉验证过程说明及实现方式

    PyTorch K折交叉验证 K折交叉验证是一种常用的机器学习模型的评估方法。在PyTorch中,我们可以使用K折交叉验证来评估我们的深度神经网络模型。本文将为大家讲解如何在PyTorch中使用K折交叉验证来评估模型。 什么是K折交叉验证? K折交叉验证是将数据集分成K个折叠(或称为”fold”),然后进行K次训练和评估模型的过程。每次训练和评估模型时,使用…

    云计算 2023年5月18日
    00
  • 关于数智融合,看看这20位专家都聊了什么

    摘要:由创原会与福佑卡车联合举办的2023年首场畅聊云原生活动在福佑卡车北京总部举办。 本文分享自华为云社区《畅聊云原生·第八期 | 关于数智融合,看看这20位专家都聊了什么》,作者:创原会。 畅聊云原生[第八期]探讨的话题选择了大家热议的“数智融合“,活动荣幸地邀请到福佑卡车技术合伙人陈冠岭、软通运力CTO刘会福、畅销书《人工智能产品经理》作者张竞宇、华为…

    云计算 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部