• 共现矩阵(共词矩阵):统计文本中两两词组之间共同出现的次数,以此来描述词组间的亲密度

code(我这里求的对角线元素为该字段在文本中出现的总次数):

import pandas as pddef gx_matrix(vol_li):# 整合一下,输入是df列,输出直接是矩阵names = locals()all_col0 = []   # 用来后续求所有字段的集合for row in vol_li:all_col0 += rowfor each in row:  # 对每行的元素进行处理,存在该字段字典的话,再进行后续判断,否则创造该字段字典try:for each1 in row:  # 对已存在字典,循环该行每个元素,存在则在已有次数上加一,第一次出现创建键值对“字段:1”try:names['dic_' + each][each1] = names['dic_' + each][each1] + 1  # 尝试,一起出现过的话,直接加1except:names['dic_' + each][each1] = 1  # 没有的话,第一次加1except:names['dic_' + each] = dict.fromkeys(row, 1)  # 字段首次出现,创造字典# 根据生成的计数字典生成矩阵all_col = list(set(all_col0))   # 所有的字段(所有动物的集合)all_col.sort(reverse=False)  # 给定词汇列表排序排序,为了和生成空矩阵的横向列名一致df_final0 = pd.DataFrame(columns=all_col)  # 生成空矩阵for each in all_col:  # 空矩阵中每列,存在给字段字典,转为一列存入矩阵,否则先创造全为零的字典,再填充进矩阵try:temp = pd.DataFrame(names['dic_' + each], index=[each])except:names['dic_' + each] = dict.fromkeys(all_col, 0)temp = pd.DataFrame(names['dic_' + each], index=[each])df_final0 = pd.concat([df_final0, temp])  # 拼接df_final = df_final0.fillna(0)return df_finalif __name__ == '__main__':temp1 = ['狗', '狮子', '孔雀', '猪']temp2 = ['大象', '狮子', '老虎', '猪']temp3 = ['大象', '北极熊', '老虎', '猪']temp4 = ['大象', '狗', '老虎', '小鸡']temp5 = ['狐狸', '狮子', '老虎', '猪']temp_all = [temp2, temp1, temp3, temp4, temp5]vol_li = pd.Series(temp_all)df_matrix = gx_matrix(vol_li)print(df_matrix)

输入是整成这个样子的series

求出每个字段与各字段的出现次数的字典

最后转为df

补充一点:这里如果用大象所在列,除以大象出现的次数,比值高的,表明两者一起出现的次数多,如果这列比值中,有两个元素a和b的比值均大于0.8(也不一定是0.8啦),就是均比较高,则说明a和b和大象三个一起出现的次数多!!!

即可以求出文本中经常一起出现的词组搭配,比如这里的第二列,大象一共出现3次,与老虎出现3次,与猪出现2次,则可以推导出大象,老虎,猪一起出现的概率较高。

也可以把出现总次数拎出来,放在最后一列,
则代码为:

# 计算每个字段的出现次数,并列为最后一行df_final['all_times'] = ''for each in df_final0.columns:df_final['all_times'].loc[each] = df_final0.loc[each, each]

放在上述代码df_final = df_final0.fillna(0)的后面即可
结果为

不好意思啊,我第一次放代码上来的时候中间有一块缩进错了,感谢下面提出问题的这位同学的提醒,现在是更正过的代码!!!

