ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【马上NLP】jieba结巴分词工具常用功能详细介绍 笔记

2021-10-26 11:03:27  阅读:281  来源: 互联网

标签:NLP jieba 清华大学 lcut paddle str print 分词


【马上NLP】jieba结巴分词工具常用功能详细介绍 笔记

视频地址

图片与代码均源自up主和官方文档
https://www.bilibili.com/video/BV1xy4y187iC
jieba官方文档

jieba安装

需要python3.7的版本

  1. 全自动安装:easy_install jieba 或者 pip install jieba / pip3 install jieba
  2. 如果需要使用paddle模式下的分词和词性标注功能,请先安装paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1。

功能

在这里插入图片描述

常用API接口:

  1. jieba.cut 以及 jieba.cut_for_search :返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),用这个还api还要加for循环。

  2. jieba.lcut 以及 jieba.lcut_for_search :直接返回 list,用这个api直接可以打印出结果,建议使用这个。

1和2对比:

import jieba
str = '我来到北京清华大学'
print(str)
print('jieba.cut(str):', jieba.cut(str))
print('list(jieba.cut(str)):', list(jieba.cut(str)))
print('jieba.lcut(str):', jieba.lcut(str))

输出:
我来到北京清华大学
jieba.cut(str): <generator object Tokenizer.cut at 0x00000198409560C8>
list(jieba.cut(str)): ['我', '来到', '北京', '清华大学']
jieba.lcut(str): ['我', '来到', '北京', '清华大学']

分词

四种分词模式对比:

  1. 精确模式:试图将句子最精确地切开,适合文本分析;
  2. 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  3. 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
  4. paddle模式:利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。

四种分词模式对比:

import jieba
jieba.enable_paddle() # 引入paddle包,开启paddle模式
str = '我来到北京清华大学'
print(str)
print('精确模式:', jieba.lcut(str))
print('全模式:', jieba.lcut(str, cut_all=True))
print('搜索引擎模式:', jieba.lcut_for_search(str))
print('paddle模式:', jieba.lcut(str, use_paddle=True))

输出:
我来到北京清华大学
精确模式: ['我', '来到', '北京', '清华大学']
全模式: ['我', '来到', '北京', '清华', '清华大学', '华大', '大学']
搜索引擎模式: ['我', '来到', '北京', '清华', '华大', '大学', '清华大学']
paddle模式: ['我', '来到', '北京清华大学']

是否关闭发现新词:

jieba.lcut()函数默认带有HMM用于发现新词。

import jieba
str = '他来到了网易杭研大厦'
print(str)
print('精确模式,默认开启HMM:', jieba.lcut(str))
print('精确模式:', jieba.lcut(str, HMM=False))

输出:
他来到了网易杭研大厦
精确模式,默认开启HMM: ['他', '来到', '了', '网易', '杭研', '大厦']
精确模式,关闭HMM: ['他', '来到', '了', '网易', '杭', '研', '大厦']

词性标注

import jieba
import jieba.posseg as pseg
jieba.enable_paddle() # 引入paddle包,开启paddle模式
str = '我来到北京清华大学'
print(str)
print('默认模式:', pseg.lcut(str))
print('paddle模式:', pseg.lcut(str, use_paddle=True))

输出:
我来到北京清华大学
默认模式: [pair('我', 'r'), pair('来到', 'v'), pair('北京', 'ns'), pair('清华大学', 'nt')]
paddle模式: [pair('我', 'r'), pair('来到', 'v'), pair('北京清华大学', 'ORG')]

关键词提取

方式

  1. 基于 TF-IDF 算法
  2. 基于 TextRank 算法
import jieba.analyse
str = '我来到北京清华大学'
print(str)
print('TF-IDF:', jieba.analyse.extract_tags(str))
print('TextRank:', jieba.analyse.textrank(str))

输出:
我来到北京清华大学
TF-IDF: ['清华大学', '来到', '北京']
TextRank: ['来到', '北京']

参数

  1. topK :返回几个 TF/IDF 权重最大的关键词,默认值为 20
  2. withWeight :是否一并返回关键词权重值,默认值为 False
  3. allowPOS :返回指定词性的词,默认值为空,即不筛选

topK

import jieba.analyse
str = '此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。'
print(str)
# topK
print('默认topK=20:', jieba.analyse.extract_tags(str))
print('topK=10:', jieba.analyse.extract_tags(str, topK=10))

输出:
此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。
默认topK=20: ['欧亚', '吉林', '置业', '万元', '增资', '4.3', '7000', '2013', '139.13', '实现', '综合体', '经营范围', '亿元', '在建', '全资', '注册资本', '百货', '零售', '子公司', '营业']
topK=10: ['欧亚', '吉林', '置业', '万元', '增资', '4.3', '7000', '2013', '139.13', '实现']

withWeight

import jieba.analyse
str = '我来到北京清华大学'
print(str)
# withWeight
print('默认withWeight=False:', jieba.analyse.extract_tags(str))
print('withWeight=True:', jieba.analyse.extract_tags(str, withWeight=True))

输出:
我来到北京清华大学
默认withWeight=False: ['清华大学', '来到', '北京']
withWeight=True: [('清华大学', 2.6935315738733334), ('来到', 1.79522896137), ('北京', 1.5558007695733334)]

allowPOS

import jieba.analyse
str = '我来到北京清华大学'
print(str)
# allowPOS
print('默认显示全部词性:', jieba.analyse.extract_tags(str))
print('只显示\'v\'词性:', jieba.analyse.extract_tags(str, allowPOS=('v')))

输出:
我来到北京清华大学
默认显示全部词性: ['清华大学', '来到', '北京']
只显示'v'词性: ['来到']

载入词典

意义:开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。

用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径。

构造字典:词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。

字典示例:

创新办 3 i
云计算 5
凱特琳 nz
台中

标签:NLP,jieba,清华大学,lcut,paddle,str,print,分词
来源: https://blog.csdn.net/sinat_39448069/article/details/120956246

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有