Python中jieba模块使用方法详解

 更新时间:2024年12月07日 09:28:30   作者:XMYX-0  
这篇文章主要介绍了Python中jieba模块使用的相关资料,jieba是中文自然语言处理中常用的分词工具,支持精确模式、全模式和搜索引擎模式,它还提供了自定义词典和TF-IDF、TextRank等关键词提取方法,需要的朋友可以参考下

引言

在中文自然语言处理(NLP)中,分词是基本而关键的步骤。由于中文没有空格,分词可以帮助我们更好地理解和处理文本。jieba 是一个流行的中文分词工具,功能强大且易于使用。

安装 jieba

首先,确保安装了 jieba 模块,可以使用以下命令:

pip install jieba

分词模式

jieba 模块支持三种分词模式:

  • 精确模式:将句子精确切分,适合文本分析。
  • 全模式:扫描出句子中所有可能的词语,速度快,但无法消歧。
  • 搜索引擎模式:在精确模式基础上,对长词再切分,以提高召回率。

使用分词

import jieba

text = "我来到北京清华大学"

# 全模式
full_mode = jieba.cut(text, cut_all=True)
print("全模式: " + "/ ".join(full_mode))

# 精确模式
exact_mode = jieba.cut(text, cut_all=False)
print("精确模式: " + "/ ".join(exact_mode))

# 默认模式(精确模式)
default_mode = jieba.cut("他来到了网易杭研大厦")
print("默认模式: " + "/ ".join(default_mode))

搜索引擎模式

使用 cut_for_search 方法,适合构建搜索引擎的倒排索引。

search_mode = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")
print(", ".join(search_mode))

自定义词典

添加自定义词典

jieba 允许用户添加自定义词典,以提高分词准确性。

jieba.load_userdict("userdict.txt")

用户字典的格式为:

词语 词频(可省略) 词性(可省略)

调整词典

  • 添加词:使用 add_word(word, freq=None, tag=None) 方法添加词。
  • 删除词:使用 del_word(word) 方法删除词。
  • 调节词频:使用 suggest_freq(segment, tune=True) 方法调整词频,使特定词能(或不能)被分出来。

关键词提取

TF-IDF 关键词抽取

可以使用 extract_tags 方法基于 TF-IDF 算法提取关键词。

import jieba.analyse

text = "我爱自然语言处理,中文分词很有趣,中文处理需要很多工具。"
keywords = jieba.analyse.extract_tags(text, topK=5)
print("关键词:", keywords)

TextRank 关键词抽取

textrank 方法提供基于 TextRank 算法的关键词抽取。

keywords = jieba.analyse.textrank(text, topK=5)
print("关键词:", keywords)

词性标注

jieba 还支持词性标注功能,使用 posseg 模块可以标注每个词的词性。

import jieba.posseg as pseg

words = pseg.cut("我爱北京天安门")
for word, flag in words:
    print(f'{word}, {flag}')

获取词语位置

使用 tokenize 方法可以获取词语在原文中的起止位置。

result = jieba.tokenize("永和服装饰品有限公司")
for tk in result:
    print(f"word {tk[0]}\t\t start: {tk[1]}\t\t end: {tk[2]}")

关键词提取

TF-IDF 关键词抽取

TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于信息检索和文本挖掘的常用加权技术。它通过计算一个词在文档中出现的频率(TF)与该词在所有文档中出现的稀有度(IDF)相结合,来评估一个词的重要性。

  • Term Frequency (TF):某个词在文档中出现的次数与该文档总词数的比值。
  • Inverse Document Frequency (IDF):表示词的重要性,计算公式为:[ IDF(w) = \log(\frac{N}{n(w)}) ]
    • ( N ):文档总数
    • ( n(w) ):包含词 ( w ) 的文档数

示例代码:

import jieba.analyse

text = "我爱自然语言处理,中文分词很有趣,中文处理需要很多工具。"
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True)
for word, weight in keywords:
    print(f"关键词: {word}, 权重: {weight}")

TextRank 关键词抽取

TextRank 是一种无监督的图模型算法,常用于关键词提取和摘要生成。它基于词与词之间的关联,通过构建词图并计算节点之间的相似度来识别重要词汇。

示例代码:

text = "此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。"
keywords = jieba.analyse.textrank(text, topK=5, withWeight=True)
for word, weight in keywords:
    print(f"关键词: {word}, 权重: {weight}")

