一、共现语义网络原理

共现语义网络是用于表示词与词之间的语义关系的一种网络理论,由美国人工智能专家司马贺在1973年提出的。其原理就是以词语为网络的结点,以沟通结点的共现次数表示词语之间的语义关系,构成一个彼此相互联系的网络,以达到理解自然语言句子的语义关系。

二、中文分词

构建共现语义网络首先要进行分词,通常可以使用Jieba和Snownlp做中文分词。笔者使用的数据是自己在招聘网站采集的岗位招聘要求信息数据,使用Jieba分词后保存到源数据,并使用pandas库把整个文件保存为csv文件,方便后续使用。部分数据如下:

三、构建共现语义网络

1. 导入需要的包

import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
from tkinter import _flatten

2. 构建共现语义矩阵

先用pandas库把分词数据读取到jupyter notebook中,并选出分词后的数据。

df = pd.read_csv('电商岗位数据(分词后).csv')
content = df['分词']

对分词进行词频统计并选取前50关键词作为构建共现矩阵的关键词。

cut_word_list = list(map(lambda x: ''.join(x), content.tolist()))
content_str = ' '.join(cut_word_list).split()
word_fre = pd.Series(_flatten(content_str)).value_counts()  # 统计词频
word_fre[:50]

词频统计结果:

keywords = word_fre[:50].index
keywords


使用numpy设置共现语义的初始矩阵。

matrix = np.zeros((len(keywords)+1)*(len(keywords)+1)).reshape(len(keywords)+1, len(keywords)+1).astype(str)
matrix[0][0] = np.NaN
matrix[1:, 0] = matrix[0, 1:] = keywords
matrix


计算关键词之间的共现次数,共现规则为关键词之间的位置距离不超过1。

cont_list = [cont.split() for cont in cut_word_list]
for i, w1 in enumerate(word_fre[:50].index):for j, w2 in enumerate(word_fre[:50].index):count = 0for cont in cont_list:if w1 in cont and w2 in cont:if abs(cont.index(w1)-cont.index(w2)) == 0 or abs(cont.index(w1)-cont.index(w2)) == 1:count += 1matrix[i+1][j+1] = count

保存为csv文件。

kwdata = pd.DataFrame(data=matrix)
kwdata.to_csv('关键词共现矩阵.csv', index=False, header=None, encoding='utf-8-sig')

3. 绘制共现语义网络

读取关键词共现矩阵文件。

df = pd.read_csv('关键词共现矩阵.csv')

选取前20个关键词作为实验对象。

df.index = df.iloc[:, 0].tolist()
df_ = df.iloc[:20, 1:21]
df_.astype(int)


绘制共现语义网络图。

plt.figure(figsize=(10, 10))
graph1 = nx.from_pandas_adjacency(df_)
nx.draw(graph1, with_labels=True, node_color='yellow', font_size=25, edge_color='blue')
plt.savefig('共现网络图.jpg')

关键词之间的连线越多,说明共现的次数越多。本文使用Python做的共现语义图并没有实现展示关键词之间的共现次数,有能力的大佬可以尝试做一下能输出关键词共现次数的共现语义网络图。尽管现在很多软件能实现共现语义网络图,笔者也用过几个画共现语义网络的软件,但当数据量大的时候,往往电脑会卡死。

Python实现共现语义网络相关推荐

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

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

  2. python关键词共现图谱_如何用知网导出的关键词 几秒 生成共现矩阵及图谱 》完整版...

    自编软件使用技能视频演示(一) 最新整理完整版的,从收集数据 到 共词矩阵 到 图谱. 在做社会网络分析时,首先需要得到共现矩阵,如关键词共现矩阵.作者共现矩阵.机构共现矩阵等. 可是如何把从知网里导 ...

  3. python 基于共现分析赤壁人物关系

    import jieba import matplotlib.pyplot as plt import re import string, collections, networkxSanguo = ...

  4. 【转载】基于共现发现人物关系的python实现

    转载自:基于共现发现人物关系的python实现 作者:大邓[公众号:大邓和他的python] 本篇文章是阅读实验楼 Foerc的"python基于共现提取<釜山行>人物关系&qu ...

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

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

  6. python红楼梦人物统计_基于共现使用Python来分析《红楼梦》中贾宝玉与金陵十二钗的关系...

    上一篇,我们使用Python分析了<三国演义>中人物出现次数(罗贯中的<三国演义>中到底谁是主角?我们使用Python来分析一下),文中我们仅仅从人物出现次数,来推断出这部作品 ...

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

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

  8. 基于 python获取教育新闻进行分词关键词词共现分析 知识图谱 (附代码+报告)

    本文着眼于对疫情期间教育领域新闻的分析,基于 python 语言,利用爬虫获取教育领域的最新新闻,并将其内容进行分词,抓取关键词.在此基础上,根据关键词进行共现分析,并利用 Gephi 软件绘制主题知 ...

  9. python 共现矩阵

    最近有个妹子问我共现矩阵python怎么实现? 大致写了下,顺便记下笔记 - 关于共现矩阵是什么,可以参考这篇博文:python构建关键词共现矩阵 本文提供另一思路: 以列表存储数据为例: 步骤1:针 ...

  10. python 分析人物关系_基于共现发现人物关系的python实现

    基于共现发现人物关系的python实现 1.共现关系 在文献计量学中,关键词的共词方法常用来确定该文献集所代表学科中各主题之间的关系.而在这里,我们需要通过分析一篇小说或剧本,来分析剧中各个角色之间的 ...

最新文章

  1. Map集合练习之对字符串中字母出现的次数求和
  2. 解决Word 2007启动时弹出“无法访问您试图使用功能所在的网络位置”的问题...
  3. C#实现web信息自动抓取
  4. SpringBoot | 第一章:第一个SpringBoot应用
  5. 分享SSRF漏洞的学习和利用
  6. 【深度学习图像项目实战-从入门到上线1】怎样学会科学的调研并启动一个项目...
  7. Prism4文档翻译(第四章 第二部分)
  8. WinForm连接数据库
  9. qemu 安装windows_BIOS+MBR启动引导安装双系统
  10. 安装MongoDB Install MongoDB on Ubuntu
  11. sql profiler_这是SQL Profiler的结尾吗?
  12. ue4 C++ 编程 通过三个点的位置算出夹角
  13. Eclipse中最有用的快捷键组合
  14. 网课查课插件 支持 60类型+ 彩虹查课插件 网络查课查询
  15. No module named ‘lightgbm‘
  16. CAN唤醒硬件方案和软件分析
  17. 抽屉新热榜html源码,利用scrapy获取抽屉新热榜的标题和内容以及新闻地址保存到本地...
  18. Android之微信界面设计
  19. Elasticsearch-head-master配置 (与es连接)
  20. 什么是MES生产制造执行系统?实施MES生产管理系统有哪些目标?

热门文章

  1. ASCII码,HTML转义字符表,以及快捷键
  2. 橘子origin游戏平台如何绑定登陆验证/二次验证码?
  3. Windows电脑上不错的几款图片编辑软件
  4. java实战——照片编辑器
  5. 2021软考网络工程师2004-2020年真题含答案解析(最新)
  6. 软件项目管理案例教程第四版答案
  7. linux怎么入侵别人电脑关机,Linux关机执行脚本命令应该怎么做?
  8. iphone查看html源码的app,使用扩展App在Safari上查看源代码
  9. Linux 命令完全手册
  10. 我说CMMI2.0之技术解决方案