当前位置: 首页 > article >正文

Jieba分词实战:5分钟搞定中文文本词频统计(附完整代码)

Jieba分词实战5分钟搞定中文文本词频统计附完整代码中文文本处理是自然语言处理NLP的基础环节而分词则是中文文本处理的第一步。不同于英文等空格分隔的语言中文文本需要专门的工具进行词语切分。本文将带你快速掌握如何使用Python的Jieba库完成中文分词和词频统计即使你是NLP初学者也能轻松上手。1. 环境准备与Jieba安装在开始之前我们需要确保Python环境已经就绪。推荐使用Python 3.6及以上版本这些版本对中文处理有更好的支持。安装Jieba库非常简单只需一条pip命令pip install jieba如果你使用的是Anaconda环境也可以通过conda安装conda install -c conda-forge jieba安装完成后可以通过以下代码验证是否安装成功import jieba print(jieba.__version__)提示建议在虚拟环境中安装Jieba避免与其他项目产生依赖冲突。可以使用python -m venv nlp_env创建虚拟环境。Jieba库具有以下特点支持三种分词模式精确模式、全模式和搜索引擎模式支持自定义词典词性标注功能支持繁体中文分词高性能C实现核心算法2. 基础分词操作让我们从一个简单的例子开始了解Jieba的基本分词功能。2.1 精确模式分词精确模式是Jieba最常用的分词方式试图将句子最精确地切开import jieba text 自然语言处理是人工智能的重要方向 seg_list jieba.cut(text, cut_allFalse) print(精确模式: /.join(seg_list))输出结果精确模式: 自然语言/处理/是/人工智能/的/重要/方向2.2 全模式分词全模式会把句子中所有可能的词语都扫描出来seg_list jieba.cut(text, cut_allTrue) print(全模式: /.join(seg_list))输出结果全模式: 自然/自然语言/语言/处理/是/人工/人工智能/智能/的/重要/方向2.3 搜索引擎模式分词搜索引擎模式在精确模式基础上对长词再次切分seg_list jieba.cut_for_search(text) print(搜索引擎模式: /.join(seg_list))输出结果搜索引擎模式: 自然/语言/自然语言/处理/是/人工/智能/人工智能/的/重要/方向三种模式对比模式类型特点适用场景精确模式精准切分无冗余文本分析、特征提取全模式输出所有可能词语词典构建、词网生成搜索引擎模式对长词再切分搜索引擎索引、查询扩展3. 进阶分词技巧掌握了基础分词后我们来看一些提高分词质量的实用技巧。3.1 使用自定义词典Jieba允许我们添加自定义词典这对于处理专业术语或新词特别有用。假设我们有一个userdict.txt文件内容如下自然语言处理 5 n 深度学习 3 n加载自定义词典jieba.load_userdict(userdict.txt) text 自然语言处理和深度学习都是热门研究方向 seg_list jieba.cut(text) print(/.join(seg_list))输出结果自然语言处理/和/深度学习/都/是/热门/研究/方向如果没有自定义词典自然语言处理可能会被切分为自然/语言/处理。3.2 调整词频对于词典中没有的词我们可以动态调整词频text 李小福是创新办主任 seg_list jieba.cut(text) print(调整前: /.join(seg_list)) jieba.suggest_freq((创新, 办), True) seg_list jieba.cut(text) print(调整后: /.join(seg_list))输出结果调整前: 李小福/是/创新/办/主任 调整后: 李小福/是/创新办/主任3.3 处理停用词停用词是指在文本分析中没有实际意义的词如的、是等。我们可以创建一个停用词列表来过滤它们stopwords [的, 是, 在, 了, 和, 都] text 自然语言处理是人工智能的重要方向 seg_list [word for word in jieba.cut(text) if word not in stopwords] print(过滤停用词: /.join(seg_list))输出结果过滤停用词: 自然语言/处理/人工智能/重要/方向4. 词频统计实战现在我们来完成核心任务——中文文本词频统计。我们将使用一个真实的中文文本作为示例。4.1 基本词频统计首先我们读取一个文本文件并统计词频import jieba from collections import Counter def word_frequency(text_path): with open(text_path, r, encodingutf-8) as f: text f.read() words [word for word in jieba.cut(text) if len(word) 1] # 过滤单字 word_counts Counter(words) return word_counts.most_common(10) # 返回前10个高频词 # 示例使用 top_words word_frequency(sample.txt) print(高频词统计:) for word, count in top_words: print(f{word}: {count})4.2 可视化词频为了更直观地展示词频结果我们可以使用matplotlib进行可视化import matplotlib.pyplot as plt def plot_word_frequency(word_counts, top_n10): words, counts zip(*word_counts[:top_n]) plt.figure(figsize(10, 6)) plt.bar(words, counts) plt.title(词频统计) plt.xlabel(词语) plt.ylabel(出现次数) plt.xticks(rotation45) plt.show() # 使用前面的word_frequency函数结果 plot_word_frequency(top_words)4.3 完整词频统计脚本下面是一个完整的脚本包含文件读取、分词、停用词过滤和词频统计import jieba from collections import Counter import matplotlib.pyplot as plt def load_stopwords(stopwords_path): with open(stopwords_path, r, encodingutf-8) as f: return set([line.strip() for line in f]) def process_text(text_path, stopwords_pathNone): # 加载文本 with open(text_path, r, encodingutf-8) as f: text f.read() # 加载停用词 stopwords load_stopwords(stopwords_path) if stopwords_path else set() # 分词并过滤 words [ word for word in jieba.cut(text) if len(word) 1 and word not in stopwords ] # 统计词频 word_counts Counter(words) return word_counts.most_common() def main(): # 配置路径 text_path sample.txt stopwords_path stopwords.txt # 处理文本 top_words process_text(text_path, stopwords_path) # 输出结果 print(Top 20高频词:) for word, count in top_words[:20]: print(f{word}: {count}) # 可视化 plot_word_frequency(top_words[:10]) if __name__ __main__: main()注意实际使用时需要准备sample.txt待分析文本和stopwords.txt停用词表两个文件。5. 常见问题与解决方案在实际使用Jieba进行分词和词频统计时可能会遇到一些问题。以下是几个常见问题及其解决方法。5.1 分词不准确问题专业术语或新词被错误切分。解决方案使用自定义词典添加专业术语动态调整词频jieba.suggest_freq((词语), True)使用jieba.analyse模块提取关键词5.2 处理速度慢问题处理大文本时速度不理想。优化方法启用并行分词需要安装jieba的并行版本jieba.enable_parallel(4) # 开启并行分词模式参数为并行进程数对文本进行分批处理使用生成器而非列表保存中间结果5.3 内存不足问题处理超大文本时内存溢出。解决方案使用文件流逐行处理def process_large_file(file_path): with open(file_path, r, encodingutf-8) as f: for line in f: words jieba.cut(line.strip()) # 处理每一行的分词结果使用数据库存储中间结果考虑使用更高效的分词工具如pkuseg5.4 特殊符号处理问题文本中包含大量标点、数字等干扰统计。处理方法使用正则表达式预处理文本import re def clean_text(text): # 移除所有非中文字符 return re.sub(r[^\u4e00-\u9fa5], , text)在词频统计时过滤非中文字符words [word for word in jieba.cut(text) if re.match(r^[\u4e00-\u9fa5]$, word)]6. 扩展应用掌握了基础的分词和词频统计后我们可以将这些技术应用到更复杂的场景中。6.1 文本关键词提取Jieba提供了基于TF-IDF算法的关键词提取功能from jieba import analyse # 启用TF-IDF关键词抽取 tfidf analyse.extract_tags text 自然语言处理是人工智能的重要分支它研究如何让计算机理解、生成人类语言 keywords tfidf(text, topK5, withWeightTrue) for keyword, weight in keywords: print(f{keyword}: {weight:.2f})6.2 词性标注Jieba可以标注每个词的词性需要安装jieba.possegimport jieba.posseg as pseg words pseg.cut(我爱自然语言处理) for word, flag in words: print(f{word} ({flag}))输出结果我 (r) 爱 (v) 自然语言处理 (nz)6.3 文本相似度计算结合词频统计我们可以计算文本相似度from collections import defaultdict import math def text_to_vector(text): words jieba.cut(text) vector defaultdict(int) for word in words: if len(word) 1: # 过滤单字 vector[word] 1 return vector def cosine_similarity(vec1, vec2): intersection set(vec1.keys()) set(vec2.keys()) numerator sum([vec1[x] * vec2[x] for x in intersection]) sum1 sum([vec1[x]**2 for x in vec1.keys()]) sum2 sum([vec2[x]**2 for x in vec2.keys()]) denominator math.sqrt(sum1) * math.sqrt(sum2) if not denominator: return 0.0 return float(numerator) / denominator text1 自然语言处理是人工智能的重要分支 text2 人工智能包含自然语言处理等多个方向 vec1 text_to_vector(text1) vec2 text_to_vector(text2) similarity cosine_similarity(vec1, vec2) print(f文本相似度: {similarity:.2f})在实际项目中我发现结合自定义词典和停用词表可以显著提高分词质量。对于特定领域的文本分析建议先收集领域术语构建专业词典这比单纯依赖通用分词效果要好得多。

