jieba分词的几种形式

2024-05-26 15:18
文章标签 分词 几种 形式 jieba

本文主要是介绍jieba分词的几种形式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、精确模式:试图将句子最精确地分开,适合文本分析

 
seg_list = jieba.cut(test_text, cut_all=False)seg_list = " ".join(seg_list)print("cut_all=False:", seg_list)

  

输出:

cut_all=False: 我 今天下午 打篮球

  

 

2、全模式:把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义

 
seg_list2 = jieba.cut(test_text, cut_all=True)seg_list2 = " ".join(seg_list2)print("cut_all=True:", seg_list2)

  

输出:

cut_all=True: 我 今天 今天下午 天下 下午 打篮球 篮球

  

我们可以发现,分词结果中有个 “天下”,显然这不是我们想要的词语,这属于噪声词。

 

3、搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

 
seg_list3 = jieba.cut_for_search(test_text)seg_list3 = " ".join(seg_list3)print("cut_for_search:", seg_list3)

  

输出:

cut_for_search: 我 今天 天下 下午 今天下午 篮球 打篮球

  

命令行进行分词
python -m jieba input.txt > output.txt

 

词性分析

import jieba.posseg as possegtext = "征战四海只为今日一胜,我不会再败了。"
# generator形式形如pair(‘word’, ‘pos’)的结果
seg = posseg.cut(text)  
print([se for se in seg]) # list形式的结果
seg = posseg.lcut(text)
print(seg)

  

[pair('征战', 'v'), pair('四海', 'ns'), pair('只', 'd'), pair('为', 'p'), pair('今日', 't'), pair('一', 'm'), pair('胜', 'v'), pair(',', 'x'), pair('我', 'r'), pair('不会', 'v'), pair('再败', 'v'), pair('了', 'ul'), pair('。', 'x')]
[pair('征战', 'v'), pair('四海', 'ns'), pair('只', 'd'), pair('为', 'p'), pair('今日', 't'), pair('一', 'm'), pair('胜', 'v'), pair(',', 'x'), pair('我', 'r'), pair('不会', 'v'), pair('再败', 'v'), pair('了', 'ul'), pair('。', 'x')]

  

关键词抽取

关键词抽取有两种算法,基于TF-IDF和基于TextRank:

import jieba.analyse as analyse
text = "征战四海只为今日一胜,我不会再败了。"
# TF-IDF
tf_result = analyse.extract_tags(text, topK=5) # topK指定数量,默认20
print(tf_result)
# TextRank
tr_result = analyse.textrank(text, topK=5) # topK指定数量,默认20
print(tr_result)

  

['一胜', '再败', '征战', '四海', '今日']
['一胜', '再败', '征战', '四海', '今日']

完整用法

分词

jieba分词有三种不同的分词模式:精确模式、全模式和搜索引擎模式

jieba.cut(sentence,cut_all=False,HMM=True) # 精确模式
jieba.cut(sentence,cut_all=True,HMM=True) # 全模式
jieba.cut_for_search (sentence, HMM=True) # 搜索引擎模式

对应的,函数前加l即是对应得到list结果的函数:

jieba.lcut(sentence,cut_all=False,HMM=True) # 精确模式
jieba.lcut(sentence,cut_all=True,HMM=True) # 全模式
jieba.lcut_for_search (sentence, HMM=True) # 搜索引擎模式
sentence = "征战四海只为今日一胜,我不会再败了。"
#---------------result----------------
'今天天气 真 好' # 精确模式
'今天 今天天气 天天 天气 真好' # 全模式
'今天 天天 天气 今天天气 真 好' # 搜索引擎模式

精确模式是最常用的分词方法,全模式会将句子中所有可能的词都列举出来,搜索引擎模式则适用于搜索引擎使用。具体的差别可在下一节工作流程的分析中详述。

在上述每个函数中,都有名为HMM的参数。这一项表示是否在分词过程中利用HMM进行新词发现。关于HMM,本文附录中将简述相关知识。

另外分词支持自定义字典,词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
具体使用方法为:

jieba.load_userdict(file_name)  # 载入自定义词典
jieba.add_word(word, freq=None, tag=None) # 在程序中动态修改词典
jieba.del_word(word) 
jieba.suggest_freq(segment, tune=True) # 调节单个词语的词频,使其能/不能被分词开

关键词抽取

