news 2026/7/3 3:27:14

使用python词频统计分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用python词频统计分析

前言

词频统计是指在文本或语音数据中,统计每个单词或符号出现的次数,以便对文本或语音数据进行分析和预处理。词频统计是自然语言处理中的一个重要任务,其目的是为后续的文本分析、情感分析、机器翻译等任务做好准备。

文本词频统计(英文字符)

1、普通版

importredefparse(text):# 使用正则表达式去除标点符号和换行符text=re.sub(r'[^\w ]',' ',text)# 转为小写text=text.lower()# 生成所有单词的列表word_list=text.split(' ')# 去除空白单词,并转换为列表返回word_list=list(filter(None,word_list))returnword_list# 测试一下sample_text="Hello, World! \nThis is a test-text. Are you ready?"print(parse(sample_text))

结果如下:

['hello','world','this','is','a','test_text','are','you','ready']

2.改良版

importredefparse_optimized(text):# 去除标点符号(替换为空格)text=re.sub(r'[^\w ]',' ',text)# 转为小写,并直接使用 split() 自动处理连续空格returntext.lower().split()# 测试sample_text="Hello, World! \nThis is a test-text. Are you ready?"print(parse_optimized(sample_text))

python中的split函数,如果不传任何参数(即直接写split()),它会自动按所有空白字符(空格,换行符\n,制表符\t)进行过分割,并且自动去除空字符。

文本词频统计(中文字符)

与英文字符不同,中文的字符之间是没有空格的,所以需引入jieba(结巴分词)进行词频统计。
1.普通版

importreimportjiebafromcollectionsimportCounterdefget_chinese_word_freq(text,top_n=10):# 1. 数据清洗:去除标点符号、数字和英文字母(只保留中文字符)# 如果你想保留英文,可以把正则改成 r'[^\w\u4e00-\u9fa5]'cleaned_text=re.sub(r'[^\u4e00-\u9fa5]','',text)# 2. 中文分词:使用 jieba 的 lcut 方法直接返回列表word_list=jieba.lcut(cleaned_text)# 3. 过滤无意义的词(可选,但强烈建议)# 在实际项目中,通常会读取一个“停用词表”(stop words)文件,这里做简单演示stop_words={"的","了","和","是","就","都","而","及","与","着","或"}filtered_words=[]forwordinword_list:# 过滤掉停用词,并且通常过滤掉长度为 1 的单字(比如“我”、“你”、“啊”)ifwordnotinstop_wordsandlen(word)>=2:filtered_words.append(word)# 4. 统计词频:使用 Counterword_counts=Counter(filtered_words)# 5. 返回出现频率最高的 top_n 个词returnword_counts.most_common(top_n)# ================= 测试一下 =================sample_text=""" 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。 它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。 自然语言处理是一门融语言学、计算机科学、数学于一体的科学。 因此,这一领域的研究将涉及自然语言,即人们日常使用的语言, 所以它与语言学的研究有着密切的联系。 """# 获取词频最高的 5 个词top_words=get_chinese_word_freq(sample_text,top_n=5)print("中文词频统计结果:")forword,freqintop_words:print(f"词语: '{word}' => 出现次数:{freq}")

结果如下:

中文词频统计结果: 词语:'自然语言'=> 出现次数: 4 词语:'领域'=> 出现次数: 3 词语:'研究'=> 出现次数: 3 词语:'处理'=> 出现次数: 2 词语:'计算机科学'=> 出现次数: 2

jieba.lcut(text):这是结巴分词的核心方法,它会基于内置的强大中文库,利用统计算法(HMM模型),把一段连续的中文切分成一个词语列表。
\u4e00-\u9fa5 是汉字在 Unicode 编码中的范围。这个正则的意思是“把所有不是汉字的字符全部替换为空”
len(word) >= 2:中文里很多单字(如“的、地、得、我、你、他”)通常对分析文章核心内容帮助不大,所以统计词频时经常会把长度小于 2 的词过滤掉。
Counter:Python 内置的计数神器,把它套在列表外面,它会自动帮你统计每个元素出现的次数,并提供 most_common() 方法直接排序输出。

