Chapter 1.1 分词的基础操作
知识点1.1.1 分词方法的类型
1、基于规则的分词
定义:将每个字符串与词典中的每个词进行匹配,若匹配上则进行切分,反之则不进行切分
优势:简单高效
劣势:不能较好处理未登录词(新词)
2、基于统计的分词
定义:将字作为组成词的最小单位,统计大规模语料库中字与字相连共现的频次,频次越高越能认为这些相连的字能够组成一个词
优势:能够较好处理未登录词(新词)
劣势:算法较为复杂(HMM、CRF)
知识点1.1.2 基于规则分词的主要规则
1、正向最大匹配法
第一步,在需分析的文档中,从左往右取出i个字符作为待匹配的字符串,i为词典中最长的词的字符数
第二步,将待匹配的字符串与词典中的每个词进行匹配,若匹配上则进行切分,若匹配不上则将待匹配字符串的最后一个字去掉,再进行匹配,不断重复直至切分出文档中的所有词为止
2、逆向最大匹配法
第一步,生成需分析文档的逆序文档,从左往右取出i个字符作为待匹配的字符串,i为词典中最长的词的字符数
第二步,将待匹配的字符串与逆序词典中的每个逆序词进行匹配,若匹配上则进行切分,若匹配不上则将待匹配字符串的最后一个字去掉,再进行匹配,不断重复直至切分出文档中的所有词为止
3、双向最大匹配法
第一步,分别使用正向最大匹配法、逆向最大匹配法进行分词
第二步,若两种方法的分词词数相同且分词结果相同,则返回任意一个结果
若两种方法的分词词数相同但分词结果不同,则返回单字个数较少的结果
若两种方法的分词词数不同,则返回词数较少的结果
知识点1.1.3 分词工具的介绍——Jieba分词
工具特点:动态更新、功能多样(分词、自定义词典、词性标注、关键词提取等)、操作简单
分词方法:基于规则+基于统计(HMM,Viterbi算法)
分词模式:
(1)精确模式(默认)——试图将句子最精确地切开,适合用于文本分析
(2)全模式——把句子中所有可以成词的词语都扫描出来,速度非常快,但不能解决歧义
(3)搜索引擎模式——在精确模式的基础上,对长词再次切分,适合用于搜索引擎分词
(4)paddle模式——利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词
知识点1.1.4 Jieba分词的实战——2021年政府工作报告
#安装所需要的程序包
pip install jieba
#载入所需要的程序包
import numpy as np
import pandas as pd
import jieba
#导入需分析的文档,并查看前十行
chap1 = pd.read_csv('C:\\Users\\dell-pc\\desktop\\2021.txt', names = ['txt'], sep = ' ', encoding = 'utf-8')
chap1.head(10)
#使用jieba.cut命令进行分词,分词结果为generator,不能直接print
word_list = jieba.cut(" ".join(chap1.txt))
print(' '.join(word_list))
#使用jieba.lcut命令进行分词,分词结果为list,能够直接print
word_list = jieba.lcut(" ".join(chap1.txt))
print(word_list)
#使用精确模式进行分词
word_list = jieba.cut("我们在六稳工作基础上明确提出六保任务")
print(' '.join(word_list))
#使用全模式进行分词
word_list = jieba.cut("我们在六稳工作基础上明确提出六保任务", cut_all = True)
print(' '.join(word_list))
#使用搜索引擎模式进行分词
word_list = jieba.cut_for_search("我们在六稳工作基础上明确提出六保任务")
print(' '.join(word_list))
#使用paddle模式进行分词
jieba.enable_paddle() #启动paddle模式
word_list = jieba.cut("我们在六稳工作基础上明确提出六保任务", use_paddle = True)
print(' '.join(word_list))