性能对比

在实际应用中,jieba 的不同分词模式对性能和准确率有显著影响。以下是对不同模式的对比分析:

模式速度准确率应用场景
精确模式中等文本分析、内容提取
全模式关键词提取、快速初步分析
搜索引擎模式较慢中等搜索引擎的倒排索引

示例性能对比代码:

import time

text = "我来到北京清华大学"

# 精确模式
start = time.time()
jieba.cut(text, cut_all=False)
print("精确模式耗时: ", time.time() - start)

# 全模式
start = time.time()
jieba.cut(text, cut_all=True)
print("全模式耗时: ", time.time() - start)

# 搜索引擎模式
start = time.time()
jieba.cut_for_search(text)
print("搜索引擎模式耗时: ", time.time() - start)

常见问题解答

分词不准确

问题:某些词被错误分割,尤其是专业术语或人名。

解决方案:使用 add_word() 方法添加特定词汇或加载自定义词典,以提高分词的准确性。

编码问题

问题:在使用 GBK 编码的文本时,出现乱码或分词错误。

解决方案:尽量使用 UTF-8 编码的字符串,避免直接输入 GBK 字符串。

如何处理歧义词

问题:某些词具有多种含义,分词结果不理想。

解决方案:使用 suggest_freq() 方法调整词频,指导分词器优先识别特定词义。

总结

jieba 是一个灵活且功能丰富的中文分词工具。通过不同的分词模式和自定义词典,用户可以针对特定需求进行优化。无论是文本分析还是关键词提取,jieba 都能为你提供强大的支持。

参考文献

到此这篇关于Python中jieba模块使用方法详解的文章就介绍到这了,更多相关Python jieba模块详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 从入门到精通详解Python中User-Agent的使用终极指南

    从入门到精通详解Python中User-Agent的使用终极指南

    User-Agent是HTTP协议头部的一个字段,用于标识客户端的身份信息,在Python网络编程中,User-Agent(用户代理)扮演着至关重要的角色,下面小编就和大家详细介绍一下Python中User-Agent的使用吧
    2026-05-05
  • python实现拓扑排序的方法步骤

    python实现拓扑排序的方法步骤

    拓扑排序是对有向无环图进行排序的一种算法,本文主要介绍了python实现拓扑排序的方法步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Python获取时间戳的多种方法总结

    Python获取时间戳的多种方法总结

    时间戳是一个表示日期和时间的数值,通常以秒为单位,在Python中,获取时间戳是常见的任务,用于记录事件、计时操作、以及在各种应用中跟踪时间,本文将介绍多种获取时间戳的方法,包括标准库和第三方库的方式,并提供示例代码以帮助你更好地理解
    2023-11-11
  • Python中六大超时处理方法介绍

    Python中六大超时处理方法介绍

    在 Python 中,超时处理是一项非常常见的需求,尤其是在处理阻塞任务或并发任务时,本文整理了大家常用的六大超时处理方法,感兴趣的小伙伴可以参考下
    2025-01-01
  • Python 处理表格进行成绩排序的操作代码

    Python 处理表格进行成绩排序的操作代码

    这篇文章主要介绍了Python 处理表格进行成绩排序,也就是说将学生从按照学号排序变为按照成绩从高到低进行排序,具体实现代码跟随小编一起看看吧
    2021-07-07
  • python根据经纬度计算距离示例

    python根据经纬度计算距离示例

    这篇文章主要介绍了python根据经纬度计算距离示例, 计算两点之间距离,需要的朋友可以参考下
    2014-02-02
  • 我用Python做个AI出牌器斗地主把把赢

    我用Python做个AI出牌器斗地主把把赢

    这篇文章主要介绍了我是如何用Python做的AI出牌器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Python实现RabbitMQ6种消息模型的示例代码

    Python实现RabbitMQ6种消息模型的示例代码

    这篇文章主要介绍了Python实现RabbitMQ6种消息模型的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python进程Multiprocessing模块原理解析

    Python进程Multiprocessing模块原理解析

    这篇文章主要介绍了Python进程Multiprocessing模块原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python两个内置函数 locals 和globals(学习笔记)

    Python两个内置函数 locals 和globals(学习笔记)

    这篇文章主要介绍了Python两个内置函数 locals 和globals(学习笔记),需要的朋友可以参考下
    2016-08-08

最新评论