【NLP】文本处理的基本方法【jieba分词、命名实体、词性标注】
文章目录
- 1、本章目标
- 2、什么是分词
- 3、jieba的使用
- 3.1、精确模式分词
- 3.2、全模式分词
- 3.3、搜索引擎模式分词
- 3.4、中文繁体分词
- 3.5、使用用户自定义词典
- 4、什么是命名实体识别
- 5、什么是词性标注
- 6、小结
- 7、jieba词性对照表⭐
🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹
1、本章目标
- 了解什么是分词, 词性标注, 命名实体识别及其它们的作用.
- 掌握分词, 词性标注, 命名实体识别流行工具的使用方法.
2、什么是分词
分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。
我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,
而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,
分词过程就是找到这样分界符的过程.
分词的作用:
词作为语言语义理解的最小单元, 是人类理解文本语言的基础
因此也是AI解决NLP领域高阶任务,如自动问答、机器翻译、文本生成的重要基础环节。
流行中文分词工具jieba:
愿景:"结巴"中文分词,做最好的 Python 中文分词组件
jieba的特性:
- 支持多种分词模式
- 精确模式
- 全模式
- 搜索引擎模式
- 支持中文繁体分词
- 支持用户自定义词典
3、jieba的使用
3.1、精确模式分词
试图将句子最精确地切开,适合文本分析:
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:09
import jiebacontent = "无线电法国别研究"
jieba.cut(content, cut_all=False) # cut_all默认为False# 将返回一个生成器对象: <generator object Tokenizer.cut at 0x7f065c19e318># 若需直接返回列表内容, 使用jieba.lcut即可
words = jieba.lcut(content, cut_all=False)
print(words) # 结果: ['无线电', '法国', '别', '研究']
输出:

3.2、全模式分词
把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能消除歧义
代码和上面的精确模式类似,只不过"cut_all=True":

输出:

3.3、搜索引擎模式分词
在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:14
import jiebacontent = "无线电法国别研究"
jieba.cut_for_search(content)# 将返回一个生成器对象: <generator object Tokenizer.cut at 0x7f065c19e318># 若需直接返回列表内容, 使用jieba.lcut_for_search即可
words = jieba.lcut_for_search(content)
# 对'无线电'等较长词汇都进行了再次分词.
print(words) # ['无线', '无线电', '法国', '别', '研究']
输出:

3.4、中文繁体分词
针对中国香港、中国台湾地区的繁体文本进行分词:
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:16
import jiebacontent = "煩惱即是菩提,我暫且不提"
words = jieba.lcut(content)
print(words) # ['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']
输出:

3.5、使用用户自定义词典
添加自定义词典后,jieba能够准确识别词典中出现的词汇,提升整体的识别准确率
词典格式:
- 每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒
- 词典样式如下, 具体词性含义请参照文末的
jieba词性对照表,将该词典存为userdict.txt,方便之后加载使用。
userdict.txt:

解释如下:

代码:
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:29
import jiebawords = jieba.lcut("八一双鹿更名为八一南昌篮球队!")
# 没有使用用户自定义词典前的结果:
print(words) # ['八', '一双', '鹿', '更名', '为', '八一', '南昌', '篮球队', '!']jieba.load_userdict("userdict.txt")
words = jieba.lcut("八一双鹿更名为八一南昌篮球队!")
# 使用了用户自定义词典后的结果:
print(words) # ['八一双鹿', '更名', '为', '八一', '南昌', '篮球队', '!']
运行结果:

4、什么是命名实体识别
命名实体:通常我们将人名、地名、机构名等专有名词统称命名实体.
如:周杰伦、黑山县、孔子学院、24辊方钢矫直机.
顾名思义:命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体
举个例子:
鲁迅, 浙江绍兴人, 五四新文化运动的重要参与者, 代表作朝花夕拾.
==>
鲁迅(人名) / 浙江绍兴(地名)人 / 五四新文化运动(专有名词) / 重要参与者 / 代表作 / 朝花夕拾(专有名词)
命名实体识别的作用:
同词汇一样,命名实体也是人类理解文本的基础单元,
因此也是AI解决NLP领域高阶任务的重要基础环节。
5、什么是词性标注
词性:语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果
常见的词性有14种,如:名词、动词、形容词等
顾名思义:词性标注(Part-Of-Speech tagging, 简称POS)就是标注出一段文本中每个词汇的词性
举个例子:
我爱自然语言处理
==>
我/rr, 爱/v, 自然语言/n, 处理/vn
解释:
- rr: 人称代词
- v: 动词
- n: 名词
- vn: 动名词
词性标注的作用: 词性标注以分词为基础,是对文本语言的另一个角度的理解,因此也常常成为AI解决NLP领域高阶任务的重要基础环节.
使用jieba进行中文词性标注:
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:38
import jieba.posseg as pseg # 专门用于分词和词性标注# 结果返回一个装有pair元组的列表, 每个pair元组中分别是词汇及其对应的词性, 具体词性含义请参照[附录: jieba词性对照表]()
words = pseg.lcut("我爱北京天安门")
print(words) # [pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns')]
输出:

