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 相关文章推荐
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
Python高级用法总结
May 26 Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
Python 点击指定位置验证码破解的实现代码
Sep 11 Python
python生成requirements.txt的两种方法
Sep 18 Python
python flask中动态URL规则详解
Nov 22 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
python asyncio 协程库的使用
Jan 21 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 XML操作类DOMDocument
2009/12/16 PHP
php中chdir()函数用法实例
2014/11/13 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
Python json模块使用实例
2015/04/11 Python
Python运算符重载用法实例
2015/05/28 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
Python找出最小的K个数实例代码
2018/01/04 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
企业管理部经理岗位职责
2013/12/24 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技