2.改良版,与普通版相比,改进的一点是可以加载自定义词典和停用词库

importreimportjiebaimportosfromcollectionsimportCounterdefchinese_word_cut(mytext,top_n=10):dict_path=os.path.join(os.path.dirname(os.path.abspath(__file__)),'自定义词典.txt')jieba.load_userdict(dict_path)# 这里你可以添加jieba库识别不了的网络新词,避免将一些新词拆开jieba.initialize()# 初始化jieba# 文本预处理 :去除一些无用的字符只提取出中文出来new_data=re.findall('[\u4e00-\u9fa5]+',mytext)new_data=" ".join(new_data)# 文本分词seg_list_exact=jieba.lcut(new_data)result_list=[]stop_words_path=os.path.join(os.path.dirname(os.path.abspath(__file__)),'停用词库.txt')# 读取停用词库withopen(stop_words_path,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)returnCounter(result_list).most_common(top_n)comment='大唐不夜城,不夜城趣味性很高,里面地方特色东西好吃,也有星巴克麦当劳等等选择,有不少场表演,外景夜景一定要薅一个,其它地方很难有这般景象了。娱乐体验了不倒翁,还有十二时辰里面表演更加精彩、内景拍照不错,簋唐楼可以尝试一下沉浸剧本杀……'comment_cutted=chinese_word_cut(comment,top_n=5)# word_counts.most_common(10) # 输出词频最高的前十个单词print("中文词频统计结果:")forword,freqincomment_cutted:print(f"词语: '{word}' => 出现次数:{freq}")

结果如下:

中文词频统计结果: 词语:'不夜城'=> 出现次数: 2 词语:'里面'=> 出现次数: 2 词语:'地方'=> 出现次数: 2 词语:'表演'=> 出现次数: 2 词语:'大唐'=> 出现次数: 1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 3:23:56

AI智能体详细介绍(一)

一、AI Agent 的重要性 token --> 词元 AI 工具琳琅满目,但是 AI Agent 开发最为耀眼! 1、 微软CEO纳德拉透露,微软30%代码由AlAgent生成,预计2030年95%代码将由Al Agent生成。 2、 通用AIAgent创业公司Manus上线仅2个月后…

作者头像 李华
网站建设 2026/7/3 3:19:21

显存还没爆,大模型先崩了?你的 KV Cache 正在悄悄杀掉你的显存预算

同一个 Llama-3-8B(Q4_K_M),同一段 prompt。-ngl 0 纯 CPU 解码,我这台机器上大约 2 tokens/s;-ngl 99 全塞进一张 RTX 4090,稳定在 150 tokens/s 上下——75 倍。中间那条曲线不是直线,也不是你以为的样子。 先说一个大多数教程都写错的事实:n_gpu_layers=10 不是把前…

作者头像 李华
网站建设 2026/7/3 3:16:14

掌握MaxBot自动化抢票机器人:实现高效智能抢票的实战方案

掌握MaxBot自动化抢票机器人:实现高效智能抢票的实战方案 【免费下载链接】tix_bot Max搶票機器人(maxbot) help you quickly buy your tickets 项目地址: https://gitcode.com/gh_mirrors/ti/tix_bot MaxBot抢票机器人是一款基于Python 3和Selenium技术开发…

作者头像 李华
网站建设 2026/7/3 3:16:02

Hive 内置函数

字符串函数-- 字符串长度 select length(hello) -- 替换 select replace(hello,l,x) -- 截取 select substr(hello,2,3) -- 拼接 select concat(hello,hello,hello) select hello||hello||helloselect concat(id,name)from hero -- 拼接时添加分隔符, 分隔符写在第一个参数 s…

作者头像 李华
网站建设 2026/7/3 3:13:00

《算法设计与分析》全套PPT课件(西交)

《算法设计与分析》全套课件(西交) 课件内容: 第1章鄭法引论.pdf 第2章递归与分治策略.pdf 第3章动态规划-1.pdf 第4章贪心算法.pdf 第5章回溯法-1.pdf 第6章分支限界法-1.pdf 第7章概率算法.pdf 第8章NP完全性理论.pdf 第9章近似算法.pdf 第…

作者头像 李华