关键词抽取的两个函数的完整参数为:

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=(), withFlag=False)
# topK 表示返回最大权重关键词的个数,None表示全部
# withWeight表示是否返回权重,是的话返回(word,weight)的list
# allowPOS仅包括指定词性的词,默认为空即不筛选。
jieba.analyse.textrank(self, sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'), withFlag=False)
# 与TF-IDF方法相似,但是注意allowPOS有默认值,即会默认过滤某些词性。

并行分词

可以通过

jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数,默认全部
jieba.disable_parallel() # 关闭并行分词模式

来打开或关闭并行分词功能。
个人感觉一般用不到,大文件分词需要手动实现多进程并行,句子分词也不至于用这个。

这篇关于jieba分词的几种形式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004837

相关文章

Python几种建表方法运行时间的比较

建立一个表[0,1,2,3.......10n],下面几种方法都能实现,但是运行时间却截然不同哦 import time#方法一def test1(n):list=[]for i in range(n*10):list=list+[i]return list#方法二def test2(n):list=[]for i in range(n*10):list.append(i)#方法三d

适用于 Android 的 几种短信恢复应用程序

Android 设备上的短信丢失可能由于多种原因而丢失,例如意外删除、恢复出厂设置、系统崩溃或病毒攻击。是否有应用程序可以恢复 Android 上已删除的短信?幸运的是,有几款短信恢复应用程序可以扫描您的 Android 手机并从内存或 SIM 卡中检索已删除的短信。 然而,并非所有短信恢复应用程序都是可靠或有效的。有些可能无法恢复消息,有些可能会损坏您的数据,有些甚至可能包含恶意软件或间谍软件

IOS 数组去重的几种方式

本来只知道NSSet和KeyValues的。今天又新学了几种方式 还有就是和同事学的一种方式 外层循环从0开始遍历,内层从最后一个元素开始遍历 for(int i=0;i<index;i++){  for(int j=index-1;j>i;j-- ){ } }

HTML文档插入JS代码的几种方法

在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内联,放置在< script>和标签对之间。 2.放置在由< script>标签的src属性指定的外部文件中。 3.放置在HTML事件处理程序中,该事件处理程序由onclick或onmouseover这样的HTML属性值指定。 4.放在一个URL里,这个URL使用特殊的“javascript:”协议。 在JS编程中,主张

Anaconds3安装jieba 用于pycharm

1、从官网下载jieba压缩包 https://pypi.org/project/jieba/ 2、将压缩包解压到anaconda的pkgs目录。 (譬如我的如下 3、打开anaconda prompt 参考:https://blog.csdn.net/xavier_muse/article/details/94440563?utm_medium=distribute.pc_relevant

在windows中打开服务的几种方式(

第一种:在桌面右击我的电脑-->管理,然后展开下面的服务和应用程序,双击服务。 第二种:命令方式,运win+R调出运行,在运行里输入“services.msc”后再回车。 第三种:直接可以双击C:\WINDOWS\system32目录下的services.msc同样可以调出计算机服务。 注意:计算机服务程序文件在那里不管是使用的是运行命令还是计算机管理中打开服务项,其实都是调用的C:\WIN

Python编程技巧:下划线的11种妙用,看看你知道几种?

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 用法一:Python控制台中的上次结果📝 用法二:命名变量的蛇形命名法(snake_case)📝 用法三:大数字的可读性📝 用法四:忽略不重要的值📝 用法五:用于吸收中间值📝 用法六:在for循环中忽略变量📝 用法七:半私有变量📝 用法八:名称重整(Name Mangling)📝 用法九:双下划线方法(D

.NET 实现实体对象深拷贝(克隆/复制)的几种方法

浅拷贝:指对象的字段被拷贝,而字段引用的对象不会被拷贝,拷贝对象和原对象仅仅是引用名称有所不同,但是它们共用一份实体。对任何一个对象的改变,都会影响到另外一个对象。大部分的引用类型,实现的都是浅拷贝,引用类型对象之间的赋值,就是复制一个对象引用地址的副本,而指向的对象实例仍然是同一个。 深拷贝:指对象的子段被拷贝,同时字段引用的对象也进行了拷贝。深拷贝创建的是整个源对象的结构,拷贝对象和原对象相

定时器有几种实现方式

1 前言   在开始正题之前,先闲聊几句。有人说,计算机科学这个学科,软件方向研究到头就是数学,硬件方向研究到头就是物理,最轻松的是中间这批使用者,可以不太懂物理,不太懂数学,依旧可以使用计算机作为自己谋生的工具。这个规律具有普适应,再看看“定时器”这个例子,往应用层研究,有 Quartz,Spring Schedule 等框架;往分布式研究,又有 SchedulerX,ElasticJob

python3加载字符串形式的python源代码

关于python动态加载模块,查到的大部分资料都是通过importlib加载本地python文件为新的模块。 现在的需求是,将写好的python代码存储到mysql数据库,然后通过web api读取出该python代码,但是不进行保存操作,而是想要直接加载该python代码为新的模块使用。 实现方式: def test():import typescode = """class Test(