相关文章:

Jieba分词实战:5分钟搞定中文文本词频统计(附完整代码)

Jieba分词实战:5分钟搞定中文文本词频统计(附完整代码) 中文文本处理是自然语言处理(NLP)的基础环节,而分词则是中文文本处理的第一步。不同于英文等空格分隔的语言,中文文本需要专门的工具进行…...

模型微调集成:OpenClaw调用Qwen3-32B的LoRA适配器实战

模型微调集成:OpenClaw调用Qwen3-32B的LoRA适配器实战 1. 为什么需要本地微调模型接入? 去年我在处理一批医疗文献自动化摘要任务时,发现通用大模型对专业术语的理解总差那么一口气。当模型把"冠状动脉搭桥术"解释成"心脏旁…...

GEO 优化系统实战指南:从架构设计到算法落地

1. GEO优化系统架构设计实战 第一次接触GEO优化系统时,我被各种空间计算概念搞得晕头转向。直到真正动手搭建系统才发现,架构设计就像搭积木,只要掌握关键模块的组装逻辑,就能构建出稳定高效的地理优化引擎。下面分享我在多个项目…...

【限时开放】Mojo-Python互操作安全边界图谱(2024 Q3最新CVE影响评估+3类高危反模式代码扫描规则),错过将无法适配Mojo v1.2+运行时