6、小结
- 学习了什么是分词:
- 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符, 分词过程就是找到这样分界符的过程.
- 学习了分词的作用:
- 词作为语言语义理解的最小单元, 是人类理解文本语言的基础. 因此也是AI解决NLP领域高阶任务, 如自动问答, 机器翻译, 文本生成的重要基础环节.
- 学习了流行中文分词工具jieba:
- 支持多种分词模式:精确模式、全模式、搜索引擎模式
- 支持中文繁体分词
- 支持用户自定义词典
- 学习了jieba工具的安装和分词使用
- 学习了什么是命名实体识别:
- 命名实体:通常我们将人名、地名、机构名等专有名词统称命名实体。
- 顾名思义,命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体。
- 命名实体识别的作用:
- 同词汇一样,命名实体也是人类理解文本的基础单元,因此是AI解决NLP领域高阶任务的重要基础环节
- 学习了什么是词性标注:
- 词性:语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有14种,如:名词、动词、形容词等
- 顾名思义,词性标注(Part-Of-Speech tagging, 简称POS)就是标注出一段文本中每个词汇的词性
- 学习了词性标注的作用:
- 词性标注以分词为基础,是对文本语言的另一个角度的理解,因此也常常成为AI解决NLP领域高阶任务的重要基础环节
- 学习了使用jieba进行词性标注
7、jieba词性对照表⭐
- a 形容词 - ad 副形词 - ag 形容词性语素 - an 名形词
- b 区别词
- c 连词
- d 副词 - df - dg 副语素
- e 叹词
- f 方位词
- g 语素
- h 前接成分
- i 成语
- j 简称略称
- k 后接成分
- l 习用语
- m 数词 - mg - mq 数量词
- n 名词 - ng 名词性语素 - nr 人名 - nrfg - nrt - ns 地名 - nt 机构团体名 - nz 其他专名
- o 拟声词
- p 介词
- q 量词
- r 代词 - rg 代词性语素 - rr 人称代词 - rz 指示代词
- s 处所词
- t 时间词 - tg 时语素
- u 助词 - ud 结构助词 得- ug 时态助词- uj 结构助词 的- ul 时态助词 了- uv 结构助词 地- uz 时态助词 着
- v 动词 - vd 副动词- vg 动词性语素 - vi 不及物动词 - vn 名动词 - vq
- x 非语素词
- y 语气词
- z 状态词 - zg
相关文章:
【NLP】文本处理的基本方法【jieba分词、命名实体、词性标注】
文章目录 1、本章目标2、什么是分词3、jieba的使用3.1、精确模式分词3.2、全模式分词3.3、搜索引擎模式分词3.4、中文繁体分词3.5、使用用户自定义词典 4、什么是命名实体识别5、什么是词性标注6、小结7、jieba词性对照表⭐ 🍃作者介绍:双非本科大三网络…...
unity 本地使用Json(全套)
提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、Json是什么?二、创建Json文件1.在线编辑并转实体类(C#)2.Json文件 三、解析Json并使用四、报错:JsonError:JsonExce…...
java消息队列ActiveMQ
安装 前置条件 activemq的运行依赖于jdk,需要提前安装jdk如果已经安装了jdk,需要根据jdk的版本来选择对应的版本进行安装activemq版本对应在官网上,使用java -version 看jdk的版本注意:jdk和mq的版本不一致会报错,电脑…...
Android SurfaceFlinger——信号同步原理(五十一)
经过前面系列文章的学习,我们的已经理解了 SurfaceFlinger 运行机制以及同步机制,但是SurfaceFlinger 又是以什么方法是把需要刷新的信号发送给 App 进程的。 一、VSync简介 垂直同步(Vertical Synchronization,简称 VSync)是一种用于同步视频信号和显示设备刷新率的技术…...
html+css网页制作 博云丝网5个页面 无js ui还原度100%
htmlcss网页制作 博云丝网5个页面 无js ui还原度100% 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取…...
Docker Hub 镜像代理加速
因为未知原因,docker hub 已经不能正常拉取镜像,可以使用以下代理服务来进行: "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud"…...
矩阵:消除冗余
矩阵 基本概念 矩阵(Matrix)是一个按照行和列排列的元素的二维数组。具体来说,一个 ( m \times n ) 的矩阵有 ( m ) 行和 ( n ) 列,表示为: A ( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯…...
【AWS账号解绑关联】Linker账号解绑重新关联注意事项
文章目录 一、来自客户疑问二、提交工单获取帮助三、最佳操作说明四、最佳操作步骤五、参考资料活动上新 一、来自客户疑问 将Linker账号,从一个组织中退出,重新关联到新的组织中,这解绑到重新完成新的关联绑定期间会在Linker账号中的账单中…...
入门学习使用overleaf和latex
文章目录 1.下载对应的latex论文模板2.overleaf平台的使用2.1overleaf平台的介绍2.2overleaf平台模板文件的上传2.3latex语法的学习2.3.2 分段(如下图显示)2.3.3 其他2.3.4简单latex实操2.3.5 换行符和换页符2.3.6左右居中对齐2.3.7 字体设置2.3.8插入固定位置图片2.3.9文字包围…...
后端调优——分布式锁选型——入门
文章目录 引言正文分布式锁的定义分布式锁的具体应用场景如何实现分布式锁主动轮询型分布式锁实现思路一、MySQL分布式锁二、Redis分布式锁 监听回调型分布式锁Etcd分布式锁Zookeeper分布式锁 锁的对比 总结 引言 最近面试,一直被问到分布式锁,然后仅仅…...
k8s集群管理 Pod管理命令
k8s集群管理命令 信息查询命令 子命令说明help用于查看命令及子命令的帮助信息cluster-info显示集群的相关配置信息api-resources查看当前服务器上所有的资源对象api-versions查看当前服务器上所有资源对象的版本config管理当前节点上的认证信息 资源对象概述 Pod概述 Pod 管…...
Java 并发(二)—— AQS原理
AQS,全名AbstractQueuedSynchronizer。 抽象队列同步器定义多线程访问共享资源的同步模板,解决了实现自定义同步器时涉及的大量细节问题,简化开发两种同步状态:独占、共享核心组件:State变量、CLH变体队列、获取 / 释…...
Maven插件:exec-maven-plugin-代码执行或者直接输出内置变量信息
文章目录 概述使用应用自行实现记录项目打包插件 概述 官网: https://www.mojohaus.org/exec-maven-plugin/usage.html 依赖: https://mvnrepository.com/artifact/org.codehaus.mojo/exec-maven-plugin 使用 <plugin><groupId>org.codeh…...
https://ffmpeg.org/
https://ffmpeg.org/ https://www.gyan.dev/ffmpeg/builds/ https://github.com/BtbN/FFmpeg-Builds/releases F:\Document_ffmpeg F:\Document_ffmpeg\ffmpeg-master-latest-win64-gpl-shared\bin...
linux 源码部署polardb-x 错误汇总
前言 在linux 源码部署polardb-x 遇到不少错误,特在此做个汇总。 问题列表 CN 启动报错 Failed to init new TCP 详细错误如下 Caused by: Failed to init new TCP. XClientPool to my_polarx#267b21d8127.0.0.1:33660 now 0 TCP(0 aging), 0 sessions(0 runni…...
vscode用快捷键一键生成vue模板
项目中有些代码模块是固定的,如下面的代码所示,为了不重复写这些相同的代码,我们可以使用快键键一键生成模板。 流程: 中文:首选项-> 用户代码片段 -> 输入框中输入vue,找到vue.json文件(没有vue.j…...
ARM 架构硬件新趋势:嵌入式领域的未来
目录 目录 一、ARM 架构概述 二、新趋势一:AI 加速器集成 三、新趋势二:更高效的电源管理 四、新趋势三:安全性增强 五、结语 随着物联网 (IoT) 和边缘计算的发展,ARM 架构在嵌入式系统中的应用越来越广泛。从智能手机到智能…...
星戈瑞-二油酰磷脂酰乙醇胺标记荧光素 DOPE-FITC
DOPE-FITC,全称为1,2-dioleoyl-sn-glycero-3-phosphoethanolamine-N-FITC,是一种结合了二油酰磷脂酰乙醇胺(DOPE)与荧光素异硫氰酸酯(FITC)的复合标记物。以其独特的磷脂结构和强烈的绿色荧光特性ÿ…...
堆的实现(偷懒版)
🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 目录 前言 一、堆的实现 1.1 堆的向下调整算法 思路: 1.2 堆的向上调整算法 1.3 堆的创建 1.4 堆的复杂度计算 向下调整建堆的复杂度…...
一键启动,智能分拣:3D视觉系统赋能多SKU纸箱高效混拆作业
在快速发展的电商时代,仓储物流面临着前所未有的挑战。尤其是面对成千上万种不同的纸箱,如何实现快速、准确、高效的混拆作业,成为了众多企业亟待解决的问题。幸运的是,随着科技的进步,3D视觉系统正逐步成为这一领域的…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...
大模型真的像人一样“思考”和“理解”吗?
Yann LeCun 新研究的核心探讨:大语言模型(LLM)的“理解”和“思考”方式与人类认知的根本差异。 核心问题:大模型真的像人一样“思考”和“理解”吗? 人类的思考方式: 你的大脑是个超级整理师。面对海量信…...
