jieba分词处理
分词是一种数学上的应用,他可以直接根据词语之间的数学关系进行文字或者单词的抽象,比如,讲一句话“我来自地球上中国”进行单词分割,我们可能会得到如下的内容:“我”、“来自”、“地球上”、“中国”,这些就相当于是分词的概念,在我们搜索引擎开发的过程中,是必须要要使用到分词的概念的。
jieba简介
jieba是一个在中文自然语言处理过程中使用最多的工具包之一,目前能够实现包括分词、词性标注以及命名实体识别等多种功能,一般的,jieba为我们提供了以下三种分词模式:
· 精确模式:将句子进行最精确的切分,分词速度相对较低,但是分词准确。
· 全模式:基于此会列表,能够将所有的可以分词的词语都扫描出来,分词速度非常快,凡是不能解决歧义性。
· 搜索引擎模式:在精确模式的基础上,对长词进行在切分,适合在搜索引擎中进行监理索引进行的分词。
常用的方法有:
· `jieba.cut` 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
· `jieba.cut_for_search` 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
· 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
· `jieba.cut` 以及 `jieba.cut_for_search` 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用 `jieba.lcut` 以及 `jieba.lcut_for_search` 直接返回 list
· `jieba.Tokenizer(dictionary=DEFAULT_DICT)` 新建自定义分词器,可用于同时使用不同词典。`jieba.dt` 为默认分词器,所有全局分词相关函数都是该分词器的映射。
1 '''
2 @Description: jieba分词练习
3 @Version: 1.0
4 @Autor: Montoin Yan
5 @Date: 2020-02-09 20:46:28
6 @LastEditors : Montoin Yan
7 @LastEditTime : 2020-02-09 20:55:40
8 '''
9 # encoding=utf-8
10 import jieba
11
12 result_list = jieba.cut("我是中国青年团团员", cut_all=True)
13 print("全模式: " + ",".join(result_list)) # 全模式
14
15 result_list = jieba.cut("我是中国青年团团员")
16 print("精准模式: " + ", ".join(result_list)) # 精确模式
17
18 result_list = jieba.cut_for_search("我是一个学生,我热爱编程,并且我想成为一个好的IT工作者") # 搜索引擎模式
19 print("搜索引擎模式:" + ", ".join(result_list))
结果如下所示:

jieba安装
可以通过镜像网站进行安装:
win+r打开cmd,使用 pip install jieba -i https://pypi.douban.com/simple/ 进行安装,如果显示连接超时,则在编译器终端进行下载即可。
jieba实例
下面这个例子进行了jeiba分词完整的分词操作
1 '''
2 @Description: jieba分词处理
3 @Version: 1.0
4 @Autor: Montoin Yan
5 @Date: 2020-02-09 19:26:13
6 @LastEditors : Montoin Yan
7 @LastEditTime : 2020-02-09 20:21:44
8 '''
9
10 import os,jieba
11
12 PATH = "jieba_demo/文章.txt" #定义读取路径
13
14 def main():
15 results = {} #保存最终的读取结果,以字典形式进行存储
16 with open(file=PATH,mode="r",encoding="UTF-8") as file:
17 data = file.readline() #按照单行进行文件读取
18 # print(data)
19 while data: #如果读到数据
20 words = jieba.cut(data,cut_all=False) #对数据进行分词,不采用全模式,进行精确分词
21 for word in words:
22 if len(word) == 1:
23 continue
24 else:
25 results[word] = results.get(word,0) + 1 #将多有读取到的词放到字典中,如果没有,默认值为0
26 data = file.readline() #继续读取
27 items = list(results.items()) #取出全部的内容
28 items.sort(key=lambda x: x[1],reverse=True) #降序排列
29 # print(items)
30 for i in items:
31 print("%s:%s" % (i[0],i[1]))
32
33
34 if __name__ == "__main__":
35 main()
分词结果如下:

