jieba的基本使用
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_dir
和 cache_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 权重最大的关键词,默认值为 20withWeight
:指定是否一并返回关键词权重值,默认值为 FalseallowPOS
:仅包括指定词性的词,默认值为空,即不进行筛选
>>> 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 权重最大的关键词,默认值为 20withWeight
:指定是否一并返回关键词权重值,默认值为 FalseallowPOS
:仅包括指定词性的词,默认值为 ('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的基本使用的更多相关文章
- 中文分词工具探析(二):Jieba
1. 前言 Jieba是由fxsjy大神开源的一款中文分词工具,一款属于工业界的分词工具--模型易用简单.代码清晰可读,推荐有志学习NLP或Python的读一下源码.与采用分词模型Bigram + H ...
- jieba.NET与Lucene.Net的集成
首先声明:我对Lucene.Net并不熟悉,但搜索确实是分词的一个重要应用,所以这里还是尝试将两者集成起来,也许对你有一参考. 看到了两个中文分词与Lucene.Net的集成项目:Lucene.Net ...
- jieba中文分词的.NET版本:jieba.NET
简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...
- jieba分词
一.安装 pip 安装 或者 先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py install 二.功能 1.分词 2.添加自定义 ...
- jieba中文分词(python)
问题小结 1.安装 需要用到python,根据python2.7选择适当的安装包.先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py ...
- [测]jieba分词
import jieba import os import jieba.analyse with open('src.txt', 'r') as file: data = file.read() se ...
- jieba
# coding: utf-8 # ###jieba特性介绍 # 支持三种分词模式: # 精确模式,试图将句子最精确地切开,适合文本分析: # 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非 ...
- widows下jieba分词的安装
在切词的时候使用到jieba分词器,安装如下: 切入到结巴包,执行 python setup.py install 安装后,可以直接在代码中引用: import jieba
- 【原】关于使用jieba分词+PyInstaller进行打包时出现的一些问题的解决方法
错误现象: 最近在做一个小项目,在Python中使用了jieba分词,感觉非常简洁方便.在Python端进行调试的时候没有任何问题,使用PyInstaller打包成exe文件后,就会报错: 错误原因分 ...
- .net 的一个分词系统(jieba中文分词的.NET版本:jieba.NET)
简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...
随机推荐
- sar 找出系统瓶颈的利器 目前Linux上最为全面的系统性能分析工具之一 直接 sar -dur 1 30 即可看内存 CPU和IO占用
12. sar 找出系统瓶颈的利器 sar是System Activity Reporter(系统活动情况报告)的缩写.sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行 ...
- 2014年国内最热门的.NET开源项目TOP25
编者按:在2014年初时,微软宣布成立.NET基金会,全面支持开源项目.如今将过一年的时间,目前国内的开源项目到底如何了?下面我们就来细数一下国内25款比较优秀的.NET开源项目. 作者:acdoma ...
- POJ3528 HDU3662 三维凸包模板
POJ3528 HDU3662 第一道题 给定若干点 求凸包的表面积,第二题 给定若干点就凸包的面数. 简单说一下三维凸包的求法,首先对于4个点假设不共面,确定了唯一四面体,对于一个新的点,若它不在四 ...
- AIZU AOJ 2309 Vector Compression 最小树形图(朱—刘算法)
题意简述:给定若干个相同维度的向量,寻找一种排序方法,使得所有向量的表示长度总和最低. 所谓表示长度为(Aj-r*Ai)^2,其中i<j 数据范围:向量总数和维度均小于100 思路:(1)首先 ...
- 【175】Easy CHM的使用
首先下载软件,EasyCHM3.84完美破解版.rar! 安装好之后,打开程序,点击“新建”,然后浏览到存放 htm 文件的目录. 鼠标右键,选择“添加目录项”!如下图所示. 在弹出的文本框中,首先选 ...
- bzoj 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场【bfs】
不是严格小于是小于等于啊!!!!!不是严格小于是小于等于啊!!!!!不是严格小于是小于等于啊!!!!! 是我看不懂人话还是翻译不说人话= = 把所有格子按值排个序,bfs扩展打标记即可 #includ ...
- 解决phpmyadmin数据文件导入有限制的问题(只能导入2M以下)
修改配置php.ini文件中三个参数: 1.upload_max_filesize 2.memory_limit 3.post_max_size 建议根据实际需要进行设置.
- 例题 3-5 谜题 uva227 Puzzle
A children’s puzzle that was popular years ago consisted of a × frame which contained small squares ...
- 2017 Pycharm激活码
BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...
- BFS HDOJ 1728 逃离迷宫
题目传送门 /* BFS:三维BFS,加上方向.用dp[x][y][d]记录当前需要的最少转向数 */ #include <cstdio> #include <algorithm&g ...