您的位置:首页 > 编程语言 > Python开发

Python jieba中文分词的使用

2020-04-07 12:34 1401 查看

Python jieba 中文分词的使用

使用jieba分词来实现《本草纲目》里面常用药材。

#得出不需要的常用词首先你要下载一份《本草纲目》.txt,这样程序才能正常运行
import jieba
txt=open(‘本草纲目.txt’,‘rb’).read()
words=jieba.lcut(txt)
counts={}
print(words)
for word in words:
if len(word)==1:
continue

下面是完整代码:
首先我们导入结巴包和时间包
import jieba
import time
#排除这些不需要的词
frist = time.perf_counter()#计数运行时间的值
txt = open(“本草纲目.txt”, “r”, encoding=“utf-8”).read()
ex = {“一页”, “一只”, “水内”, “淹死”, “每服”, “共研”,
“妇女”, “做成”, “常取”,“有效”, “照常”, “每日”, “遍身”, “一把”, “即可”, “小火”, “一匙”, “昼夜”,
“一两”,“一钱”,“二钱”,“研为”,“二两”, “释名”, “一天”, “三次”, “又方”, “小儿”,
“分为”, “研细”, “半两”, “少许”,“一升”, “一碗”, “小便”, “心服”,
“捣烂”, “三钱”, “服下”, “四两”, “一次”, “酒送”, “不止”, “患处”,
“二次”, “煮成”, “研末”, “三两”, “一个”, “10”, “肿痛”, “煎成”,“一斤”,
“无毒”, “主治”, “气味”, “三十”, “产后”, “五十”, “不通”, “亦可”,“丸子”
, “去皮”, “温服”, “敷涂”, “晒干”, “汤送”,“饮服”, “调匀”, “11”, “五钱”, “三升”,
“取出”,“送服”,“烧灰”,“12”,“开水”,“见效”,“一起”,“调服”,“焙干”,“吐血”,“一夜”, “加酒”,“送服” }#这些词语是跑了多次程序获得
words = jieba.lcut(txt)#直接生成一个列表
jishu = {}#字典或集合

#除去1个字和3个字的词语
for word in words:
if len(word) == 1:
continue#发现一个字的直接跳过
elif len(word)==3:
continue#发现3个字词语直接跳出
else:
rword = word
jishu[rword] = jishu.get(rword, 0) + 1#构造键值对,+1统计每次次数
for word in ex:
del jishu[word]
items = list(jishu.items())#字典转为列表
items.sort(key=lambda x: x[1], reverse=True)#从大网小排序#(k,v)
#输出本次扫描时间
print(“本草纲目中主要药材”)
for i in range(10):
word, jishu = items[i]
print("{0:<23}{1:>5}次".format(word, jishu))
timeresult = time.perf_counter() - frist#返回计数运行时间的值
print(“运行时间为{:.2f}s”.format(timeresult ))

给出运行结果

下面给出词云图的完整代码

import wordcloud #导入词云库
import numpy as np#存储数据矩阵
import matplotlib.pyplot as plt#绘图库
import PIL#图片库
import jieba#中文分词库
import re#正则
with open(r’本草纲目.txt’,encoding=‘utf8’) as f:
text1 = f.readlines()#读数据
image1 = PIL.Image.open(r’蝴蝶.jpg’)#导入图片
MA = np.array(image1)
shuxing = wordcloud.WordCloud(font_path = ‘C:\Windows\Fonts\STFANGSO.TTF’,max_words=50,mask = MA,height= 700,width=700,background_color=‘white’,repeat=False,mode=‘RGBA’) #设置词云图对象属性
st1 = re.sub(’[,。、“”‘ ’"]’,’’,str(text1)) #使用正则表达式将符号替换掉。
conten = ’ ‘.join(jieba.lcut(st1)) #此处分词之间要有空格隔开,联想到英文书写方式,每个单词之间都有一个空格。
con = shuxing.generate(conten)#生成最后绘图
plt.imshow(con)#显示
plt.axis(“off”)#去掉坐标轴
plt.savefig(r’本草纲目.png’)#保存到相应文件夹

###作者时雨
###欢迎留言

  • 点赞
  • 收藏
  • 分享
  • 文章举报
时雨Python 发布了2 篇原创文章 · 获赞 0 · 访问量 83 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: