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 相关文章推荐
python结合opencv实现人脸检测与跟踪
Jun 08 Python
python魔法方法-属性访问控制详解
Jul 25 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
Python语言实现百度语音识别API的使用实例
Dec 13 Python
Python扩展内置类型详解
Mar 26 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
Python编写打字训练小程序
2019/09/26 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
推普周活动总结
2014/08/28 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
教代会开幕词
2015/01/28 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
停车场管理制度范本
2015/08/05 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js
Python四款GUI图形界面库介绍
2022/06/05 Python