第一章:Mojo-Python互操作安全边界图谱概览Mojo 作为面向 AI 原生开发的系统级编程语言,其与 Python 的互操作并非简单语法兼容,而是在运行时、内存模型、类型系统与异常传播四个维度上构建了显式、可审计的安全边界。这些边界共同构成一张动…...

DevExpress GridControl动态添加行的两种高效实现方式

1. 两种动态添加行的核心方法对比 刚接触DevExpress GridControl时,最让我头疼的就是动态添加行这个基础操作。网上教程要么太零散,要么直接贴代码不解释原理。经过多个项目实战,我总结出最高效的两种实现方式,就像给表格数据&quo…...

基于粒子群优化算法的地表水源热泵机组优化调度 以水源热泵机组角度对地表水源热泵系统建模

基于粒子群优化算法的地表水源热泵机组优化调度 以水源热泵机组角度对地表水源热泵系统建模, 并采用粒子群优化算法优化算法求解热泵机组每小时最佳制冷量和制热量 最近帮朋友做了个小区地表水源热泵的调度优化项目,一开始以为就是调调空调温度&#xf…...

从随机采样到精准决策:蒙特卡罗方法在复杂系统建模中的实践

1. 蒙特卡罗方法:用随机性破解复杂世界的密码 想象你是一位古代数学家,手里只有一把沙子和一块画着方格的石板。现在要计算一个不规则形状的湖泊面积,你会怎么做?最原始的方法可能是把沙子均匀撒在石板上,然后数出落在…...

MacBook Intel芯片用户看过来:保姆级Anaconda安装与国内镜像源配置全攻略

MacBook Intel芯片用户看过来:保姆级Anaconda安装与国内镜像源配置全攻略 作为一名长期使用MacBook进行Python开发的工程师,我深知环境配置对于初学者来说可能是个不小的挑战。特别是对于使用Intel芯片的MacBook用户,虽然相比M1芯片少了些兼容…...

