概念:中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。
字符匹配:
- 正向最大匹配
- 逆向最大匹配
- 最少切分(使每句话中切分的词最少)
- 双向最大匹配
逆向匹配的切分精度略高于正向匹配,遇见歧义的现象也比较少。
基本原理是,将字符串与字典中的内容进行匹配,找到匹配的长度最大的词语,就将它分割成一个词语。由于中文比较复杂,各种语境下的分词可能有些不同。所以一般在实现过程中,需要对扫描方式进行进一步的优化。
理解法:
让计算机模拟人类的思考方式去分析文章的内容。
统计法:
通过对大量文章内容进行统计,然后将相邻排列重复次数超过一定范围的字的组合划分为一个词,常常出现“新词”,以及耗时较大,误差也比较大。
技术难点:
歧义词:
交集型歧义:可以对词有多种划分,需要人的知识和经验协助划分的内容
组合型歧义:在不同句子中,有的为词而在另一个语境中却不为一个词。
新词:在未被分词词典收录而又确实是一个词的词语,人名、机构名、商标名等词。
结巴分词的安装和使用
功能:
- 支持三种分词模式:
- 精确模式,试图将句子最精确地切开,适合文本分析;
- 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
- 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
- 支持繁体分词
- 支持自定义词典
- MIT 授权协议
安装:
pip3 install jieba
使用:
引用:
import jieba
方法:
待分词字符串编码集:unicode UTF-8 GBK(易产生错误,被解码成UTF-8)
默认为精确模式
Jieba.cut(被分词字符串,是否采用全模式,是否使用HMM模型)
返回可迭代的生成器
Jieba.cut_for_search(需要分词的字符串,是否使用HMM模型),
返回可迭代的生成器,该方法粒度比较细
Jieba.lcut返回数组
Jieba.lcut_for_search返回数组
Jieba.Tokenizer(dictionary = DEFAULT_DICT)
新建自定义分词器,用于不同的字典【jieba.dt为默认分词器】
HMM模型