找回密码
 会员注册
查看: 28|回复: 0

文本分析-使用Python做词频统计分析

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64170
发表于 2024-9-12 13:12:31 | 显示全部楼层 |阅读模式
🤵‍♂️个人主页:@艾派森的个人主页✍🏻作者简介:Python学习者🐋希望大家多多支持,我们一起进步!😄如果文章对你有帮助的话,欢迎评论💬点赞👍🏻收藏📂加关注+前言前面我们已经介绍了文本分析中的中文分词和去除停用词,这篇文章将详细介绍分词后如何进行词频统计分析。词频统计的概念        词频统计是指在文本或语音数据中,统计每个单词或符号出现的次数,以便对文本或语音数据进行分析和预处理。词频统计是自然语言处理中的一个重要任务,其目的是为后续的文本分析、情感分析、机器翻译等任务做好准备。        在词频统计中,通常将文本或语音数据转换成单词或符号的形式,然后统计每个单词或符号出现的次数,并将其存储为一个数据集或字典。这些数据集或字典可以用来训练机器学习模型或进行文本分类、情感分析等任务。        词频统计可以应用于许多领域,例如文本分类、情感分析、机器翻译、信息检索等。在文本分类中,词频统计可以帮助确定最重要的单词或符号,以帮助分类器进行分类。在情感分析中,词频统计可以帮助确定文本中最常见的情感,以便进行分类。在机器翻译中,词频统计可以帮助确定翻译的单词或符号。在信息检索中,词频统计可以帮助确定查询中最重要的单词或符号,以便进行查询匹配。        总之,词频统计是自然语言处理中的一个重要任务,其目的是为后续的文本分析、情感分析、机器翻译等任务做好准备。常用的方法和工具ythonython是一种非常流行的编程语言,有许多库和工具可以用于文本处理和统计,其中最流行的是NumPy、Pandas和SciPy。可以使用这些库中的任何一个来计算文本中词频统计,例如使用NumPy中的str_freq函数来计算字符串中单词出现的频率。R:R是一种统计软件,可以轻松地进行数据可视化和统计分析。可以使用R中的textmining包来计算文本中词频统计,例如使用tm包中的tf_idf函数来计算文本的分词和词频统计。Java:Java是一种流行的编程语言,也有许多库和工具可以用于文本处理和统计。可以使用Java中的ApacheCommonsText和ApacheCommonsCollections库来计算文本中词频统计,例如使用CommonsText中的getWordsmethod来获取文本中的单词。JavaScript:JavaScript是一种前端编程语言,也可以用于后端开发。可以使用JavaScript中的Node.js和npm包管理器来运行文本处理和统计任务,例如使用npm包中的text-parser和text-count包来计算文本中词频统计。Python实现词频统计 关于python的实现,我给大家介绍两种最常用的方法。在做词频统计之前,需要要用到前面介绍中文分词封装的函数,然后我这里使用了关于大唐不夜城的一条评论文本作为示范先进行分词。importreimportjiebadefchinese_word_cut(mytext):jieba.load_userdict('自定义词典.txt')#这里你可以添加jieba库识别不了的网络新词,避免将一些新词拆开jieba.initialize()#初始化jieba#文本预处理:去除一些无用的字符只提取出中文出来new_data=re.findall('[\u4e00-\u9fa5]+',mytext,re.S)new_data="".join(new_data)#文本分词seg_list_exact=jieba.lcut(new_data)result_list=[]#读取停用词库withopen('停用词库.txt',encoding='utf-8')asf:#可根据需要打开停用词库,然后加上不想显示的词语con=f.readlines()stop_words=set()foriincon:i=i.replace("\n","")#去掉读取每一行数据的\nstop_words.add(i)#去除停用词并且去除单字forwordinseg_list_exact:ifwordnotinstop_wordsandlen(word)>1:result_list.append(word)returnresult_listcomment='大唐不夜城,不夜城趣味性很高,里面地方特色东西好吃,也有星巴克麦当劳等等选择,有不少场表演,外景夜景一定要薅一个,其它地方很难有这般景象了。娱乐体验了不倒翁,还有十二时辰里面表演更加精彩、内景拍照不错,簋唐楼可以尝试一下沉浸剧本杀……'comment_cutted=chinese_word_cut(comment)comment_cutted方法1:使用Pandas库实现首先使用pandas将前面分词结果进行转化DataFrame类型importpandasaspddf=pd.DataFrame(comment_cutted)df 接着使用groupby函数对第0列进行统计,然后降序输出word_frequency_df=df.groupby(0).size().sort_values(ascending=False)word_frequency_df 最后将词频统计的结果保存为文件#将词频统计进行保存word_frequency_df.to_excel('词频统计结果.xlsx')#保存为excel文件#word_frequency_df.to_csv('词频统计结果.xlsx')#保存为csv文件方法2:使用collections库#方法2-使用collections库fromcollectionsimportCounterCounter(comment_cutted)使用Counter函数对前面的分词结果进行统计,然后使用most_common输出按词频频次降序排列的结果,如果你只想输出前n个单词,传入数值即可。 默认是全部输出。word_counts=Counter(comment_cutted)word_counts.most_common()#word_counts.most_common(10)#输出词频最高的前十个单词  如果想将上面结果保存为文件的话,执行以下代码:#将词频统计结果保存为txt文件word_counts_top=word_counts.most_common()withopen('词频统计结果.txt','w',encoding='utf-8')asf:foriinword_counts_top:f.write(str(i[0]))f.write('\t')f.write(str(i[1]))f.write('\n') 如果我们想将TOP10高频词进行可视化展示,可以执行下面代码:importmatplotlib.pylabaspltplt.rcParams['font.sans-serif']=['SimHei']#解决中文显示plt.rcParams['axes.unicode_minus']=False#解决符号无法显示word_counts=Counter(comment_cutted)word_counts_top=word_counts.most_common()x=[item[0]foriteminword_counts_top[:10]]y=[item[1]foriteminword_counts_top[:10]]plt.bar(x,y)plt.title('Top10高频词')plt.xlabel('词语')plt.ylabel('频次')plt.show() 案例实战词频分析只是文本分析的一个环节,我在之前的文章中也用到过,大家可以参考学习:数据分析实例-获取某宝评论数据做词云图可视化数据分析案例-文本挖掘与中文文本的统计分析
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 14:25 , Processed in 0.378867 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表