jieba分词处理的更多相关文章
- widows下jieba分词的安装
在切词的时候使用到jieba分词器,安装如下: 切入到结巴包,执行 python setup.py install 安装后,可以直接在代码中引用: import jieba
- 【原】关于使用jieba分词+PyInstaller进行打包时出现的一些问题的解决方法
错误现象: 最近在做一个小项目,在Python中使用了jieba分词,感觉非常简洁方便.在Python端进行调试的时候没有任何问题,使用PyInstaller打包成exe文件后,就会报错: 错误原因分 ...
- Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考
前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...
- python结巴(jieba)分词
python结巴(jieba)分词 一.特点 1.支持三种分词模式: (1)精确模式:试图将句子最精确的切开,适合文本分析. (2)全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解 ...
- pypinyin, jieba分词与Gensim
一 . pypinyin from pypinyin import lazy_pinyin, TONE, TONE2, TONE3 word = '孙悟空' print(lazy_pinyin(wor ...
- 使用pynlpir增强jieba分词的准确度
在使用jieba分词时,发现分词准确度不高.特别是一些专业词汇,比如堡垒机,只能分出堡垒,并不能分出堡垒机.这样导致的问题是很多时候检索并不准确. 经过对比测试,发现nlpir进行分词效果更好.但是n ...
- 自然语言处理之jieba分词
在处理英文文本时,由于英文文本天生自带分词效果,可以直接通过词之间的空格来分词(但是有些人名.地名等需要考虑作为一个整体,比如New York).而对于中文还有其他类似形式的语言,我们需要根据来特殊处 ...
- jieba分词(3)
jieba分词中Tokenize的使用,Tokenize主要是用来返回词语在原文的弃之位置,下面贴上代码: #-*- coding:utf-8 -*- from __future__ import u ...
- jieba分词(2)
结巴分词系统中实现了两种关键词抽取法,一种是TF-IDF关键词抽取算法另一种是TextRank关键词抽取算法,它们都是无监督的算法. 以下是两种算法的使用: #-*- coding:utf-8 -*- ...
- jieba分词(1)
近几天在做自然语言处理,看了一篇论文:面向知识库的中文自然语言问句的语义理解,里面提到了中文的分词,大家都知道对于英文的分词,NLTK有很好的支持,但是NLTK对于中文的分词并不是很好(其实也没有怎么 ...
随机推荐
- stream的groupby出来的map是有顺序的map
stream分组后的map是有序map List<RedisInstanceTypeDto> typeDtoList = ModuleHelper.mapAll(redisInstance ...
- GPU上稀疏矩阵的基本线性代数
GPU上稀疏矩阵的基本线性代数 cuSPARSE库为稀疏矩阵提供了GPU加速的基本线性代数子例程,这些子例程的执行速度明显快于仅CPU替代方法.提供了可用于构建GPU加速求解器的功能.cuSPARSE ...
- Harmony生命周期
Harmony生命周期 系统管理或用户操作等行为,均会引起Page实例在其生命周期的不同状态之间进行转换.Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放 ...
- MindSpore平台系统类
MindSpore平台系统类 Q:MindSpore只能在华为自己的NPU上跑么? A: MindSpore同时支持华为自己的Ascend NPU.GPU与CPU,是支持异构算力的. Q:MindSp ...
- CUDA运行时 Runtime(一)
CUDA运行时 Runtime(一) 一. 概述 运行时在cudart库中实现,该库通过静态方式链接到应用程序库cudart.lib和libcudart.a,或动态通过cuda ...
- Turing渲染着色器网格技术分析
Turing渲染着色器网格技术分析 图灵体系结构通过使用 网格着色器 引入了一种新的可编程几何着色管道.新的着色器将计算编程模型引入到图形管道中,因为协同使用线程在芯片上直接生成紧凑网格( meshl ...
- C++标准模板库(STL)——set常见用法详解
set的定义 set<typename> name; typename可以是任何基本类型,如int.double.char.结构体等,也可以是STL标准容器,如vector.set.que ...
- 深入理解java虚拟机笔记补充-JVM常见参数设置
JVM 常见参数设置 内存设置 参数 -Xms:初始堆大小,JVM 启动的时候,给定堆空间大小. -Xmx:最大堆大小,如果初始堆空间不足的时候,最大可以扩展到多少. -Xmn:设置年轻代大小.整个堆 ...
- P5960 【模板】差分约束算法
题目描述 给出一组包含 $m$ 个不等式,有 $n$ 个未知数的形如: 的不等式组,求任意一组满足这个不等式组的解. 输入格式 第一行为两个正整数 $n,m$,代表未知数的数量和不等式的数量. 接下来 ...
- 【Android编程】android平台的MITM瑞士军刀_cSploit源码解析及中间人攻击复现
/文章作者:Kali_MG1937 作者博客ID:ALDYS4 QQ:3496925334 未经允许,禁止转载/ 何为MITM欺骗,顾名思义,中间人攻击的含义即为在局域网中充当数据包交换中间人的角色 ...