当前位置:

首页 > 编程开发 > python中jieba库怎么使用

python中jieba库怎么使用

python中jieba库(中文分词库)使用安装教程介绍jieba是优秀的中文分词第三方库。由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个单词,这种手段就叫分词。而jieba是Python计算生态中非常优秀的中文分词第三方库,需要通过安装来使用它。jieba库提供了三种分词模式,但实际上要达到分词效果只要掌握一个函数就足够了,非常的简单有效。安装第三方库需要使用pip工具,在命令行下运行安装命令(不是IDLE)。注意:需要将Python目录和其目录下的Scripts目录加到

本文目录

    python中jieba库(中文分词库)使用安装教程

    介绍

    jieba是优秀的中文分词第三方库。由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个单词,这种手段就叫分词。而jieba是Python计算生态中非常优秀的中文分词第三方库,需要通过安装来使用它。

    jieba库提供了三种分词模式,但实际上要达到分词效果只要掌握一个函数就足够了,非常的简单有效。

    安装第三方库需要使用pip工具,在命令行下运行安装命令(不是IDLE)。注意:需要将Python目录和其目录下的Scripts目录加到环境变量中。

    使用命令pip install jieba安装第三方库,安装之后会提示successfully installed,告知是否安装成功。

    分词原理:简单来说,jieba库是通过中文词库的方式来识别分词的。它首先利用一个中文词库,通过词库计算汉字之间构成词语的关联概率,所以通过计算汉字之间的概率,就可以形成分词的结果。当然,除了jieba自带的中文词库,用户也可以向其中增加自定义的词组,从而使jieba的分词更接近某些具体领域的使用。

    jieba是python的一个中文分词库,下面介绍它的使用方法。

    安装

    方式1:
    pip install jieba
     
    方式2:
    先下载 http://pypi.python.org/pypi/jieba/
    然后解压,运行 python setup.py install

    功能

    分词

    jieba常用的三种模式:

    • 精确模式,试图将句子最精确地切开,适合文本分析;

    • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

    • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

    可使用 jieba.cut 和 jieba.cut_for_search 方法进行分词,两者所返回的结构都是一个可迭代的 generator,可使用 for 循环来获得分词后得到的每一个词语(unicode),或者直接使用 jieba.lcut 以及 jieba.lcut_for_search 返回 list。

    jieba.Tokenizer(dictionary=DEFAULT_DICT) :使用该方法可以自定义分词器,可以同时使用不同的词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。

    jieba.cut 和 jieba.lcut 可接受的参数如下:

    • 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)

    • cut_all:是否使用全模式,默认值为 False

    • HMM:用来控制是否使用 HMM 模型,默认值为 True

    jieba.cut_for_search 和 jieba.lcut_for_search 接受 2 个参数:

    • 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)

    • HMM:用来控制是否使用 HMM 模型,默认值为 True

    需要注意的是,尽量不要使用 GBK 字符串,可能无法预料地错误解码成 UTF-8。

    三种分词模式的比较:

    # 全匹配
    seg_list = jieba.cut("今天哪里都没去,在家里睡了一天", cut_all=True)
    print(list(seg_list))  # ['今天', '哪里', '都', '没去', '', '', '在家', '家里', '睡', '了', '一天']
     
    # 精确匹配 默认模式
    seg_list = jieba.cut("今天哪里都没去,在家里睡了一天", cut_all=False)
    print(list(seg_list))  # ['今天', '哪里', '都', '没', '去', ',', '在', '家里', '睡', '了', '一天']
     
    # 精确匹配
    seg_list = jieba.cut_for_search("今天哪里都没去,在家里睡了一天")
    print(list(seg_list))  # ['今天', '哪里', '都', '没', '去', ',', '在', '家里', '睡', '了', '一天']

    自定义词典

    开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。
    用法: jieba.load_userdict(dict_path)

    dict_path:为自定义词典文件的路径

    词典格式如下:

    一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。

    下面使用一个例子说明一下:

    自定义字典 user_dict.txt:

    大学课程
    深度学习

    下面比较下精确匹配、全匹配和使用自定义词典的区别:

    import jieba
     
     
    test_sent = """
    数学是一门基础性的大学课程,深度学习是基于数学的,尤其是线性代数课程
    """
     
    words = jieba.cut(test_sent)
    print(list(words))
    # ['\n', '数学', '是', '一门', '基础性', '的', '大学', '课程', ',', '深度',
    # '学习', '是', '基于', '数学', '的', ',', '尤其', '是', '线性代数', '课程', '\n']
     
    words = jieba.cut(test_sent, cut_all=True)
    print(list(words))
    # ['\n', '数学', '是', '一门', '基础', '基础性', '的', '大学', '课程', '', '', '深度',
    # '学习', '是', '基于', '数学', '的', '', '', '尤其', '是', '线性', '线性代数', '代数', '课程', '\n']
     
    jieba.load_userdict("userdict.txt")
    words = jieba.cut(test_sent)
    print(list(words))
    # ['\n', '数学', '是', '一门', '基础性', '的', '大学课程', ',', '深度学习', '是',
    # '基于', '数学', '的', ',', '尤其', '是', '线性代数', '课程', '\n']
     
    jieba.add_word("尤其是")
    jieba.add_word("线性代数课程")
     
    words = jieba.cut(test_sent)
    print(list(words))
    # ['\n', '数学', '是', '一门', '基础性', '的', '大学课程', ',', '深度学习', '是',
    # '基于', '数学', '的', ',', '尤其是', '线性代数课程', '\n']

    从上面的例子中可以看出,使用自定义词典与使用默认词典的区别。

    jieba.add_word():向自定义字典中添加词语

    关键词提取

    可以基于 TF-IDF 算法进行关键词提取,也可以基于TextRank 算法。 TF-IDF 算法与 elasticsearch 中使用的算法是一样的。

    使用 jieba.analyse.extract_tags() 函数进行关键词提取,其参数如下:

    jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

    • sentence 为待提取的文本

    • topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20

    • withWeight 为是否一并返回关键词权重值,默认值为 False

    • allowPOS 仅包括指定词性的词,默认值为空,即不筛选

    • jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件

    也可以使用 jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件。

    基于 TF-IDF 算法和TextRank算法的关键词抽取:

    import jieba.analyse
     
    file = "sanguo.txt"
    topK = 12
    content = open(file, 'rb').read()
     
    # 使用tf-idf算法提取关键词
    tags = jieba.analyse.extract_tags(content, topK=topK)
    print(tags)
    # ['玄德', '程远志', '张角', '云长', '张飞', '黄巾', '封谞', '刘焉', '邓茂', '邹靖', '姓名', '招军']
    # 使用textrank算法提取关键词
    tags2 = jieba.analyse.textrank(content, topK=topK)
     
    # withWeight=True:将权重值一起返回
    tags = jieba.analyse.extract_tags(content, topK=topK, withWeight=True)
    print(tags)
    # [('玄德', 0.1038549799467099), ('程远志', 0.07787459004363208), ('张角', 0.0722532891360849),
    # ('云长', 0.07048801593691037), ('张飞', 0.060972692853113214), ('黄巾', 0.058227157790330185),
    # ('封谞', 0.0563904127495283), ('刘焉', 0.05470798376886792), ('邓茂', 0.04917692565566038),
    # ('邹靖', 0.04427258239705188), ('姓名', 0.04219704283997642), ('招军', 0.04182041076757075)]

    上面的代码是读取文件,提取出现频率最高的前12个词。

    词性标注

    词性标注主要是标记文本分词后每个词的词性,使用例子如下:

    import jieba
    import jieba.posseg as pseg
     
    # 默认模式
    seg_list = pseg.cut("今天哪里都没去,在家里睡了一天")
    for word, flag in seg_list:
        print(word + " " + flag)
       
    """
    使用 jieba 默认模式的输出结果是:
    我 r
    Prefix dict has been built successfully.
    今天 t
    吃 v
    早饭 n
    了 ul
    """
     
    # paddle 模式
    words = pseg.cut("我今天吃早饭了",use_paddle=True)
    """
    使用 paddle 模式的输出结果是:
    我 r
    今天 TIME
    吃 v
    早饭 n
    了 xc
    """

    paddle模式的词性对照表如下:

    python中jieba库怎么使用

    补充:Python中文分词库——jieba的用法

    .使用说明

    jieba分词有三种模式:精确模式、全模式和搜索引擎模式。

    简单说,精确模式就是把一段文本精确的切分成若干个中文单词,若干个中文单词之间经过组合就精确的还原为之前的文本,其中不存在冗余单词。精确模式是最常用的分词模式。

    进一步jieba又提供了全模式,全模式是把一段中文文本中所有可能的词语都扫描出来,可能有一段文本它可以切分成不同的模式或者有不同的角度来切分变成不同的词语,那么jieba在全模式下把这样的不同的组合都挖掘出来,所以如果用全模式来进行分词,分词的信息组合起来并不是精确的原有文本,会有很多的冗余。

    而搜索引擎模式更加智能,它是在精确模式的基础上对长词进行再次切分,将长的词语变成更短的词语,进而适合搜索引擎对短词语的索引和搜索,在一些特定场合用的比较多。

    jieba库提供的常用函数:

    • jieba.lcut(s)

    精确模式,能够对一个字符串精确地返回分词结果,而分词的结果使用列表形式来组织。例如:

    >>> import jieba
    >>> jieba.lcut("中国是一个伟大的国家")
    Building prefix dict from the default dictionary ...
    Dumping model to file cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache
    Loading model cost 2.489 seconds.
    Prefix dict has been built successfully.
    ['中国', '是', '一个', '伟大', '的', '国家']
    • jieba.lcut(s,cut_all=True)

    全模式,能够返回一个列表类型的分词结果,但结果存在冗余。例如:

    >>> import jieba 
    >>> jieba.lcut("中国是一个伟大的国家",cut_all=True)
    ['中国', '国是', '一个', '伟大', '的', '国家']

    jieba.lcut_for_search(s)

    搜索引擎模式,能够返回一个列表类型的分词结果,也存在冗余。例如:

    >>> import jieba
    >>> jieba.lcut_for_search("中华人民共和国是伟大的")
    ['中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '是', '伟大', '的']
    • jieba.add_word(w)

    向分词词库添加新词w

    最重要的就是jieba.lcut(s)函数,完成精确的中文分词。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。