
作者:Python进阶者
来源:Python爬虫与数据挖掘
前几天有个叫【小明】的粉丝在问了一道关于Python处理文本可视化+语义分析的问题。
他要构建语料库,目前通过Python网络爬虫抓到的数据存在一个csv文件里边,现在要把数据放进txt里,表示不会,然后还有后面的词云可视化,分词,语义分析等,都不太会。
内容稍微有点多,大体思路如下,先将csv中的文本取出,之后使用停用词做分词处理,再做词云图,之后做情感分析。
1、将csv文件中的文本逐行取出,存新的txt文件,这里运行代码《读取csv文件中文本并存txt文档.py》进行实现,得到文件《职位表述文本.txt》
2、运行代码《使用停用词获取最后的文本内容.py》,得到使用停用词获取最后的文本内容,生成文件《职位表述文本分词后_outputs.txt》
4、运行代码《jieba分词并统计词频后输出结果到Excel和txt文档.py》,得到《wordCount_all_lyrics.xls》和《分词结果.txt》文件,将《分词结果.txt》中的统计值可以去除,生成《情感分析用词.txt》,给第五步情感分析做准备
5、运行代码《情感分析.py》,得到情感分析的统计值,取平均值可以大致确认情感是正还是负。
1.将csv文件中的文本逐行取出,存新的txt文件
这里运行代码《读取csv文件中文本并存txt文档.py》进行实现,得到文件《职位表述文本.txt》,代码如下。
# coding: utf-8
import pandas as pd
df = pd.read_csv('./职位描述.csv', encoding='gbk')
# print(df.head())
for text in df['Job_Description']:
# print(text)
if text is not None:
with open('职位表述文本.txt', mode='a', encoding='utf-8') as file:
file.write(str(text))
print('写入完成')
2.使用停用词获取最后的文本内容
运行代码《使用停用词获取最后的文本内容.py》,得到使用停用词获取最后的文本内容,生成文件《职位表述文本分词后_outputs.txt》,代码如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import jieba
# jieba.load_userdict('userdict.txt')
# 创建停用词list
def stopwordslist(filepath):
stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
return stopwords
# 对句子进行分词
def seg_sentence(sentence):
sentence_seged = jieba.cut(sentence.strip())
stopwords = stopwordslist('stop_word.txt') # 这里加载停用词的路径
outstr = ''
for word in sentence_seged:
if word not in stopwords:
if word != 't':
outstr += word
outstr += " "
return outstr
inputs = open('职位表述文本.txt', 'r', encoding='utf-8')
outputs = open('职位表述文本分词后_outputs.txt', 'w', encoding='utf-8')
for line in inputs:
line_seg = seg_sentence(line) # 这里的返回值是字符串
outputs.write(line_seg + 'n')
outputs.close()
inputs.close()
关键节点,都有相应的注释,你只需要替换对应的txt文件即可,如果有遇到编码问题,将utf-8改为gbk即可解决。
3.制作词云图
运行代码《指定txt词云图.py》,可以得到词云图,代码如下:
from wordcloud import WordCloud
import jieba
import numpy
import PIL.Image as Image
def cut(text):
wordlist_jieba=jieba.cut(text)
space_wordlist=" ".join(wordlist_jieba)
return space_wordlist
with open(r"C:UserspdcfiDesktopxiaoming职位表述文本.txt" ,encoding="utf-8")as file:
text=file.read()
text=cut(text)
mask_pic=numpy.array(Image.open(r"C:UserspdcfiDesktopxiaomingpython.png"))
wordcloud = WordCloud(font_path=r"C:/Windows/Fonts/simfang.ttf",
collocations=False,
max_words= 100,
min_font_size=10,
max_font_size=500,
mask=mask_pic).generate(text)
image=wordcloud.to_image()
# image.show()
wordcloud.to_file('词云图.png') # 把词云保存下来
如果想用你自己的图片,只需要替换原始图片即可。这里使用Python底图做演示,得到的效果如下:
4.分词统计
运行代码《jieba分词并统计词频后输出结果到Excel和txt文档.py》,得到《wordCount_all_lyrics.xls》和《分词结果.txt》文件,将《分词结果.txt》中的统计值可以去除,生成《情感分析用词.txt》,给第五步情感分析做准备,代码如下:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import sys
import jieba
import jieba.analyse
import xlwt # 写入Excel表的库
# reload(sys)
# sys.setdefaultencoding('utf-8')
if __name__ == "__main__":
wbk = xlwt.Workbook(encoding='ascii')
sheet = wbk.add_sheet("wordCount") # Excel单元格名字
word_lst = []
key_list = []
for line in open('职位表述文本.txt', encoding='utf-8'): # 需要分词统计的原始目标文档
item = line.strip('nr').split('t') # 制表格切分
# print item
tags = jieba.analyse.extract_tags(item[0]) # jieba分词
for t in tags:
word_lst.append(t)
word_dict = {}
with open("分词结果.txt", 'w') as wf2: # 指定生成文件的名称
for item in word_lst:
if item not in word_dict: # 统计数量
word_dict[item] = 1
else:
word_dict[item] += 1
orderList = list(word_dict.values())
orderList.sort(reverse=True)
# print orderList
for i in range(len(orderList)):
for key in word_dict:
if word_dict[key] == orderList[i]:
wf2.write(key + ' ' + str(word_dict[key]) + 'n') # 写入txt文档
key_list.append(key)
word_dict[key] = 0
for i in range(len(key_list)):
sheet.write(i, 1, label=orderList[i])
sheet.write(i, 0, label=key_list[i])
wbk.save('wordCount_all_lyrics.xls') # 保存为 wordCount.xls文件
得到的txt和excel文件如下所示:
5.情感分析的统计值
运行代码《情感分析.py》,得到情感分析的统计值,取平均值可以大致确认情感是正还是负,代码如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from snownlp import SnowNLP
# 积极/消极
# print(s.sentiments) # 0.9769551298267365 positive的概率
def get_word():
with open("情感分析用词.txt", encoding='utf-8') as f:
line = f.readline()
word_list = []
while line:
line = f.readline()
word_list.append(line.strip('rn'))
f.close()
return word_list
def get_sentiment(word):
text = u'{}'.format(word)
s = SnowNLP(text)
print(s.sentiments)
if __name__ == '__main__':
words = get_word()
for word in words:
get_sentiment(word)
# text = u'''
# 也许
# '''
# s = SnowNLP(text)
# print(s.sentiments)
# with open('lyric_sentiments.txt', 'a', encoding='utf-8') as fp:
# fp.write(str(s.sentiments)+'n')
# print('happy end')
基于NLP语义分析,程序运行之后,得到的情感得分值如下图所示:
将得数取平均值,一般满足0.5分以上,说明情感是积极的,这里经过统计之后,发现整体是积极的。
我是Python进阶者。本文基于粉丝提问,针对一次文本处理,手把手教你对抓取的文本进行分词、词频统计、词云可视化和情感分析,算是完成了一个小项目了。下次再遇到类似这种问题或者小的课堂作业,不妨拿本项目练练手,说不定有妙用噢,拿个高分不在话下!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
机器学习解决实际问题的核心关键:从业务到落地的全流程解析 在人工智能技术落地的浪潮中,机器学习作为核心工具,已广泛应用于 ...
2025-09-09SPSS 编码状态区域中 Unicode 的功能与价值解析 在 SPSS(Statistical Product and Service Solutions,统计产品与服务解决方案 ...
2025-09-09CDA 数据分析师:驾驭商业数据分析流程的核心力量 在商业决策从 “经验驱动” 向 “数据驱动” 转型的过程中,商业数据分析总体 ...
2025-09-09R 语言:数据科学与科研领域的核心工具及优势解析 一、引言 在数据驱动决策的时代,无论是科研人员验证实验假设(如前文中的 T ...
2025-09-08T 检验在假设检验中的应用与实践 一、引言 在科研数据分析、医学实验验证、经济指标对比等领域,常常需要判断 “样本间的差异是 ...
2025-09-08在商业竞争日益激烈的当下,“用数据说话” 已从企业的 “加分项” 变为 “生存必需”。然而,零散的数据分析无法持续为业务赋能 ...
2025-09-08随机森林算法的核心特点:原理、优势与应用解析 在机器学习领域,随机森林(Random Forest)作为集成学习(Ensemble Learning) ...
2025-09-05Excel 区域名定义:从基础到进阶的高效应用指南 在 Excel 数据处理中,频繁引用单元格区域(如A2:A100、B3:D20)不仅容易出错, ...
2025-09-05CDA 数据分析师:以六大分析方法构建数据驱动业务的核心能力 在数据驱动决策成为企业共识的当下,CDA(Certified Data Analyst) ...
2025-09-05SQL 日期截取:从基础方法到业务实战的全维度解析 在数据处理与业务分析中,日期数据是连接 “业务行为” 与 “时间维度” 的核 ...
2025-09-04在卷积神经网络(CNN)的发展历程中,解决 “梯度消失”“特征复用不足”“模型参数冗余” 一直是核心命题。2017 年提出的密集连 ...
2025-09-04CDA 数据分析师:驾驭数据范式,释放数据价值 在数字化转型浪潮席卷全球的当下,数据已成为企业核心生产要素。而 CDA(Certified ...
2025-09-04K-Means 聚类:无监督学习中数据分群的核心算法 在数据分析领域,当我们面对海量无标签数据(如用户行为记录、商品属性数据、图 ...
2025-09-03特征值、特征向量与主成分:数据降维背后的线性代数逻辑 在机器学习、数据分析与信号处理领域,“降维” 是破解高维数据复杂性的 ...
2025-09-03CDA 数据分析师与数据分析:解锁数据价值的关键 在数字经济高速发展的今天,数据已成为企业核心资产与社会发展的重要驱动力。无 ...
2025-09-03解析 loss.backward ():深度学习中梯度汇总与同步的自动触发核心 在深度学习模型训练流程中,loss.backward()是连接 “前向计算 ...
2025-09-02要解答 “画 K-S 图时横轴是等距还是等频” 的问题,需先明确 K-S 图的核心用途(检验样本分布与理论分布的一致性),再结合横轴 ...
2025-09-02CDA 数据分析师:助力企业破解数据需求与数据分析需求难题 在数字化浪潮席卷全球的当下,数据已成为企业核心战略资产。无论是市 ...
2025-09-02Power BI 度量值实战:基于每月收入与税金占比计算累计税金分摊金额 在企业财务分析中,税金分摊是成本核算与利润统计的核心环节 ...
2025-09-01巧用 ALTER TABLE rent ADD INDEX:租房系统数据库性能优化实践 在租房管理系统中,rent表是核心业务表之一,通常存储租赁订单信 ...
2025-09-01