NLP基础—jieba分词

jieba分词

支持四种分词模式

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

jieba分词安装

1. 全自动安装
pip install jieba 
2. 半自动安装

先下载 http://pypi.python.org/pypi/jieba/ 解压后运行 python setup.py install

3. 手动安装

将 jieba 目录放置于当前目录或者 site-packages 目录

通过 import jieba 来引用

如果需要使用paddle模式下的分词和词性标注功能,请先安装paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1

主要功能

分词
1、基本步骤

初始化


初始化时,先加载词典文件dict.txt,遍历每一行,生成词语-词数的键值对和总词数,并将生成结果保存到cache中,下次直接从cache中读取即可。

初始化可以简单理解为,读取词典文件,构建词语-词数键值对,方便后面步骤中查词典,也就是字符串匹配。

切分短语


  1. 首先进行将语句转换为UTF-8或者GBK。
  2. 然后根据用户指定的模式,是否全模式,是否采用HMM隐马尔科夫,来设置cut方式。
  3. 然后根据正则,将输入文本分为一个个语句。
  4. 最后遍历语句,对每个语句单独进行分词。

构建DAG


看构建DAG的过程。

先遍历一个个切分好的短语,对这些短语来进行分词。

首先要构建短语的有向无环图DAG。查词典进行字符串匹配的过程中,可能会出现好几种可能的切分方式,将这些组合构成有向无环图,如下图所示:

img

得到语句的有向无环图DAG,DAG中记录了某个词的开始位置和它可能的结束位置。开始位置作为key,结束位置是一个list。

上面语句的完整DAG为: { 0: [1, 2], 1: [2], 2: [3, 4, 5], 3: [4], 4: [5] }

比如位置0的DAG表达为 {0: [1, 2]}, 也就是说0位置为词的开始位置时,1, 2位置都有可能是词的结束位置。

动态规划构建Route,计算从语句末尾到语句起始,DAG中每个节点到语句结束位置的最大路径概率,以及概率最大时节点对应词语的结束位置。

def calc(self, sentence, DAG, route):N = len(sentence)route[N] = (0, 0)logtotal = log(self.total)for idx in xrange(N - 1, -1, -1):
# route[idx] = (该汉字到最后一个汉字的最大路径概率, # 最大路径概率时该汉字对应的词语结束位置).
# 遍历DAG中该汉字节点的结束位置,也就是DAG[idx],# 计算idx到x之间构成的词语的概率,然后乘以x到语句结束位置的最大概率,# 即可得到idx到语句结束的路径最大概率.route[idx] = max((log(self.FREQ.get(sentence[idx:x + 1]) or 1) - log(total) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WARNING: No swap limit support——查看docker状态时提示警告

环境:Ubuntu 20.04 1、警告详情 执行命令 service docker status如下图 2、解决办法 2.1 修改文件 执行命令 vim /etc/default/grub在GRUB_CMDLINE_LINUX中追加cgroup_enablememory swapaccount1,如下: # If you change this file…

elmentui树形表格使用Sortable拖拽展开行时拖拽bug

1、使用elemntui的el-table使用Sortable进行拖拽,如下 const el this.$el.querySelector(.el-table__body-wrapper tbody) Sortable.create(el, {onEnd: (event) > {const { oldIndex, newIndex } event//拿到更新前后的下标即可完成数据的更新} })2、但是我这…

分析ARP解析过程

1、实验环境 主机A和主机B连接到交换机,并与一台路由器互连,如图7.17所示,路由器充当网关。 图7.17 实验案例一示意图 2、需求描述 查看 ARP 相关信息,熟悉在PC 和 Cisco 设备上的常用命令,设置主机A和主机B为同一个网段网关设置为路由接…

2024-14.python前端+Django

第四篇 web前端 第1章 、Web的基本概念 前端基础总共分为三部分:html、css和js。 1.3、HTTP协议 1.3.1 、http协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web &am…

故障转移-redis

4.4.故障转移 集群初识状态是这样的: 其中7001、7002、7003都是master,我们计划让7002宕机。 4.4.1.自动故障转移 当集群中有一个master宕机会发生什么呢? 直接停止一个redis实例,例如7002: redis-cli -p 7002 sh…

LVM和磁盘配额

目录 1、LVM (1)LVM机制 (2)LVM的管理命令 (3)创建并使用LVM (4)扩容 2、磁盘配额 (1)什么叫磁盘配额 (2)磁盘配额的条件和特点…

OpenHarmony、HarmonyOS和Harmony NEXT 《我们不一样》

1. OpenHarmony 定义与地位:OpenHarmony是鸿蒙系统的底层内核系统,集成了Linux内核和LiteOS,为各种设备提供统一的操作系统解决方案。 开源与商用:OpenHarmony是一个开源项目,允许开发者自由访问和使用其源代码&#…

零代码编程:用kimichat将mp4视频批量转为mp3音频

一个文件夹里面有多个子文件夹,里面的视频需要转成为mp3音频格式。可以在kimichat中键入提示词: 你是一个Python编程专家,要完成一个Python脚本的编写任务,具体步骤如下: 打开文件夹:D:\CHATGPT For TikT…

HarmonyOS4-数据持久化

轻量级preferences: 关系型数据库: 增删改: 查询语句: 具体详情代码可参与源码: 黑马大佬写的。 harmonyos-lessons: 黑马程序员B站HarmonyOS课程的基础篇代码部分

项目中,如何写 readme.md 文件 | 写项目总结

tips:注意写 1. readme文件:①项目文档(项目需求和设计文档、项目系统架构和技术文档、接口文档)、②项目结构、③启动项目。具体结构见下文。 2. 项目总结:技术栈、描述、主要工作!!需求及功…

【React】Ant Design自定义主题风格及主题切换

Ant Design 的自定义主题,对于刚入手的时候感觉真是一脸蒙圈,那今天给它梳理倒腾下; 1、自定义主题要点 整体样式变化,主要两个部分: 1.1、Design Token https://ant.design/docs/react/customize-theme-cn#theme 官…

Pytorch搭建GoogleNet神经网络

一、创建卷积模板文件 因为每次使用卷积层都需要调用Con2d和relu激活函数,每次都调用非常麻烦,就将他们打包在一起写成一个类。 in_channels:输入矩阵深度作为参数输入 out_channels: 输出矩阵深度作为参数输入 经过卷积层和relu激活函数…