Python结巴中文分词工具使用过程中遇到的问题及解决方法


Posted in Python onApril 15, 2017

本文实例讲述了Python结巴中文分词工具使用过程中遇到的问题及解决方法。分享给大家供大家参考,具体如下:

结巴分词是Python语言中效果最好的分词工具,其功能包括:分词、词性标注、关键词抽取、支持用户词表等。这几天一直在研究这个工具,在安装与使用过程中遇到一些问题,现在把自己的一些方法帖出来分享一下。

官网地址:https://github.com/fxsjy/jieba

1、安装。

按照官网上的说法,有三种安装方式,

第一种是全自动安装:easy_install jieba 或者 pip install jieba,可是并没有找到它提供这个安装程序。

第二种方法是半自动安装:先下载http://pypi.python.org/pypi/jieba/ ,解压后在cmd命令行中运行 python setup.py install。这里需要注意的是,默认情况下,不能在cmd中直接运行python命令,需要把它的路径加入到环境变量path中方可。我试过,可行。但是 这种方法安装之后,结巴分词功能只能在Python自带的IDLE中使用。在含有PyDEV的MyEclipse中不能执行“import jieba”命令,所以继续尝试第三种方法。

第三种方法是手动安装:将jieba目录放置于当前目录或者site-packages目录。把下载到的jieba-0.30.zip解压后,里面有个jibba的文件夹,把它复制到与你的Python程序相同的位置,这样在程序中就可以执行“import jieba”了。

2、关于分词的实现

官网提供了分词的基本用法示例 :

#encoding=utf-8
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print "Full Mode:", "/ ".join(seg_list) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print "Default Mode:", "/ ".join(seg_list) # 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print ", ".join(seg_list)
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print ", ".join(seg_list)

程序可以执行,但是在MyEclipse中显示中文为Unicode编码,这不科学。

但是继续执行另一个词性标注的示例却非常正常:

import jieba.posseg as pseg
words = pseg.cut("我爱北京天安门")
for w in words:
  print w.word, w.flag

所以我就想去分析一下它的源代码,结果发现在jiba/_init_.py文件(这是实现分词的文件)的第209行(cut函数)中有关于检查编码的语句块:

if not isinstance(sentence, unicode):
  try:
   sentence = sentence.decode('utf-8')
  except UnicodeDecodeError:
   sentence = sentence.decode('gbk','ignore')

而在jieba/posseg/_init_.py文件(这是实现词性标注的文件)第158行的cut函数中却没有发现此类代码。所以我猜想,前者有检查编码的代码就出现乱码,而后者没有检查编码的代码而正常显示,所以就把前者检查编码的代码给注释了,结果程序执行报错,只好又把人家的源码还原,结果中文又正常显示了!

运行效果如下图:

Python结巴中文分词工具使用过程中遇到的问题及解决方法

以上只是对固定的中文字符串变量进行分词和词性标注,接下来的文章里我会尝试从文件中读取中文进行分词和词性标注。

更多关于Python相关内容可查看本站专题:《Python字典操作技巧汇总》、《Python字符串操作技巧汇总》、《Python常用遍历技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
python开发之for循环操作实例详解
Nov 12 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
python 顺时针打印矩阵的超简洁代码
Nov 14 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
基于Python实现流星雨效果的绘制
Mar 18 Python
Python中tqdm的使用和例子
Sep 23 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
Apr 14 #Python
Python编程判断一个正整数是否为素数的方法
Apr 14 #Python
python编程实现归并排序
Apr 14 #Python
python实现折半查找和归并排序算法
Apr 14 #Python
Python+Wordpress制作小说站
Apr 14 #Python
Python 中 list 的各项操作技巧
Apr 13 #Python
简单的python后台管理程序
Apr 13 #Python
You might like
PHP 工厂模式使用方法
2010/05/18 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
destoon之一键登录设置
2014/06/21 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
python ip正则式
2009/05/07 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
小学门卫岗位职责
2013/12/17 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
小学生新年寄语
2014/04/03 职场文书
保研推荐信
2014/05/09 职场文书
给校长的建议书600字
2014/05/15 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
学生检讨书怎么写
2014/10/09 职场文书
出国留学自荐信模板
2015/03/06 职场文书
2015年派出所工作总结
2015/04/24 职场文书
不同意离婚代理词
2015/05/23 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python