jieba 是一款优秀的 Python 第三方中文分词库,可以使用 pip install jieba / pip3 install jieba 命令安装,本博客主要参考 官方文档 对 jieba 作简单的介绍

1、分词

jieba 支持三种 分词模式,它们各有优劣,可以根据自己的需要选择合适的模式:

  • 精确模式:试图将句子最精确地切开,适合文本分析
  • 全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义问题
  • 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合搜索引擎分词

(1)精确模式 和 全模式

jieba.cut(sentence,cut_all=False,HMM=True)
jieba.lcut(sentence,cut_all=False,HMM=True)

以上两种方法都可以用精确模式或全模式对句子进行分词

不同之处只是在于 cut 方法返回迭代器,而 lcut 方法返回列表

它们都接受三个参数:

  • sentence:字符串,表示需要进行分词的文本,可以是 Unicode、UTF-8 或者 GBK (不建议) 格式
  • cut_all:布尔值,默认为 False,表示使用精确模式,若为 True,则使用全模式
  • HMM:布尔值,默认为 True,表示使用隐马尔可夫模型,若为 False,则不使用隐马尔可夫模型
>>> import jieba
>>> # -------- 使用 cut 方法,cut_all 参数默认为 False,精确模式 --------
>>> result = jieba.cut('我来到北京清华大学')
>>> print(','.join(result))
# 我,来到,北京,清华大学
>>> # -------- 使用 cut 方法,cut_all 参数设置为 True,全模式 --------
>>> result = jieba.cut('我来到北京清华大学',cut_all=True)
>>> print(','.join(result))
# 我,来到,北京,清华,清华大学,华大,大学

(2)搜索引擎模式

jieba.cut_for_search(sentence,HMM=True)
jieba.lcut_for_search(sentence,HMM=True)

以上两种方法都可以用搜索引擎模式对句子进行分词

不同之处只是在于 cut_for_search 方法返回迭代器,而 lcut_for_search 方法返回列表

它们都接受两个参数:

  • sentence:字符串,表示需要进行分词的文本,可以是 Unicode、UTF-8 或者 GBK (不建议) 格式
  • HMM:布尔值,默认为 True,表示使用隐马尔可夫模型,若为 False,则不使用隐马尔可夫模型
>>> import jieba
>>> # -------- 使用 cut_for_search 方法,搜索引擎模式 --------
>>> result = jieba.cut_for_search('我来到北京清华大学')
>>> print(','.join(result))
# 我,来到,北京,清华,华大,大学,清华大学

(3)新建自定义分词器

jieba.Tokenizer(dictionary=DEFAULT_DICT)

以上方法用于新建自定义分词器,jieba.dt 为默认的分词器,所有全局分词相关函数都是该分词器的映射

2、添加自定义词典

(1)载入词典

jieba.load_userdict(userdict.txt)

以上方法可以载入自定义词典,以便包含 jieba 词库里没有的词,提高准确率

  • userdict.txt:自定义词典,格式要求如下:

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

另外,还需要更改分词器的 tmp_dircache_file 属性,可分别指定缓存文件所在的文件夹及其文件名

(2)调整词典

  • 使用 add_word(word, freq=None, tag=None)del_word(word) 可在程序中动态修改词典
  • 使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来

3、关键词提取

关键词提取功能主要使用 jieba.analyse,故需要在程序中导入

import jieba.analyse

(1)基于 TF-IDF 算法的关键词抽取

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

基于 TF-IDF 算法的关键词抽取,其接受四个参数:

  • sentence:待提取的文本
  • topK:返回 topK 个 TF/IDF 权重最大的关键词,默认值为 20
  • withWeight:指定是否一并返回关键词权重值,默认值为 False
  • allowPOS:仅包括指定词性的词,默认值为空,即不进行筛选
>>> import jieba.analyse
>>> s = "此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。"
>>> for word,weight in jieba.analyse.extract_tags(s, 5, withWeight=True):
        print('%s %s' % (word, weight))

# 欧亚 0.7300142700289363
# 吉林 0.659038184373617
# 置业 0.4887134522112766
# 万元 0.3392722481859574
# 增资 0.33582401985234045

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

jieba.analyse.set_idf_path(file_name) 用于将关键词提取所使用的逆向文件频率(IDF)文本语料库切换成自定义语料库的路径

jieba.analyse.set_stop_words(file_name) 用于将关键词提取所使用的停止词(Stop Words)文本语料库切换成自定义语料库的路径

(2)基于 TextRank 算法的关键词抽取

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))

基于 TextRank 算法的关键词抽取,与 extract_tags 基本一致,注意默认的过滤词性

  • sentence:待提取的文本
  • topK:返回 topK 个 TF/IDF 权重最大的关键词,默认值为 20
  • withWeight:指定是否一并返回关键词权重值,默认值为 False
  • allowPOS:仅包括指定词性的词,默认值为 ('ns', 'n', 'vn', 'v')
>>> import jieba.analyse
>>> s = "此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。"
>>> for word,weight in jieba.analyse.textrank(s, 5, withWeight=True):
        print('%s %s' % (word, weight))

