【NLP】文本处理的基本方法【jieba分词、命名实体、词性标注】

文章目录

🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。

🦅个人主页:@逐梦苍穹

📕所属专栏:人工智能

🌻gitee地址:xzl的人工智能代码仓库

✈ 您的一键三连,是我创作的最大动力🌹

1、本章目标

  • 了解什么是分词, 词性标注, 命名实体识别及其它们的作用.
  • 掌握分词, 词性标注, 命名实体识别流行工具的使用方法.

2、什么是分词

分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。

我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,

而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,

分词过程就是找到这样分界符的过程.
分词的作用:

词作为语言语义理解的最小单元, 是人类理解文本语言的基础

因此也是AI解决NLP领域高阶任务,如自动问答、机器翻译、文本生成的重要基础环节。

流行中文分词工具jieba:

愿景:"结巴"中文分词,做最好的 Python 中文分词组件

jieba的特性:

  1. 支持多种分词模式
    1. 精确模式
    2. 全模式
    3. 搜索引擎模式
  2. 支持中文繁体分词
  3. 支持用户自定义词典

3、jieba的使用

3.1、精确模式分词

试图将句子最精确地切开,适合文本分析:

python 复制代码
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:09
import jieba

content = "无线电法国别研究"
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、搜索引擎模式分词

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

python 复制代码
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:14
import jieba

content = "无线电法国别研究"
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、中文繁体分词

针对中国香港、中国台湾地区的繁体文本进行分词:

python 复制代码
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:16
import jieba

content = "煩惱即是菩提,我暫且不提"
words = jieba.lcut(content)
print(words)  # ['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']

输出:

3.5、使用用户自定义词典

添加自定义词典后,jieba能够准确识别词典中出现的词汇,提升整体的识别准确率

词典格式:

  1. 每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒
  2. 词典样式如下, 具体词性含义请参照文末的 jieba词性对照表,将该词典存为userdict.txt,方便之后加载使用。

userdict.txt:

解释如下:

代码:

python 复制代码
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/9 2:29
import jieba

words = 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
解释:

  1. rr: 人称代词
  2. v: 动词
  3. n: 名词
  4. vn: 动名词

词性标注的作用: 词性标注以分词为基础,是对文本语言的另一个角度的理解,因此也常常成为AI解决NLP领域高阶任务的重要基础环节.

使用jieba进行中文词性标注:

python 复制代码
# -*- 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、小结

  1. 学习了什么是分词:
    1. 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符, 分词过程就是找到这样分界符的过程.
  2. 学习了分词的作用:
    1. 词作为语言语义理解的最小单元, 是人类理解文本语言的基础. 因此也是AI解决NLP领域高阶任务, 如自动问答, 机器翻译, 文本生成的重要基础环节.
  3. 学习了流行中文分词工具jieba:
    1. 支持多种分词模式:精确模式、全模式、搜索引擎模式
    2. 支持中文繁体分词
    3. 支持用户自定义词典
  4. 学习了jieba工具的安装和分词使用
  5. 学习了什么是命名实体识别:
    1. 命名实体:通常我们将人名、地名、机构名等专有名词统称命名实体。
    2. 顾名思义,命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体。
  6. 命名实体识别的作用:
    1. 同词汇一样,命名实体也是人类理解文本的基础单元,因此是AI解决NLP领域高阶任务的重要基础环节
  7. 学习了什么是词性标注:
    1. 词性:语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有14种,如:名词、动词、形容词等
    2. 顾名思义,词性标注(Part-Of-Speech tagging, 简称POS)就是标注出一段文本中每个词汇的词性
  8. 学习了词性标注的作用:
    1. 词性标注以分词为基础,是对文本语言的另一个角度的理解,因此也常常成为AI解决NLP领域高阶任务的重要基础环节
  9. 学习了使用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

相关推荐
Linguwen9 小时前
中山GEO分享会回顾文
人工智能·chatgpt
武子康9 小时前
多 Agent 不是多开几个终端:Pi 的 Sub-agent 取舍
人工智能·llm·agent
俊哥V9 小时前
每日 AI 研究简报 · 2026-08-22
人工智能·ai
龙虾PRO9 小时前
数据中台 + AI 落地:2026 五大趋势与零售出海完整实操案例
人工智能·零售
wish3669 小时前
K8S 免镜像部署:通过 API 上传文件动态创建服务(以 Ollama 为例)
人工智能·云原生·容器·kubernetes·local llm
AI导出鸭PC端9 小时前
文心怎样生成word文档?一键智能排版,AI导出鸭解决格式错乱痛点
人工智能·ai·word·豆包·deepseek·ai导出鸭
深小乐9 小时前
DeepSeek Harness 发布一周,登顶 Top10 的插件,暴露了哪些真实需求?
人工智能
奈斯先生Vector9 小时前
OpenScience 安装失败怎么办?Windows 环境、API 配置与本地服务排错指南
人工智能·windows·架构·开源·aigc·midjourney
武子康9 小时前
Email Thread 不是 Agent Session:生产级异步通信网关的状态、幂等与审批合同
人工智能·llm·agent
AIDANHANG9 小时前
放开长期挂着开关前先核到期日默认安全值与残留分支
人工智能