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使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...
随机推荐
- android 使用AlarmManager定时启动service
private static AlarmManager am; private static PendingIntent pendingIntent; /** * 使用 AlarmManager 来 ...
- luogu 1966 火柴排队
题目大意: 两列数,可以交换每列中相邻的两个数,算作一次交换 求最小的交换次数使两列数相对应的数之差的平方之和最小 思路: 首先可以明确当两列数的排序位置相对应时,为最佳答案 然后我们按照一中排序后在 ...
- BZOJ_1862_[Zjoi2006]GameZ游戏排名系统&&BZOJ_1056_[HAOI2008]排名系统_Splay
BZOJ_1862_[Zjoi2006]GameZ游戏排名系统&&BZOJ_1056_[HAOI2008]排名系统_Splay Description 排名系统通常要应付三种请求:上传 ...
- SQLServer 存储过程 SET NOCOUNT { ON | OFF } 的使用
在JDBC中调用 sql server 的存储过程时“该语句没有返回结果集”异常: 解决方法:在存储过程首行加上 SET NOCOUNT ON 使返回的结果中不包含有关受 Transact-S ...
- 基于Linux系统的Shell编程-基础篇
1. Shell基础介绍 1.1 Shell编程的意义 为什么使用shell编程 节约时间 1.2 显示脚本执行过程 前面有+表示执行过的命令的 前面没有东西,表示输出到屏幕上的内容. [root@C ...
- lnmp环境的nginx的tp5配置
php7.1 server { listen 80; server_name www.tp5.com; access_log /home/wwwroot/access.log combined; er ...
- map Codeforces Round #Pi (Div. 2) C. Geometric Progression
题目传送门 /* 题意:问选出3个数成等比数列有多少种选法 map:c1记录是第二个数或第三个数的选法,c2表示所有数字出现的次数.别人的代码很短,思维巧妙 */ /***************** ...
- BFS POJ 2251 Dungeon Master
题目传送门 /* BFS:这题很有意思,像是地下城,图是立体的,可以从上张图到下一张图的对应位置,那么也就是三维搜索,多了z坐标轴 */ #include <cstdio> #includ ...
- windows 中常用的 cmd 命令汇总
查看系统基本信息: cmd -> systeminfo 或 run -> dxdiag 查询主板出厂日期: cmd -> wmic bios get releasedate 关闭本地 ...
- Spring Boot (30) 上传文件
文件上传 上传文件和下载文件是Java Web中常见的一种操作,文件上传主要是将文件通过IO流传输到服务器的某一个文件夹下. 导入依赖 在pom.xml中添加上spring-boot-starter- ...