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


    🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
    🦅个人主页:@逐梦苍穹
    📕所属专栏:人工智能
    🌻gitee地址:xzl的人工智能代码仓库
    ✈ 您的一键三连,是我创作的最大动力🌹

    1、本章目标

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

    2、什么是分词

    分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。
    我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,
    而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,
    分词过程就是找到这样分界符的过程.
    分词的作用:

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

    流行中文分词工具jieba:

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

    jieba的特性:

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

    3、jieba的使用

    3.1、精确模式分词

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

    # -*- coding: utf-8 -*-
    # @Author: CSDN@逐梦苍穹
    # @Time: 2024/8/9 2:09
    import jieba
    
    content = "无线电法国别研究"
    jieba.cut(content, cut_all=False)  # cut_all默认为False
    
    # 将返回一个生成器对象: 
    
    # 若需直接返回列表内容, 使用jieba.lcut即可
    words = jieba.lcut(content, cut_all=False)
    print(words)  # 结果: ['无线电', '法国', '别', '研究']
    

    输出:
    image.png

    3.2、全模式分词

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

    3.3、搜索引擎模式分词

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

    # -*- coding: utf-8 -*-
    # @Author: CSDN@逐梦苍穹
    # @Time: 2024/8/9 2:14
    import jieba
    
    content = "无线电法国别研究"
    jieba.cut_for_search(content)
    
    # 将返回一个生成器对象: 
    
    # 若需直接返回列表内容, 使用jieba.lcut_for_search即可
    words = jieba.lcut_for_search(content)
    # 对'无线电'等较长词汇都进行了再次分词.
    print(words)  # ['无线', '无线电', '法国', '别', '研究']
    

    输出:
    image.png

    3.4、中文繁体分词

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

    # -*- coding: utf-8 -*-
    # @Author: CSDN@逐梦苍穹
    # @Time: 2024/8/9 2:16
    import jieba
    
    content = "煩惱即是菩提,我暫且不提"
    words = jieba.lcut(content)
    print(words)  # ['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']
    

    输出:
    image.png

    3.5、使用用户自定义词典

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

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

    userdict.txt:
    image.png
    解释如下:
    image.png
    代码:

    # -*- 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)  # ['八一双鹿', '更名', '为', '八一', '南昌', '篮球队', '!']
    

    运行结果:
    image.png

    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进行中文词性标注:

    # -*- 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')]
    

    输出:
    image.png

    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
    

  • 相关阅读:
    如何绘制西游记思维导图?详细制作步骤看这里
    力扣1047-删除字符串中的所有相邻重复项)——栈
    HBase中的数据表是如何用CHAT进行分区的?
    【C语言】通讯录联系(文件版)
    微信公众号小说系统源码 漫画系统源码 可对接微信公众号 APP打包 对接个人微信收款
    如何构建最佳的SaaS联盟计划
    钟汉良日记:你相信神话吗?你会背《正气歌》吗
    CocosCreator3.8研究笔记(十)CocosCreator 图像资源的理解
    241.为运算表达式设计优先级(分治算法)
    Centos7 ElasticSearch集群搭建
  • 原文地址:https://blog.csdn.net/qq_60735796/article/details/141040318