中文分词(一):jieba分词

本文主要讲统计分词。

中文预处理的一个重要的环节就是对语料进行分词,将一句话或者一个段落拆分成许多独立个体的词,然后方便向量化,接着进行TF-IDF的特征处理。

在英语中,单词本身就是“词”,而在汉语中,“词”以“字”为基本单位,文章的语义表达仍然以“词”来划分,所以在处理中文文本时,需要进行分词处理,将句子转换为“词”的表示,这个切分词语的过程就是中文分词。

现在已有的分词算法大体可以分为:

  • 规则分词:通过维护一个足够大的词典,这个词典中存储了很多的词条,然后计算机会与这些已经存在的词条进行匹配,匹配到一个就完成一个分词。主要有正向最大匹配法(MM),逆向最大匹配法(RMM),双向最大匹配法(BMM)
  • 基于理解的分词方法:其做法就是让计算机尽可能模拟人类对于句子的理解,在分词的时候让计算机做到句法分析,语义分析,但是因为汉语言的庞杂以及多变性,这种分词方法并没有那么成熟。
  • 统计分词:主要思想是把每个词看作是由词的最小单位的各个字组成的,如果相连的两个字在不同的文本中出现的次数越多,就表示这两个字很有可能构成一个词,因此就利用字与字相邻出现的频率来反应成词的可靠性。这种做法是给出大量的已分好词的文本,然后利用机器学习此文本的分词方式和方法,训练相应的分词模型,从而达到对未知文本的分词,这里就用到了统计学习算法,比如隐马尔可夫HMM,条件随机场CRF。

一、jieba引入

jieba分词是分词的一种工具,镜像下载方法如下:

打开anaconda prompt,输入pip,再输入pip install jieba -i https://pypi.douban.com/simple/即可安装成功。

接下来先看jieba分词的三种分词模式:精确模式,全模式,搜索引擎模式:

全模式和搜索引擎模式会把分词的所有可能都打印出来,一般情况使用精确模式就可以了,在某些模糊匹配场景中,使用全模式和搜索引擎模式,代码如下:

import jieba
sent="中文分词是文本处理不可缺少的一步!"
seg_list=jieba.cut(sent,cut_all=True)
print('全模式:','/'.join(seg_list))
import jieba
sent="中文分词是文本处理不可缺少的一步!"
seg_list=jieba.cut(sent,cut_all=False)
print('精确模式:','/'.join(seg_list))
import jieba
sent="中文分词是文本处理不可缺少的一步!"
seg_list=jieba.cut(sent)
print('默认精确模式:','/'.join(seg_list))
import jieba
sent="中文分词是文本处理不可缺少的一步!"
seg_list=jieba.cut_for_search(sent)
print('搜索引擎模式:','/'.join(seg_list))

初学到这里的时候我在想,既然jieba分词这么好,那好像没有去研究它的必要了,只要会调库,就算是会分词了?这个问题留在这、

在运行代码的时候发现,代码的名字不能命名为“jieba”,否则就会出现“AttributeError: module 'jieba' has no attribute 'cut'”的报错。o(╯□╰)o

猜你喜欢

转载自www.cnblogs.com/liuxiangyan/p/12450386.html