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. sar 找出系统瓶颈的利器 目前Linux上最为全面的系统性能分析工具之一 直接 sar -dur 1 30 即可看内存 CPU和IO占用

    12. sar 找出系统瓶颈的利器 sar是System Activity Reporter(系统活动情况报告)的缩写.sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行 ...

  2. 2014年国内最热门的.NET开源项目TOP25

    编者按:在2014年初时,微软宣布成立.NET基金会,全面支持开源项目.如今将过一年的时间,目前国内的开源项目到底如何了?下面我们就来细数一下国内25款比较优秀的.NET开源项目. 作者:acdoma ...

  3. POJ3528 HDU3662 三维凸包模板

    POJ3528 HDU3662 第一道题 给定若干点 求凸包的表面积,第二题 给定若干点就凸包的面数. 简单说一下三维凸包的求法,首先对于4个点假设不共面,确定了唯一四面体,对于一个新的点,若它不在四 ...

  4. AIZU AOJ 2309 Vector Compression 最小树形图(朱—刘算法)

    题意简述:给定若干个相同维度的向量,寻找一种排序方法,使得所有向量的表示长度总和最低. 所谓表示长度为(Aj-r*Ai)^2,其中i<j  数据范围:向量总数和维度均小于100 思路:(1)首先 ...

  5. 【175】Easy CHM的使用

    首先下载软件,EasyCHM3.84完美破解版.rar! 安装好之后,打开程序,点击“新建”,然后浏览到存放 htm 文件的目录. 鼠标右键,选择“添加目录项”!如下图所示. 在弹出的文本框中,首先选 ...

  6. bzoj 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场【bfs】

    不是严格小于是小于等于啊!!!!!不是严格小于是小于等于啊!!!!!不是严格小于是小于等于啊!!!!! 是我看不懂人话还是翻译不说人话= = 把所有格子按值排个序,bfs扩展打标记即可 #includ ...

  7. 解决phpmyadmin数据文件导入有限制的问题(只能导入2M以下)

    修改配置php.ini文件中三个参数: 1.upload_max_filesize 2.memory_limit 3.post_max_size 建议根据实际需要进行设置.

  8. 例题 3-5 谜题 uva227 Puzzle

    A children’s puzzle that was popular years ago consisted of a × frame which contained small squares ...

  9. 2017 Pycharm激活码

    BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  10. BFS HDOJ 1728 逃离迷宫

    题目传送门 /* BFS:三维BFS,加上方向.用dp[x][y][d]记录当前需要的最少转向数 */ #include <cstdio> #include <algorithm&g ...