各位学python的朋友,是否也曾遇到过这样的问题,举个例子如下:
“I am proud of my motherland”
如果我们需要提取中间的单词要走如何做?
自然是调用string中的split()函数即可
image.png
那么将这转换成中文呢,“我为我的祖国感到骄傲”再分词会怎样?
中国词汇并不像是英文文本那样可以通过空格又或是标点符号来区分,
这将会导致比如“骄傲”拆开成“骄”、“傲”,又或者将“为”“我的”组合成“为我的”等等
那如何避免这些问题呢? 这就用到了今天介绍的python基础库——jieba库
image.png
一、什么是jieba库?
jieba库是优秀的中文分词第三方库 ,它可以利用一个中文词库,确定汉字之间的关联概率将汉字间概率大的组成词组,形成分词结果,将中文文本通过分词获得单个的词语。jieba分词的三种模式 :精确模式、全模式、搜索引擎模式
1.精确模式:把文本精确的切分开,不存在冗余单词
2.全模式:把文本中所有可能的词语都扫描出来,有冗余
3.搜索引擎模式:在精确模式基础上,对长词再次切分
二、安装jieba库
安装jieba库还是比较简单的,我介绍几种简单的方法
小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编。且我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:895817687
1.全自动安装
打开cmd命令提示符然后输入代码
easy_install jieba
pip install jieba
pip3 install jieba
三段代码任意一个即可自动下载安装
image.png
2.半自动安装
首先打开jieba库网站:http://pypi.python.org/pypi/jieba/
然后下载并运行python setup.py install
最后将 jieba 目录放置于当前目录或者 site-packages 目录
image.png
3.软件安装
许多编辑软件都可以在软件内部安装,以pycharm2019为例子
首先打开pycharm,在左上角文件中可以找到设置,然后打开设置
image.png
右侧项目相关可以找到 project interpreter,进入可以查看项目引用的模块
点击右侧的加号,在available packages 中搜索jieba 选中后点击左下角安装即可
image.png4.检测安装
打开命令提示符(cmd)进入python环境
输入import jieba 如下图所示即为安装成功
image.png
三、主要函数
jieba.cut(s)
被运用于精确模式,将会返回一个可迭代的数据类型
jieba.cut(s,cut_all=True)
被运用于全模式,输出文本s中的所有可能单词
jieba.cut_for_search(s)
搜索引擎模式,适合搜索引擎建立索引的分词结果
jieba.lcut(s)
被运用于精确模式,将会返回一个列表类型
jieba.lcut(s,cut_all=True)
被运用于全模式,返回一个列表类型
jieba.lcut_for_search(s)
搜索引擎模式,返回一个列表类型
jieba.add_word(w)
向分词词典加入新词
相信不少同学已经看得有点蒙,那么接下来我将通过代码来实际对比不同点
首先我们对比三个不同的模式 ,之前的介绍可以看出:
精确模式将不会出现冗余,所有词汇都是根据最大可能性而进行组合的出结果
全模式与精确模式最大区别在于,全模式将会把所有可能拼接的词汇全部展现
搜索引擎模式则是在精确模式的前提下对较长词汇进行再一次分割
我们以“我因自己是中华人民共和国的一份子而感到骄傲”为例
*精确模式结果如下 :
image.png
['我', '因', '自己', '是', '中华人民共和国', '的', '一份', '子', '而', '感到', '骄傲']
*全模式结果如下:
image.png
['我', '因', '自己', '是', '中华', '中华人民', '中华人民共和国', '华人', '人民', '人民共和国', '共和', '共和国', '的', '一份', '份子', '而', '感到', '骄傲']
*搜索引擎模式结果如下: image.png['我', '因', '自己', '是', '中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '的', '一份', '子', '而', '感到', '骄傲']
可以很明显的对比出来,全模式将所有课能出现的词汇进行罗列,而搜索引擎模式与精确模式十分相似,但对“中华人名共和国“”这一词汇进行分词
至于有的同学发现有些函数十分相似,比如说cut()与lcut()
两者之间其实差距不大,主要不同在于返回类型,加“l”的一般返回为列表类型。
如果觉得有所帮助,还望各位大佬点赞支持谢谢
image.png
网友评论