概念:中文分词(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模型