博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jieba分词Python简单实现
阅读量:6257 次
发布时间:2019-06-22

本文共 3783 字,大约阅读时间需要 12 分钟。

  hot3.png

上一章分享了IK Analyzer中文分词及词频统计基于Hadoop的MapReducer框架Java实现。这次将与大家分享Jieba中文分词Python简单实现,由于Jieba分词是基于词频最大切分组合,所以不用做词频统计,可以直接得到其关键字。

1、安装jieba

安装方式可以查看博主的中文分词工具(),此处不再赘述。

2、简单实例实现:

#导入jieba

import jieba

# ---------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))  # 搜索引擎模式

3、采用精确模式对hong.txt做分词并写入文件hong2.txt

# coding:UTF8

'''
: ZD
'''
import sys
#修改编码之前,Python2.7系统默认编码是ascii
print(sys.getdefaultencoding())
#修改编码为utf-8
reload(sys)
sys.setdefaultencoding('utf-8')
print(sys.getdefaultencoding())

import jieba, codecs

fpr = codecs.open("hong.txt","r")

lines = fpr.readlines()
resultStr=""
for line in lines:
    resultStr += line

#精确模式分词,但没有统计结果并排序     

seg_list = jieba.cut(resultStr, cut_all=False)
fpr.close()

print("开始写文件")

fpw = codecs.open("hong2.txt", "w")
result=""
for segStr in seg_list:
    result=segStr+" \\ "
    fpw.write(result)
fpw.close()
print("写文件结束")

一部分结果展示:

\ 上卷 \   \ 第一回 \   \   \ 甄士隐 \ 梦幻 \ 识通灵 \   \ 贾雨村 \ 风尘 \ 怀 \ 闺秀 \  \  \   \   \ 此 \ 开卷 \ 第一回 \ 也 \ . \ 作者 \ 自云 \ : \ 因曾 \ 历过 \ 一番 \ 梦幻 \ 之后 \ , \ 故 \ 将 \ 真事 \ 隐去 \ , \ 而 \ 借 \ " \ 通灵 \ " \ 之 \ 说 \ , \ 撰此 \ 《 \ 石头记 \ 》 \ 一书 \ 也 \ . \ 故曰 \ " \ 甄士隐 \ " \ 云云 \ . \ 但书中 \ 所记 \ 何事 \ 何人 \ ? \ 自又云 \ : \ “ \ 今 \ 风尘碌碌 \ , \ 一事无成 \ , \ 忽 \ 念及 \ 当日 \ 所有 \ 之 \ 女子 \ , \ 一一 \ 细考 \ 较 \ 去 \ , \ 觉其 \ 行止 \ 见识 \ , \ 皆 \ 出于 \ 我 \ 之上 \ . \ 何 \ 我 \ 堂堂 \ 须眉 \ , \ 诚不若 \ 彼 \ 裙钗 \ 哉 \ ? \ 实愧 \ 则 \ 有余 \ , \ 悔 \ 又 \ 无益 \ 之大 \ 无可如何 \ 之日 \ 也 \ ! \ 当 \ 此 \ , \ 则 \ 自欲 \ 将 \ 已往 \ 所赖 \ 天恩祖 \ 德 \ , \ 锦衣 \ 纨绔 \ 之 \ 时 \ , \ 饫甘餍肥 \ 之 \ 日 \ , \ 背 \ 父兄 \ 教育 \ 之恩 \ , \ 负 \ 师友 \ 规谈 \ 之德 \ , \ 以至 \ 今日 \ 一技无成 \ , \ 半生 \ 潦倒 \ 之罪 \ , \ 编述 \ 一集 \ , \ 以告 \ 天下人 \ : \ 我 \ 之 \ 罪固 \ 不免 \ , \ 然 \ 闺阁 \ 中本 \ 自 \ 历历 \ 有人 \ , \ 万 \ 不可 \ 因 \ 我 \ 之 \ 不肖 \ , \ 自护己 \ 短 \ , \ 一并 \ 使 \ 其 \ 泯灭 \ 也 \ . \ 虽 \ 今日 \ 之茅 \ 椽蓬 \ 牖 \ , \ 瓦灶 \ 绳床 \ , \ 其 \ 晨夕 \ 风露 \ , \ 阶柳庭花 \ , \ 亦 \ 未有 \ 妨 \ 我 \ 之 \ 襟怀 \ 笔墨 \ 者 \ . \ 虽 \ 我 \ 未学 \ , \ 下笔 \ 无文 \ , \ 又 \ 何妨 \ 用 \ 假语 \ 村言 \ , \ 敷 \ 演出 \ 一段 \ 故事 \ 来 \ , \ 亦可 \ 使 \ 闺阁 \ 昭传 \ , \ 复可悦 \ 世之目 \ , \ 破人 \ 愁闷 \ , \ 不 \ 亦 \ 宜乎 \ ? \ " \ 故曰 \ " \ 贾雨村 \ " \ 云云 \ . \

