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

作者:捂汗县长 时间:2023-04-28 18:23:28 

本文实例讲述了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,中文,分词
0
投稿

猜你喜欢

  • Python中jieba库的使用方法

    2021-06-23 13:47:24
  • ASP GetRef 函数指针试探

    2011-03-16 11:09:00
  • python turtle绘图命令及案例

    2022-04-29 10:26:58
  • 一次Mysql update sql不当引起的生产故障记录

    2024-01-21 09:09:22
  • 基于keras输出中间层结果的2种实现方式

    2023-10-11 16:05:49
  • 语言化H1标签

    2008-01-11 13:54:00
  • pytest实现多进程与多线程运行超好用的插件

    2023-03-23 15:56:23
  • Python爬虫爬取微博热搜保存为 Markdown 文件的源码

    2023-03-03 23:30:29
  • php下检测字符串是否是utf8编码的代码

    2023-11-15 16:00:59
  • 3分钟看懂Python后端必须知道的Django的信号机制

    2022-08-17 18:17:55
  • 前端使用svg图片改色实现示例

    2022-03-14 03:54:14
  • Python使用微信itchat接口实现查看自己微信的信息功能详解

    2021-07-29 16:07:20
  • 网站设计趋势: iPhones[译]

    2009-09-21 12:40:00
  • python格式化字符串的实战教程(使用占位符、format方法)

    2023-02-01 22:20:21
  • Python中import机制详解

    2023-08-25 10:30:29
  • 原生js编写autoComplete插件

    2024-05-09 10:37:43
  • Mysql 5.7.19 免安装版遇到的坑(收藏)

    2024-01-19 12:18:39
  • 详解Go语言中的Slice链式操作

    2024-05-22 10:29:05
  • 解决在Python编辑器pycharm中程序run正常debug错误的问题

    2023-09-09 09:58:39
  • 简述python Scrapy框架

    2022-07-13 06:19:30
  • asp之家 网络编程 m.aspxhome.com