欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自然语言处理入门之路【task03】——特征提取

程序员文章站 2024-02-22 11:29:58
...
  1. 基本文本处理技能
    1.1 分词的概念(分词的正向最大、逆向最大、双向最大匹配法);
    1.2 词、字符频率统计;(可以使用Python中的collections.Counter模块,也可以自己寻找其他好用的库)
  2. N元模型
    2.1 语言模型中unigram、bigram、trigram的概念;
    2.2 unigram、bigram频率统计;(可以使用Python中的collections.Counter模块,也可以自己寻找其他好用的库)
  3. 文本矩阵化:要求采用词袋模型且是词级别的矩阵化
    步骤有:
    3.1 分词(可采用结巴分词来进行分词操作,其他库也可以);
    3.2 去停用词;构造词表。
    3.3 每篇文档的向量化

1、基本文本处理技能

  • 1.1分词
    • 正向最大匹配法
      从左向右,在词典中搜索,尽可能选择与词典中最长单词匹配的的词作为分词结果。并且可以每次最大字符长度
      例句:我来到北京清华大学
      词典{“我“, “来到”, “来”, “到”,“北京”, “清华”, “大学”, “华大”, “清华大学”}
      取最大字符长度为6
      第一轮:
      “我来到北京清”
      “我来到北京”
      “我来到北”
      “我来到”
      “我来”
      “我” √
      第二轮:
      “来到北京清华”
      “来到北京清”
      “来到北京”
      “来到北”
      “来到” √
      第三轮:
      “北京清华大学”
      ……
      最终结果:我 / 来到 / 北京 / 清华大学

    • 逆向最大匹配法
      顾名思义,匹配方法与正向方法相同,但是方向为从句尾到句首
      例句:我来到北京清华大学
      词典{“我“, “来到”, “来”, “到”,“北京”, “清华”, “大学”, “华大”, “清华大学”}
      取最大字符长度为6
      第一轮:
      “北京清华大学”
      “京清华大学”
      “清华大学” √
      第二轮:
      “我来到”
      “来到” √
      第三轮:
      ……
      最庸结果:我 / 来到 / 北京 / 清华大学

    • 双向最大匹配法
      使用上述两种方法都切一遍,然后根据大颗粒度词越多越好,非词典词和单字词越少越好的原则,对比选优的一种作为结果

  • 1.2 词、字符频率统计
    • 字符频率统计
      代码如下
     from collections import Counter
    demo = '组队学习说明:学习自然语言处理理论'
    count = Counter(demo)
    print(count)	
    
    输出结果:
     Counter({'学': 2, '习': 2, '理': 2, '组': 1, '队': 1, '说': 1, '明': 1, ':': 1, '自': 1, '然': 1, '语': 1, '言': 1, '处': 1, '论': 1})
    
    • 词频统计
      词频的统计,单独使用Collections工具就不够了,需要先用jieba分词进行分词,再使用Collections统计
      代码:
    from collections import Counter
    import jieba
    demo = '组队学习说明:学习自然语言处理理论'
    list1 = list(jieba.cut(demo))
    print(list1)
    count = Counter(list1)
    print(count)
    
    输出结果:
    ['组队', '学习', '说明', ':', '学习', '自然语言', '处理', '理论']
    Counter({'学习': 2, '组队': 1, '说明': 1, ':': 1, '自然语言': 1, '处理': 1, '理论': 1})
    

2、N元模型

  • 名词释义
    unigram 一元模型,将句子分为单个字,当前位置的字仅和前一个字有关系,取决于前一个字的概率
    bigram 二元模型,将句子分为双字,当前位置的字仅和前两个字有关系,取决于前两个字出现的概率
    trigram 三元模型,将句子分为三字,当前位置的字仅和前三个字有关系,取决于前三个字出现的概率
    N-Gram模型,即N……

3、文本矩阵化

相关标签: nlp 中文分词