NLP:文本预处理

前言:前面简单介绍了NLP,这篇文章分享NLP前期文本预处理的几种方式。

在这里插入图片描述

一、分词

(一)概念

分词将文本拆分为最小语义单元(如词、子词或字符)的过程。

举个例子:

日月教育是一家上市公司

['日月', '教育', '是', '一家', '上市公司']

(二)分词的作用

词作为语言语义理解的最小单元, 是人类理解文本语言的基础. 因此也是AI解决NLP领域高阶任务, 如自动问答, 机器翻译, 文本生成的重要基础环节。

流行中文分词工具:jieba(还有bert分词和其它分词法,此处只介绍jieba)。

(三)jieba的安装

pip install jieba

(四)jieba的使用

1.精确模式分词

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

import jieba
content = "日月教育是一家上市公司"
# 精确模型:试图将句子最精确地切开,适合文本分析。也属于默认模式
jieba.cut(content, cut_all=False)  # cut_all默认为False

# 将返回一个生成器对象
<generator object Tokenizer.cut at 0x7f8d9053e650>

# 若需直接返回列表内容, 使用jieba.lcut即可
jieba.lcut(content, cut_all=False)
['日月', '教育', '是', '一家', '上市公司']

2.全模式分词

把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能消除歧义。

# 若需直接返回列表内容, 使用jieba.lcut即可
jieba.lcut(content, cut_all=True)

['日', '月', '教育', '是', '一家', '上市', '上市公司']

# 注意1:人工智能全模型分成三个词
# 注意2:逗号和句号也给分成了词

3.搜索引擎模式分词

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

import jieba
content = "日月教育是一家上市公司"
jieba.cut_for_search(content)

# 将返回一个生成器对象
<generator object Tokenizer.cut_for_search at 0x7f8d90e5a550>

# 若需直接返回列表内容, 使用jieba.lcut_for_search即可
jieba.lcut_for_search(content)
['日月', '教育', '是', '一家', '上市', '公司', '上市公司']

特别分享:中文繁体分词

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

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

注意,如果文本有标点,标点也会单独被“分词”(若有特殊需要,可使用正则:re库 过滤掉标点)。

jieba还有一些其它用法,可自行查询。

二、命名实体识别

(一)概念

命名实体: 通常我们将人名, 地名, 机构名等专有名词统称命名实体. 如: 周杰伦, 黑山县, 孔子学院, 24辊方钢矫直机.
顾名思义, 命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体.

举个例子:

鲁迅, 浙江绍兴人, 五四新文化运动的重要参与者, 代表作朝花夕拾.

==>

鲁迅(人名) / 浙江绍兴(地名)/ 五四新文化运动(专有名词) / 重要参与者 / 代表作 / 朝花夕拾(专有名词)

(二)命名实体识别的作用

命名实体识别(Named Entity Recognition, NER)旨在识别文本中的实体(如人名、地名、组织名等)。

可使用Python和深度学习框架(如PyTorch或TensorFlow)实现NER(具体可自行查询,此处不分享)。

三、词性标注

(一)概念

词性: 语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有14种, 如: 名词, 动词, 形容词等.
顾名思义, 词性标注(Part-Of-Speech tagging, 简称POS)就是标注出一段文本中每个词汇的词性.

举个例子:

我爱自然语言处理

==>/rr,/v, 自然语言/n, 处理/vn

rr: 人称代词
v: 动词
n: 名词
vn: 动名词

(二)词性标注的作用

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

(三)使用jieba.posseg进行中文词性标注

import jieba.posseg as pseg
pseg.lcut("我爱北京天安门") 

运行结果:

# 结果返回一个装有pair元组的列表, 每个pair元组中分别是词汇及其对应的词性
[pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns')]

今天的分享到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值