5、如果想得到出现频率最高的词语,则可以用 jieba.analyse.extract_tags(sentence, topK) 方法

PS:其中sentence为待提取的文本,topK为返回几个TF/IDF权重最大的关键词,默认值为20

# coding:UTF8

'''
: ZD
'''
import sys
#修改编码之前,Python2.7系统默认编码是ascii
print(sys.getdefaultencoding())
#修改编码为utf-8
reload(sys)
sys.setdefaultencoding('utf-8')
print(sys.getdefaultencoding())

import jieba, codecs

fpr = codecs.open("hong.txt","r")

lines = fpr.readlines()
resultStr=""
for line in lines:
    resultStr += line

#精确模式分词,但没有统计结果并排序     

seg_list = jieba.cut(resultStr, cut_all=False)
fpr.close()

print("开始写文件")

fpw = codecs.open("hong2.txt", "w")
result=""
for segStr in seg_list:
    result=segStr+" \\ "
    fpw.write(result)
fpw.close()
print("写文件结束")

部分结果展示

宝玉贾母凤姐王夫人老太太奶奶那里什么贾琏太太姑娘众人平儿说道如今一面你们袭人宝钗只见黛玉这里我们一个听见出来凤姐儿薛姨妈

 

分享踩过的坑

问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

原因:python2.7是基于ascii去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))。

解决方案1:

import sys

reload(sys)
sys.setdefaultencoding('utf-8')

如果eclipse报错为undefined variable from import:setdefaultencoding,是因为eclipse的pydev插件原因,可以不管此错误,照样运行。

解决方案2:()

在Python安装目录下的Lib/site-packages目录中,新建一个sitecustomize.py文件

import sys

reload(sys)
sys.setdefaultencoding('utf-8')
try:
    import apport_python_hook
except ImportError:
    pass
else:
    apport_python_hook.install()

然后在eclipse中可以查看到改变已经生效

import sys

print(sys.getdefaultencoding())

写在最后:本人初学Python,也初次接触jieba分词工具,如有错误,望指出纠正。

转载于:https://my.oschina.net/eager/blog/673422

你可能感兴趣的文章
91. 最短Hamilton路径【状压DP】
查看>>
【转】程序员中"5%神话";刘未鹏:为什么你应该写博客
查看>>
给网站弄个百度地图
查看>>
Ubuntu新装系统要装软件
查看>>
《ListBox》———何如实现ListBox下拉刷新和到底部自动加载
查看>>
【hdu - 1009】
查看>>
iscc2016-basic-find-to-me
查看>>
poj 1149 -- PIGS
查看>>
调试抓包
查看>>
php中const与define的使用区别
查看>>
项目管理
查看>>
opencv 3.2图像矩(Image Moments)
查看>>
09.21,枚举
查看>>
网站高可用架构--二
查看>>
LinuxShell脚本之利用rsync+ssh实现Linux文件系统远程备份
查看>>
反射应用
查看>>
第三组 用例文档+功能说明书+技术说明书
查看>>
前端小知识--区分get和post请求
查看>>
webpack报错Cannot read property 'presetToOptions' of undefined
查看>>
eas之action的创建
查看>>