【自然语言处理|文本预处理-02】:文本预处理基本方法

1 分词

1.1 分词的概念和作用

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

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

中文为什么要分词?中文没有明显的分解符,英文天然空格是分解符

1.2 jieba分词

jieba 是一个python实现的分词库,对中文有着很强大的分词能力

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

jieba分词功能:

  • 支持多种分词模式(三种模式)
    • 精确模式
    • 全模式
    • 搜索引擎模式
  • 支持中文繁体分词
  • 支持用户自定义词典
  • 自定义字典的格式

1.3 jieba-分词模式

jieba分词安装

pip install jieba

  • 精确模式
  • 全词模式
  • 搜索引擎模式
  • 三种分词模式的本质: 对分词的颗粒度进行控制
import jieba

# def cut(self, sentence, cut_all = False, HMM = True,use_paddle = False):
def dm01_jiebase_base():

    content = "传智教育是一家上市公司,旗下有黑马程序员品牌。我是在黑马这里学习人工智能"
    # 精确模式: 按照句子的语义对文本,尽量精准的进行分词
    # def cut(self, sentence, cut_all=False, HMM=True, use_paddle=False):
    myobj1 = jieba.cut(sentence=content, cut_all= False)
    print('myobj1-->', myobj1) # 返回一个可迭代对象

    # 使用lcut()可以将可迭代对象转换为列表
    mydata1 = jieba.lcut(sentence=content, cut_all=False)
    print('mydata1-->', mydata1)

    # 全词模式: 把所有的词都分出来
    myobj2 = jieba.cut(sentence=content, cut_all=True)
    print('myobj2-->', myobj2)

    mydata2 = jieba.lcut(sentence=content, cut_all=True)
    print('mydata2-->', mydata2)

    # 搜索引擎模式: 是在精确模式的基础之上, 对长词再做切分!!
    # def lcut_for_search(self, *args, **kwargs):
    myobj3 = jieba.cut_for_search(sentence=content)
    print('myobj3-->', myobj3)

    mydata3 = jieba.lcut_for_search(sentence=content)
    print('mydata3-->', mydata3)

在这里插入图片描述

1.4 jieba-用户自定义字典

  • 通过用户自定义字典,法律和医疗行业有很多专有名词,给到jieba进行识别
  • 用户字典的作用: 的确可以增加jieba分词的准确性
  • 1 用户字典格式
    名字 + 词频 + 词性 ;注意 词频 + 词性是可以省略
    氨基硅油 3 nz
    柔顺剂 5 n

def dm02_jiebase_userdict():

    # 1 不使用用户字典
    content = "氨基硅油是有机硅柔顺剂的一种,其主要作用是可以增加衣物的舒适度"
    # 精确模式: 按照句子的语义对文本,尽量精准的进行分词
    mydata1 = jieba.lcut(sentence=content, cut_all=False)
    print('mydata1-->', mydata1)

    # 2 使用用户字典
    # 加载用户自定义字典
    jieba.load_userdict('./userdict.txt')
    # lcut
    mydata2 = jieba.lcut(sentence=content, cut_all=False)
    print('mydata2-->', mydata2)
    pass

在这里插入图片描述

1.5 jieba-繁体文本分词

def dm03_jieba_base():
    content = "煩惱即是菩提,我暫且不提"
    mydata1 = jieba.lcut(content)
    print('mydata1--->', mydata1)

在这里插入图片描述

2.命名实体识别

  • 命名实体: 将人名, 地名, 机构名等专有名词统称命名实体。如: 周杰伦, 黑山县, 孔子学院, 24辊方钢矫直机
  • 命名实体识别:(Named Entity Recognition,简称NER),识别出一段文本中可能存在的命名实体
  • 作用:命名实体也是人类理解文本的基础单元,是AI解决NLP领域高阶任务的重要基础环节

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

3. 词性标注

  • 词性: 语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果,常见的词性有14种, 如: 名词, 动词, 形容词等

  • 词性标注:(Part-Of-Speech tagging, 简称POS),标注出一段文本中每个词汇的词性

  • 词向标注作用:对文本语言的另一个角度的理解,AI解决NLP领域高阶任务的重要基础环节

  • jieba词性对照表
    在这里插入图片描述

  • 进行词性标注,可以获取到其中形容词信息,然后进行评论分类

import jieba.posseg as pseg
pseg.lcut(sentence)

  • 结果得到一个分词列表,列表中为pair对象,pair(“北京”,ns)
  • pair(word,flag)
  • 通过pair.word - 获取到词语
  • 通过pair.flag - 获取到词性
import jieba.posseg as pseg
def dm04_jieba_posseg():
    mydata1 = pseg.lcut("我爱北京天安门")
    print('mydata1-->', mydata1)
    for i in mydata1:
        print(i.word)
        print(i.flag)

    # mydata1--> [pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns')]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值