# 吉林 1.0
# 欧亚 0.9966893354178172
# 置业 0.6434360313092776
# 实现 0.5898606692859626
# 收入 0.43677859947991454

4、词性标注

词性标注功能主要使用 jieba.posseg,故需要在程序中导入

import jieba.posseg

(1)词性标注

jieba.posseg.cut()

标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法

>>> import jieba.posseg
>>> s = '我爱北京天安门'
>>> for word, flag in jieba.posseg.cut(s):
        print('%s %s' % (word, flag))

# 我 r
# 爱 v
# 北京 ns
# 天安门 ns

(2)新建自定义分词器

jieba.posseg.POSTokenizer(tokenizer=None)

以上方法用于新建自定义分词器,jieba.posseg.dt 为默认的词性标注分词器

jieba的基本使用的更多相关文章

  1. 中文分词工具探析(二):Jieba

    1. 前言 Jieba是由fxsjy大神开源的一款中文分词工具,一款属于工业界的分词工具--模型易用简单.代码清晰可读,推荐有志学习NLP或Python的读一下源码.与采用分词模型Bigram + H ...

  2. jieba.NET与Lucene.Net的集成

    首先声明:我对Lucene.Net并不熟悉,但搜索确实是分词的一个重要应用,所以这里还是尝试将两者集成起来,也许对你有一参考. 看到了两个中文分词与Lucene.Net的集成项目:Lucene.Net ...

  3. jieba中文分词的.NET版本:jieba.NET

    简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...

  4. jieba分词

    一.安装 pip 安装 或者 先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py install 二.功能 1.分词 2.添加自定义 ...

  5. jieba中文分词(python)

    问题小结 1.安装 需要用到python,根据python2.7选择适当的安装包.先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py ...

  6. [测]jieba分词

    import jieba import os import jieba.analyse with open('src.txt', 'r') as file: data = file.read() se ...

  7. jieba

    # coding: utf-8 # ###jieba特性介绍 # 支持三种分词模式: # 精确模式,试图将句子最精确地切开,适合文本分析: # 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非 ...

  8. widows下jieba分词的安装

    在切词的时候使用到jieba分词器,安装如下: 切入到结巴包,执行 python setup.py install 安装后,可以直接在代码中引用: import jieba

  9. 【原】关于使用jieba分词+PyInstaller进行打包时出现的一些问题的解决方法

    错误现象: 最近在做一个小项目,在Python中使用了jieba分词,感觉非常简洁方便.在Python端进行调试的时候没有任何问题,使用PyInstaller打包成exe文件后,就会报错: 错误原因分 ...

  10. .net 的一个分词系统(jieba中文分词的.NET版本:jieba.NET)

    简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...

随机推荐

  1. Android抢先截获短信(附源码)

    之前在写通讯录应用时,将整体的代码写完后,自测时发现非常非常多的问题,其中一个非常重要严重的就是可以发出短信,但收不到任何的短信息,这搞的我好捉鸡啊!后来调试发现是由于没有收到短信的消息导致的,然后将 ...

  2. Spark 多项式逻辑回归__多分类

    package Spark_MLlib import org.apache.spark.ml.Pipeline import org.apache.spark.ml.classification.{B ...

  3. 栗染-Jsp编码常见问题

    如图在我们新建一个jsp的时候想给自己的页面加一个中文就会出现如图所示的问题 遇到这种情况一般是选第二个或者 将<%@ page language="java" import ...

  4. 洛谷 P1462 通往奥格瑞玛的道路(spfa+二分搜索)(4boy)

    原题:http://www.luogu.org/problem/show?pid=1462#sub 4boy: 大意:给出n个城市,有m条路,每经过一个城市都要交钱,每经过一条道路都要扣HP,有HP上 ...

  5. C - GCD LCM

    Description The GCD of two positive integers is the largest integer that divides both the integers w ...

  6. ViewPager(2)FragmentStatePagerAdapter示例

    FragmentStatePagerAdapter适用于数量比较大的viewPager,只会存在 前1个fragment 当前fragment 和下1个fragment,其他销毁,适合加载多数据.本例 ...

  7. 04—AOP 实现项目中的切面编程

  8. C#模拟百度登录并到指定网站评论回帖(五)

    前面的四篇已经说完了全部的模拟百度登录,接下来就是到指定的网站去发表评论,当然你也可能是获取其他信息,其实这些套路都是万变不离其宗的,弄懂之后觉得像这种请求-响应获取信息的功能实在很简单(想起当初走的 ...

  9. Spring框架学习-Spring和IOC概述

    一:什么是Spring框架? spring是一个分层的javase/EEfull-stack(一站式)轻量级的java开源框架.是为了解决企业开发的复杂性而创建的.框架的主要优势是分层架构,Sprin ...

  10. Modbus通讯协议简介

    Modbus协议简介 Modbus协议最初由Modicon公司开发出来,此协议支持传统的RS-232.RS-422.RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Mod ...