python-共现矩阵(共词矩阵)计算相关推荐

  1. 【NLP】关键词共现/属性共现矩阵

    [NLP]关键词共现/属性共现矩阵 [共现]理解起来无非是两个词语同时出现的频次作为一个指标,构造矩阵.矩阵的第一列和第一行都是词语列表中的所有词,因此对角线一般设置为0--即不把自己和自己共现算进去 ...

  2. python关键词共现_python 共现矩阵的实现

    1.前言 最近在学习python词库的可视化,其中有一个依据共现矩阵制作的可视化,感觉十分炫酷,便以此复刻. 2.项目背景 本人利用爬虫获取各大博客网站的文章,在进行jieba分词,得到每篇文章的关键 ...

  3. A股实践 :图神经网络与新闻共现矩阵策略(附代码)

    量化投资与机器学习微信公众号,是业内垂直于量化投资.对冲基金.Fintech.人工智能.大数据等领域的主流自媒体.公众号拥有来自公募.私募.券商.期货.银行.保险.高校等行业30W+关注者,荣获202 ...

  4. Python 实现文本共现网络分析

    前言 前两天简单地做了一个文本挖掘实战分析,里面提到了共现分析,但是并没有完成,有些遗憾 经过查阅资料,最终还是粗糙地完成了这个分析 对于共现分析 共词网络方法在知识网络研究中应用普遍,最为常见的就是 ...

  5. 大江大河2弹幕数据之词云分析、情感极性分析、主题分析、共现网络分析

    最近,自己在疯狂追<大江大河2>这部剧,作为当下最热门的电视剧之一,这部电视剧深受观众的喜爱,自从播出以后就好评不断 它主要讲述了改革开放三十年,一代人奋斗向阳的故事,看完之后深受启发,特 ...

  6. 通过共现矩阵和余弦相似度实现机器对单词的认知、python实现

    通过共现矩阵和余弦相似度实现机器对单词的认知.python实现 本文介绍的定义: 一.语料库预处理 二.单词的分布式表示 三.单词的相似度 四.相似单词排序 本文介绍的定义: 语料库.计数方法的目的. ...

  7. 词向量发展史-共现矩阵-SVD-NNLM-Word2Vec-Glove-ELMo

    话不多说,直接上干货. 首先介绍相关概念: 词嵌入:把词映射为实数域上向量的技术也叫词嵌入(word embedding). 词向量的分类表示: 一.共现矩阵 通过统计一个事先指定大小的窗口内的wor ...

  8. 斯坦福cs224n-2021 assignment1-探索词向量—词共现矩阵—SVD(奇异值分解)

    词共现矩阵: 通过统计一个事先指定大小(window_size)的窗口内的word共现次数,以word周边的共现词的次数做为当前word的vector. SVD(奇异值分解) 基于共现矩阵得到的离散词 ...

  9. hadoop矩阵乘法源码_使用Hadoop计算共现矩阵

    hadoop矩阵乘法源码 这篇文章继续我们在MapReduce的数据密集型文本处理一书中实现MapReduce算法的系列. 这次,我们将从文本语料库创建单词共现矩阵. 本系列以前的文章是: 使用Map ...

最新文章

  1. 读书笔记之《Windows内核原理与实现》
  2. visual studio 2005占用cpu100% -_-...
  3. windows puppet manifests 文件维护
  4. C++ 对象的内存布局
  5. wxWidgets:wxWindowCreateEvent类用法
  6. duilib进阶教程 -- 改进窗口拖动 (12)
  7. Struts2_2_解决配置文件冗余_动作类对象数据封装_数据类型转换_表单数据信息提示
  8. mitmproxy可谓神器乎?
  9. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
  10. web安全day9:5个实验实实在在学习windows域部署
  11. 联想y430完全拆机图解_视频深度拆解:联想IdeaPad Y430全揭秘
  12. aspose-cells-8.52问题记录,excel转pdf,字体,格式
  13. Java 买卖股票的最佳时机含手续费leetcode_714
  14. 5款热门的远程控制软件,让你事半功倍
  15. IIS7.0 CSS、JS、图片报500错误
  16. 从键盘输入一个英文字母,如果它是大写英文字母,则将其转换为小写英文字母,如果它是小写英文字母,则将其转换为大写英文字母,然后将它及其ASCII码值显示到屏幕上,如果不是英文字母,则不转换直接输出到屏幕
  17. 华为路由器AR6300 取消密码重置提醒和密码长期有效
  18. centos镜像中Everything, GnomeLive ,KdeLive ,livecd ,NetInstall的意思
  19. 区块链电子合同铸就数字经济信任基石
  20. cmd循环调用native2ascii.exe

热门文章

  1. 运算器组成实验(计算机组成原理)
  2. php 1为false,false是1还是0
  3. 记某环境SqlServer异地备份的坑(Server权限管控贼拉严格)
  4. 疫情之后,SaaS的春天就来了吗?
  5. 潘多拉固件设置ipv6_openwrt-LEDE系统IPV6设置教程
  6. 零基础成为3D游戏建模师需要多久?
  7. 注册163VIP邮箱如何登陆?我邮件注册的163VIP邮箱不知道怎么登陆
  8. 安全管家安卓_安卓手机自带的管家好,还是另外获取的管家好呢?这4点你要知道...
  9. win10网络可以ping 通,不能进网页
  10. JQuery属性选择器(属性值是变量、多属性选择)