在中文自然语言处理Natural Language ProcessingNLP中文本通常需要先进行分词Word Segmentation即将连续的汉字序列划分为具有语义的词语单位。例如我喜欢自然语言处理可以分词为我 / 喜欢 / 自然语言处理英文通常以空格作为天然词边界而中文文本通常没有显式的词语边界因此需要通过词典匹配或统计模型进行分词。Jieba 是 Python 中最常用的中文分词库之一具有以下特点• 支持精确模式、全模式和搜索引擎模式• 支持自定义词典• 支持关键词提取TF-IDF、TextRank• 支持词性标注• 基于前缀词典 DAG 动态规划实现分词并结合 HMM 进行新词识别安装 Jiebapip install jieba导入库import jieba一、分词函数分词是 Jieba 的核心功能。cut()进行中文分词返回一个生成器对象。jieba.cut(sentence, cut_allFalse, HMMTrue)参数说明• sentence输入字符串• cut_all是否使用全模式• HMM是否使用 Hidden Markov Model隐马尔可夫模型识别新词返回一个生成器generator逐个返回分词结果。示例text 我来到北京清华大学words jieba.cut(text)print(list(words))输出示例[我, 来到, 北京, 清华大学]说明默认使用精确模式适用于一般文本分析。lcut()与 cut() 相同但直接返回列表list。jieba.lcut(sentence, cut_allFalse, HMMTrue)示例jieba.lcut(我爱自然语言处理)输出[我, 爱, 自然语言, 处理]说明lcut() 是 cut() 的便捷版本。tokenize()获取分词结果及其在原字符串中的位置。jieba.tokenize(sentence, modedefault, HMMTrue)参数说明• sentence输入字符串• mode分词模式default默认模式search搜索引擎模式• HMM是否启用 HMM 新词识别返回返回一个可迭代对象iterator其中每个元素通常包含词语、起始位置、结束位置等信息。示例text 我喜欢自然语言处理 for item in jieba.tokenize(text): print(item)输出示例(我, 0, 1)(喜欢, 1, 3)(自然语言, 3, 7)(处理, 7, 9)说明tokenize() 不仅给出分词结果还给出每个词在原文本中的位置区间因此特别适合构建搜索索引、文本高亮显示、词语定位以及信息检索系统等场景。二、分词模式Jieba 支持三种主要分词模式。1、精确模式默认最常用模式尽量准确地切分句子。jieba.cut(text)示例text 湖南省长沙市湘江大桥 print(list(jieba.cut(text)))输出[湖南省, 长沙市, 湘江, 大桥]2、全模式扫描出所有可能的词语。jieba.cut(text, cut_allTrue)示例print(list(jieba.cut(湖南省长沙市湘江大桥, cut_allTrue)))输出示例[湖南, 湖南省, 省长, 长沙, 长沙市, 沙市, 湘江, 大桥]说明全模式速度快但存在大量冗余词。3、搜索引擎模式用于搜索引擎分词对长词进行再次切分。jieba.cut_for_search()进行中文分词用于搜索引擎返回一个生成器对象。jieba.lcut_for_search()与 jieba.cut_for_search() 相同但直接返回列表listjieba.cut_for_search(sentence)jieba.lcut_for_search(sentence)示例jieba.lcut_for_search(小明毕业于中国科学院计算所)输出示例[小明, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所]说明适合构建搜索索引。三、词典管理函数Jieba 支持自定义词典以改善分词效果。add_word()向词典中添加新词。jieba.add_word(word, freqNone, tagNone)参数说明• word新词• freq词频可选• tag词性可选示例jieba.add_word(自然语言处理)jieba.lcut(我喜欢自然语言处理)输出[我, 喜欢, 自然语言处理]del_word()删除词典中的词。jieba.del_word(word)示例jieba.del_word(自然语言处理)text jieba.lcut(我喜欢自然语言处理)load_userdict()加载自定义词典。jieba.load_userdict(file_name)词典格式自然语言处理 10 n机器学习 10 n深度学习 10 n其中自然语言处理表示需要加入词典的词条。10表示该词在词典中的词频frequency。词频越高表示越容易被识别为一个完整词。n表示该词的词性Part of Speech。词频和词性字段均为可选。常见词性包括词性含义n名词v动词a形容词r代词m数词ns地名nr人名nt机构名示例jieba.load_userdict(user_dict.txt)说明自定义词典常用于专业领域文本、专有名词或产品名称等。suggest_freq()动态调整词频使某些词语更容易被切分或避免被错误切分。jieba.suggest_freq(segment, tuneFalse)参数说明• segment可以是一个字符串也可以是一个词语元组• tune是否立即调整词频tune False仅返回建议词频tune True同时将该建议词频应用到当前分词器返回返回建议使用的词频值。示例 1查看建议词频freq jieba.suggest_freq((中, 将), tuneFalse)print(freq)示例 2调整分词效果text 如果放到post中将出错。print(jieba.lcut(text)) jieba.suggest_freq((中, 将), tuneTrue)print(jieba.lcut(text))输出示例[如果, 放到, post, 中将, 出错, 。][如果, 放到, post, 中, 将, 出错, 。]说明suggest_freq() 适合做局部调优若需要长期维护专业词汇通常仍应优先使用自定义词典。四、关键词提取Jieba 提供两种关键词提取算法• TF-IDF• TextRank需要导入子模块import jieba.analyseextract_tags()基于 TF-IDFTerm Frequency – Inverse Document Frequency词频 – 逆文档频率的关键词提取。jieba.analyse.extract_tags(sentence, topK20, withWeightFalse)参数说明• sentence输入文本• topK返回关键词数量• withWeight是否返回权重示例text 自然语言处理是人工智能的重要领域广泛应用于机器翻译、文本分类和信息检索。jieba.analyse.extract_tags(text, topK5)输出示例[自然语言处理, 人工智能, 机器翻译, 文本分类, 信息检索]说明一个词如果同时满足• 在当前文档中出现很多次• 在整个语料库中很少出现那么这个词就很可能是该文档的关键词。textrank()基于 TextRank 的关键词提取。jieba.analyse.textrank(sentence, topK20, withWeightFalse)示例jieba.analyse.textrank(text, topK5)输出示例[人工智能, 文本, 分类, 信息检索, 处理]说明TextRank 不是依赖词频或语料库统计而是基于图排序算法根据词语共现关系构建图并计算节点重要性更适合新闻文本以及较长文本。五、词性标注Jieba 提供词性标注功能。导入模块import jieba.posseg as psegposseg.cut()进行分词并返回词性。pseg.cut(sentence)示例words pseg.cut(我爱自然语言处理) for w in words: print(w.word, w.flag)输出示例我 r爱 v自然语言 n处理 v六、并行分词Jieba 还提供并行分词支持将分词任务分配到多个进程中执行以提高处理大量文本时的效率。enable_parallel()启用并行分词。jieba.enable_parallel(processnumNone)参数说明• processnum进程数。若省略则通常使用默认值。示例jieba.enable_parallel(4) words jieba.lcut(人工智能正在改变世界机器学习和深度学习正在快速发展。)print(words)jieba.disable_parallel()关闭并行分词。jieba.disable_parallel()说明并行分词依赖 Python 多进程机制在 Linux 或 macOS 环境中通常效果更明显在 Windows 环境下使用时可能受到一定限制。七、中文分词应用示例在实际的中文 NLP 项目中文本预处理通常包括以下步骤1、中文分词jieba2、停用词过滤3、标点过滤4、词形规范化5、词频统计或向量化这些步骤构成了中文文本分析的基础流程广泛应用于• 文本分类• 情感分析• 关键词提取• 信息检索• 搜索引擎通过 Jieba 提供的分词能力结合简单的文本预处理可以快速构建中文文本分析的基础处理管道。示例代码import jiebafrom collections import Counterimport re # 示例文本中文文本分析对象text 人工智能正在改变世界。人工智能的发展推动了机器学习和深度学习的发展。人工智能技术已经广泛应用于自动驾驶、语音识别和自然语言处理等领域。 # 使用 Jieba 进行中文分词# lcut() 返回列表形式的分词结果words jieba.lcut(text) # 停用词集合Stop Words# 这些词通常不具有重要语义在文本分析中可以过滤掉stopwords {的, 了, 和, 是, 在, 于, 等} # 词形规范化字典Normalization# 用于统一不同表达方式例如 AI → 人工智能normalize { AI: 人工智能, NLP: 自然语言处理} # 用于保存清洗后的词语clean_words [] # 对分词结果进行逐个处理for w in words: # 如果是停用词则跳过 if w in stopwords: continue # 使用正则表达式过滤非中文词 # \u4e00-\u9fff 表示常见中文字符范围 if not re.fullmatch(r[\u4e00-\u9fff], w): continue # 词形规范化 # 如果词在 normalize 字典中存在则替换为规范词 # 否则保持原词不变 w normalize.get(w, w) # 将处理后的词加入结果列表 clean_words.append(w) # 使用 Counter 统计词频freq Counter(clean_words) # most_common(n) 返回出现频率最高的 n 个词及其频次print(freq.most_common(10)) 小结Jieba 是 Python 中常用的中文分词工具提供了分词、搜索模式分词、位置标注、词典管理、关键词提取、词性标注与并行分词等功能。通过 cut()、lcut()、tokenize()、add_word()、suggest_freq() 等常用 API可以较方便地构建中文文本分析、信息检索与自然语言处理的基础处理流程。“点赞有美意赞赏是鼓励”