深入解析Cache工作原理与多核一致性机制

深入理解Cache工作原理与技术实现1. 计算机体系中的Cache基础1.1 Cache存在的必要性现代计算机系统中,处理器性能与存储器访问性能之间存在显著差距。从历史发展数据来看,CPU计算性能每18个月翻一番(遵循摩尔定律),而D…...

一文搞懂Agent三大核心技术:Function Calling、MCP、A2A,小白也能轻松收藏学习!

本文详细解析了AI Agent的三大核心技术:Function Calling、MCP和A2A。Function Calling使AI能够主动获取外部信息,MCP为工具接入提供了标准化接口,而A2A则实现了多智能体之间的协作。通过这三个技术的演进,AI Agent的能力从点对点…...

避开这些坑!医疗内窥镜Zemax优化时的高温灭菌与弯曲成像难题解决指南

医疗内窥镜光学系统设计实战:高温灭菌与弯曲成像的Zemax解决方案 在微创手术和工业检测领域,直径仅2.8mm的医疗内窥镜需要同时满足140广角视场、F2.0大光圈和10μm高分辨率的要求。更严峻的挑战来自使用环境——必须耐受135℃高温蒸汽灭菌,并…...

CHORD-X从零开始:C语言基础概念学习报告自动生成教程

CHORD-X从零开始:C语言基础概念学习报告自动生成教程 你是不是也遇到过这样的烦恼?作为编程老师,每次讲完C语言的指针、结构体这些难点,总想给学生一份清晰易懂的复习报告,但自己动手整理又太花时间。或者&#xff0c…...

KLite:轻量级嵌入式实时操作系统内核解析

KLite:一款简洁易用的嵌入式实时操作系统内核 1. 项目概述 1.1 系统定位 KLite是一款面向嵌入式领域的轻量级抢占式实时操作系统内核,采用MIT开源协议发布。该系统专为资源受限的微控制器设计,核心设计理念是保持功能完整性的同时&#xff…...

高效管理惠普OMEN游戏本:OmenSuperHub全面解析与实战指南

高效管理惠普OMEN游戏本:OmenSuperHub全面解析与实战指南 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普OMEN系列游戏本设计的轻量级系统管理工具,它通过替代原厂Omen Ga…...

解析 C++ 中的‘生存期保护’:利用生命周期注解规避 99% 的悬挂指针风险

解析 C 中的“生存期保护”:利用生命周期注解规避 99% 的悬挂指针风险尊敬的各位开发者,各位对 C 内存安全孜孜不倦的探索者们,大家好!在 C 的广阔世界中,指针和引用以其强大的能力,赋予了我们对内存的直接…...

避坑指南:Double DQN和Dueling DQN在TensorFlow 2.x中的5个常见实现错误

Double DQN与Dueling DQN在TensorFlow 2.x中的五大工程陷阱与解决方案 当你在深夜调试强化学习模型时,是否遇到过这种情况:训练曲线像过山车一样剧烈波动,明明采用了Double DQN或Dueling DQN这些改进算法,效果却比基础DQN还要差&a…...

技术驱动B端拓客升级:号码核验行业的痛点突围与发展新路径,氪迹科技核验筛选算法系统,法人股东核验,阶梯式价格

在B端市场竞争愈发精细化的当下,拓客工作的核心竞争力已从“广撒网”转向“精准触达”,而企业核心决策人的有效联系方式,正是精准拓客的关键载体。号码核验作为拓客流程的前置核心环节,直接决定着拓客投入的回报效率,更…...

LangGPT:革新自然语言编程的结构化提示词框架

LangGPT:革新自然语言编程的结构化提示词框架 【免费下载链接】LangGPT LangGPT: Empowering everyone to become a prompt expert!🚀 Structured Prompt,Language of GPT, 结构化提示词,结构化Prompt 项目地址: https://gitcod…...

OpenClaw浏览器自动化:nanobot镜像实现定时抢购与价格监控

OpenClaw浏览器自动化:nanobot镜像实现定时抢购与价格监控 1. 为什么选择OpenClaw实现浏览器自动化 去年双十一期间,我为了抢购某款显卡,连续三天凌晨守着电脑刷新页面,结果还是错过了补货。这种经历让我开始寻找自动化解决方案…...

保姆级教程:用Docker Compose一键部署带汉化和HTTPS的n8n,并配置反向代理(Nginx)

企业级n8n自动化平台全栈部署实战:从容器编排到安全加固 在数字化转型浪潮中,自动化工作流平台已成为企业降本增效的核心基础设施。n8n作为GitHub上增长最快的开源自动化工具之一,凭借其可视化编排能力和400节点生态,正在重塑企业…...

PdgCntEditor三步搞定PDF书签目录自动生成

1. 为什么你需要PDF书签目录? 每次打开几百页的PDF文档,像无头苍蝇一样滑动滚动条找内容?这种体验我太懂了。上周处理一份300多页的技术手册,光是翻目录就花了半小时,直到我发现PdgCntEditor这个神器。它能把杂乱无章…...

SAP IDoc入站出站处理全流程拆解:从WE19测试到IDOC_INPUT_函数调试

SAP IDoc接口开发实战:从零构建到生产环境调试全指南 在SAP系统集成领域,IDoc(Intermediate Document)作为企业级数据交换的标准载体,其重要性不言而喻明。不同于简单的文件传输,一个健壮的IDoc接口需要开发…...

电力电子顶刊投稿避坑指南:TIE与TPEL审稿流程、周期及常见误区全解析

电力电子顶刊投稿策略全解析:从TIE到TPEL的实战避坑指南 在电力电子与电机驱动领域,IEEE Transactions on Industrial Electronics (TIE)和IEEE Transactions on Power Electronics (TPEL)无疑是研究者梦寐以求的发表平台。这两本期刊不仅代表着行业内的…...

PlayCover深度技术解析:如何在M系列Mac上实现iOS游戏原生运行体验

PlayCover深度技术解析:如何在M系列Mac上实现iOS游戏原生运行体验 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover PlayCover作为一款创新的开源工具,让Apple Silicon Mac用户能…...

Python原生AOT编译到底稳不稳?我们压测了7类生产负载:高并发API、实时流处理、边缘AI推理——结果出乎意料(附完整benchmark报告)

第一章:Python原生AOT编译方案2026实战案例全景概览Python原生AOT(Ahead-of-Time)编译在2026年已进入工程化落地深水区,主流方案如Nuitka 2.0、PyO3 Rust AOT Pipeline、以及新兴的CPython官方实验分支cpython-aot,均…...

以太网MAC与PHY接口技术详解

以太网PHY、MAC及其通信接口技术解析1. 以太网接口架构概述1.1 基本组成结构以太网接口电路从硬件角度可分为两大核心组件:MAC控制器(Media Access Control):负责数据链路层的媒体访问控制PHY芯片(Physical Layer&…...

SystemVerilog进阶:深入探索随机化约束的高级应用

1. 从基础到进阶:SystemVerilog随机化约束的核心价值 在芯片验证领域,随机化验证已经成为提高验证效率的黄金标准。SystemVerilog的随机化约束机制,就像给验证工程师配备了一个智能数据生成器,可以自动产生符合设计规范的测试场景…...

MambaAD实战:5分钟搞定工业缺陷检测的SoTA模型部署(附代码)

MambaAD工业缺陷检测实战:从模型原理到产线部署全指南 引言:当状态空间模型遇见工业质检 在液晶面板生产线上,一个0.1mm的亮点缺陷可能导致整批产品报废;在汽车零部件铸造车间,细微的表面裂纹可能引发严重的安全隐患。…...

WavePWM库:嵌入式LED正弦调光算法与实现

1. WavePWM库概述:正弦波形LED调光的底层实现原理与工程应用 WavePWM是一个面向嵌入式LED驱动场景的轻量级波形PWM计算库,其核心价值不在于直接控制硬件引脚,而在于 以确定性数学模型生成高保真度的正弦(或类正弦/指数&#xff0…...

AI教材生成强力工具!低查重保障,让教材编写事半功倍!

梳理教材知识点确实是一项“精细活”,最大的挑战在于平衡和衔接知识之间的关系。如果不小心,很可能会遗漏一些核心知识点,或者在难度的把控上出现问题——小学教材常常写得过于复杂,让学生难以理解;而高中教材又可能显…...