分词是一种数学上的应用,他可以直接根据词语之间的数学关系进行文字或者单词的抽象,比如,讲一句话“我来自地球上中国”进行单词分割,我们可能会得到如下的内容:“我”、“来自”、“地球上”、“中国”,这些就相当于是分词的概念,在我们搜索引擎开发的过程中,是必须要要使用到分词的概念的。


 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分词处理的更多相关文章

  1. widows下jieba分词的安装

    在切词的时候使用到jieba分词器,安装如下: 切入到结巴包,执行 python setup.py install 安装后,可以直接在代码中引用: import jieba

  2. 【原】关于使用jieba分词+PyInstaller进行打包时出现的一些问题的解决方法

    错误现象: 最近在做一个小项目,在Python中使用了jieba分词,感觉非常简洁方便.在Python端进行调试的时候没有任何问题,使用PyInstaller打包成exe文件后,就会报错: 错误原因分 ...

  3. Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...

  4. python结巴(jieba)分词

    python结巴(jieba)分词 一.特点 1.支持三种分词模式: (1)精确模式:试图将句子最精确的切开,适合文本分析. (2)全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解 ...

  5. pypinyin, jieba分词与Gensim

    一 . pypinyin from pypinyin import lazy_pinyin, TONE, TONE2, TONE3 word = '孙悟空' print(lazy_pinyin(wor ...

  6. 使用pynlpir增强jieba分词的准确度

    在使用jieba分词时,发现分词准确度不高.特别是一些专业词汇,比如堡垒机,只能分出堡垒,并不能分出堡垒机.这样导致的问题是很多时候检索并不准确. 经过对比测试,发现nlpir进行分词效果更好.但是n ...

  7. 自然语言处理之jieba分词

    在处理英文文本时,由于英文文本天生自带分词效果,可以直接通过词之间的空格来分词(但是有些人名.地名等需要考虑作为一个整体,比如New York).而对于中文还有其他类似形式的语言,我们需要根据来特殊处 ...

  8. jieba分词(3)

    jieba分词中Tokenize的使用,Tokenize主要是用来返回词语在原文的弃之位置,下面贴上代码: #-*- coding:utf-8 -*- from __future__ import u ...

  9. jieba分词(2)

    结巴分词系统中实现了两种关键词抽取法,一种是TF-IDF关键词抽取算法另一种是TextRank关键词抽取算法,它们都是无监督的算法. 以下是两种算法的使用: #-*- coding:utf-8 -*- ...

  10. jieba分词(1)

    近几天在做自然语言处理,看了一篇论文:面向知识库的中文自然语言问句的语义理解,里面提到了中文的分词,大家都知道对于英文的分词,NLTK有很好的支持,但是NLTK对于中文的分词并不是很好(其实也没有怎么 ...

随机推荐

  1. AIFramework框架Jittor特性(下)

    AIFramework框架Jittor特性(下)

  2. ng : 无法加载文件 C:\Users\szz\AppData\Roaming\npm\ng.ps1,因为在此系统上禁止运行脚本的解决方案

    当安装好Angular CLI后想要查看该版本时在终端键入: ng version 后出现下图的错误提示 解决方案: 在win10 系统中有一个搜索框 输入 Windos PowerShell (一定 ...

  3. Redis系列(五):消息队列

    消息队列已经成为现在互联网服务端的标配组件,现在比较常用的消息中间件有RabbitMQ.Kafka.RocketMQ.ActiveMQ.说出来你可能不信,Redis作为一个缓存中间件,居然也提供了消息 ...

  4. JDBCTemplate基本使用

    用了jdbc连接池之后,我们会发现连接对象的复用性更高了,程序整体运行的性能也更高了.但是我们在做JDBC操作的时候还是比较麻烦,要定义sql,执行sql,设置参数,处理结果. 特别是当我们要做查询操 ...

  5. 二、部署监控服务器-Zabbix Server

    二.部署监控服务器-Zabbix Server 1)源码安装Zabbix Server 多数源码包都是需要依赖包的,zabbix也- 样,源码编译前需要先安装相关依赖包. [root@zabbixse ...

  6. Django基础之模板层

    内容概要 模板层(模板语法) 模板语法传值​模板语法过滤器(内置方法)​模板语法标签(流程控制)​自定义过滤器和标签(了解) 模板的导入与继承(面向对象) 内容详细 1 模板层之模板语法传值 http ...

  7. 分布式系统ID的生成方法之UUID、数据库、算法、Redis、Leaf方案

    一般单机或者单数据库的项目可能规模比较小,适应的场景也比较有限,平台的访问量和业务量都较小,业务ID的生成方式比较原始但是够用,它并没有给这样的系统带来问题和瓶颈,所以这种情况下我们并没有对此给予太多 ...

  8. 【NLP学习其一】什么是命名实体识别NER?

    命名实体识别 概念 命名实体识别(Named Entity Recognition,简称NER) , 是指识别文本中具有特定意义的词(实体),主要包括人名.地名.机构名.专有名词等等,并把我们需要识别 ...

  9. Unity不规则按钮点击区域(UGUI)

    文章目录 一. 前言 二. 最终效果 三. 实现 1.创建UICamera 2. UIPolygon节点 3. 编辑碰撞区域 5. 运行测试 6. UIPolygon代码 一. 前言 游戏开发中,可能 ...

  10. oscp-缓冲区溢出(持续更新)

    环境准备 Windows7虚拟机(我选了IE8,其实也没什么关系) 微软官方下载地址 These virtual machines expire after 90 days. We recommend ...