百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

教你对抓取的文本进行分词、词频统计、词云可视化和情感分析

off999 2024-12-30 06:05 36 浏览 0 评论

作者:Python进阶者

来源:Python爬虫与数据挖掘

前言

前几天有个叫【小明】的粉丝在问了一道关于Python处理文本可视化+语义分析的问题。

他要构建语料库,目前通过Python网络爬虫抓到的数据存在一个csv文件里边,现在要把数据放进txt里,表示不会,然后还有后面的词云可视化,分词,语义分析等,都不太会。

一、思路

内容稍微有点多,大体思路如下,先将csv中的文本取出,之后使用停用词做分词处理,再做词云图,之后做情感分析。

1、将csv文件中的文本逐行取出,存新的txt文件,这里运行代码《读取csv文件中文本并存txt文档.py》进行实现,得到文件《职位表述文本.txt》

2、运行代码《使用停用词获取最后的文本内容.py》,得到使用停用词获取最后的文本内容,生成文件《职位表述文本分词后_outputs.txt》

3、运行代码《指定txt词云图.py》,可以得到词云图;

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:\Users\pdcfi\Desktop\xiaoming\职位表述文本.txt" ,encoding="utf-8")as file:
    text=file.read()
    text=cut(text)
    mask_pic=numpy.array(Image.open(r"C:\Users\pdcfi\Desktop\xiaoming\python.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('\n\r').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('\r\n'))
        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进阶者。本文基于粉丝提问,针对一次文本处理,手把手教你对抓取的文本进行分词、词频统计、词云可视化和情感分析,算是完成了一个小项目了。下次再遇到类似这种问题或者小的课堂作业,不妨拿本项目练练手,说不定有妙用噢,拿个高分不在话下!

相关推荐

高仿ios主题全套软件(超高仿ios安卓主题)

IPhone12启动器全套仿Ios12桌面主题是一款能够让大家的安卓手机秒变苹果机的系统工具,IPhone12启动器可让你的手机直接变成IPhone12的桌面。从主题,桌面,Ui以及系统内的各种细节,...

win10在哪里下载软件最好(win10软件在哪下载比较好)

1、点击Win10系统的开始菜单,然后在点击应用商店;2、打开Win10应用商店后,在搜索框里输入想要搜索的应用软件,然后点击检索;3、点击搜索到的应用,点击安装;4、点击安装后,系统会提示要切换到这...

电脑软件怎么安装(电脑软件怎么安装到手机上)

电脑怎么安装excel软件方法/步骤:1.在电脑左下角找到这个小圆圈,单击小圆圈打开搜索栏。搜索MicrosoftStore。2.在右上角找到搜索,单击搜索。在搜索中输入Excel。回车键打开。3....

u盘win7系统安装盘(u盘里安装win7系统)

有些软件我们从网上下载安装时需要破解密码或者我们没有网时,直接需要把安装的软件,传到别的电脑,具体操作如下:1。直接把另一台电脑桌面上的软件复制或发送的优盘里,其实那只是一个快捷方式2.以ps软件为例...

语音输入法哪个好用(语音输入法免费版下载安装)

日常基本使用的讯飞和搜狗都还不错,对比来看的话,讯飞相对会更好一些。讯飞输入法在键盘输入方面进步非常快,功能也比较全面。单纯的语音方面,讯飞的稍微好一点,例如一些标点、断句之类处理的更加到位。讯飞支持...

手机app应用市场(手机里面的应用市场)

360手机助手是android智能手机的手机管理专家。提供海量的游戏、软件、音乐、小说、视频、图片,通过它轻松下载、安装、管理手机资源。所有提供信息资源,全部经过360安全检测中心的审核认证,绿色无毒...

开局最强系统(开局最强系统txt奇书网)
开局最强系统(开局最强系统txt奇书网)

《最强奶爸系统》作者:最美猪猪小说简介同学甲:“我找到了月入七千的工作。”同学乙:“我找到了月入一万的工作。叶辰,你呢?”叶辰:“我老婆…是万亿市值超凡集团的老板,给我生了10个孩子。”同学们:???叶辰遭前女友陷害,阴差阳错邂逅了一位美女...

2026-01-03 07:03 off999

win10系统下载器官网(下载windows10官方)

如果您想要在Windows10上下载游戏辅助,可以按照以下步骤进行:1.打开您选择的游戏辅助下载网站,例如:GameCopyWorld或MegaGames。这些网站提供许多破解游戏的补丁和辅助工具...

photoshop官方网站进入(photoshop官网入口)

那是因为网站采用了安全加密技术,安装了SSL证书,说明此网站为安全的页面,其信息已经经过加密措施。显示https的网站,网址上还会有显示一个小锁头,也是安全标志。1.先用Photoshop做一个网页图...

windows7旗舰版主机多少钱(windows7旗舰版电脑多少钱一台)

其实这两个版本没有太大的差别,只是功能上有少量差别,旗舰版服务开启的要比专业版本服务开启的多几个,至于朋友们说的专业快速度比旗舰版快,或旗舰版比专业版速度快,个人认为速度都是一样只是功能上的差别,如果...

小米平板(小米平板怎么分屏)

小米平板的简单使用方法:1、首先给小米平板给充电,确保电量充足。2、长按住电源键启动小米平板,进入设备初始设置界面。3、根据屏幕上的提示信息,设置平板电脑联网、绑定小米账号等,直到完成即可正常使用了。...

移动硬盘一直在加载无法读取

移动硬盘电源灯亮说明硬盘有供电,无法识别此移动硬盘时,可按如下步骤进行排查:1)将移动硬盘拔下后,更换硬盘盒再接上确认。2)更换过硬盘盒还是无法识别的话,移动硬盘就损坏了,需要进行更换;3)若更换过硬...

下载软件的app大全(下载软件的app大全免费)

中国最常见的目前是迅雷下载软件。官网可以下载到正常的免费版本。他支持ftphttpbt磁力链接等多种形式的下载。国外的有bitcome。电驴和电骡等多种形式的下载软件。他们都可以满足日常的下载要求,...

wifi贴小程序搭建需要多少钱

回答如下:要搭建自己的WiFi小程序,需要以下步骤:1.获得开发资格:首先需要注册成为开发者,获得小程序的开发资格。2.编写代码:使用微信小程序的开发工具,编写WiFi小程序的前端和后端代码。3....

外网服务器地址(外网服务器地址ip大全)

要弄懂这个问题,你首先要了解什么叫内网,什么叫外网,什么叫服务器,服务器在网络中所扮演的是什么角色,内网:就是指内部网络,窄义上的内网就是指中小型的局域网外网:就是指在你办公网络之外能访问到的网络...

取消回复欢迎 发表评论: