使用jieba模块进行自然语言处理并制作词云

需要使用python的jieba模块,安装可以使用pip install jieba
关于jieba,支持三种分词模式:
精确模式,试图将句子最精确地切开,适合文本分析;
全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
支持繁体分词
支持自定义词典

1。三种模式

import jieba
sen = '今天来到了北京天安门看追风筝的人'
words1 = jieba.cut_for_search(sen)#搜索引擎模式,false为精准模式,默认为全模式
words2 = jieba.cut(sen,cut_all=False)#精准模式
words3 = jieba.cut(sen,cut_all=True)#默认模式,全模式
words4 = jieba.cut(sen)#默认模式
for i in words1:
    print(i)
print('........')
for i in words2:
    print(i)
print('........')
for i in words3:
    print(i)
print('........')
for i in words4:
    print(i)

输出结果如下,对比分析,默认模式是全模式,全模式将所有可能成为的词均拆分,搜索引擎模式在精准模式的基础上再对词进行细化。:

今天
来到
了
北京
天安
天安门
看
追
风筝
的
人
........
今天
来到
了
北京
天安门
看
追
风筝
的
人
........
今天
来到
了
北京
天安
天安门
看
追风
风筝
的
人
........
今天
来到
了
北京
天安门
看
追
风筝
的
人

2。词性

import jieba.posseg
sen = '今天来到了北京天安门看追风筝的人'
words4 = jieba.posseg.cut(sen)#默认模式
for i in words4:
    print(i.word+' '+i.flag)#获得词+词性

结果:

今天 t
来到 v
了 ul
北京 ns
天安门 ns
看 v
追 v
风筝 n
的 uj
人 n

各个词性字母的含义可以参考:jieba词性表
可以使用jieba.load_userdict('[文件词目录]')加载字典
使用jieba.analyse.extract_tags()获取词频,如:
爬取丰乳肥臀这本书,进行分析其词频

text_path = open('/Users/wangxingfan/Desktop/1.txt').read()
tag = jieba.analyse.extract_tags(text_path,20)
print(tag)

结果:

['上官', '母亲', '司马', '金童', '来弟', '一样', '哑巴', '地说', '一个', '女人', '乳房', '鸟儿', '我们', '吕氏', '大姐', '起来', '看到', '娜塔莎', '他们', '身体']

3。词云

使用urllib库爬取莫言老师作品《丰乳肥臀》并制作词云。

#-*- coding:utf-8 -*-
#author:M10
import urllib.request
import re
import time
import random
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba.analyse
header = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'
}
path = open('/Users/wangxingfan/Desktop/1.txt', 'wb')
for j in range(1,84):
    url = 'http://t.icesmall.cn/book/3/424/'+str(j)+'.html'
    request = urllib.request.Request(url,headers=header)
    data = urllib.request.urlopen(request).read().decode('utf-8','ignore')
    pat = '<p><p>(.*?)</p> </div>'
    text = re.findall(pat,data)
    try:
        zi = text[0].split('</p><p></p><p>')
    except:
        pass
    for i in range(0,len(zi)):
        path.write(zi[i].encode('utf-8'))
    time.sleep(random.randint(1,3))
path.close()

#词云
text_path = open('/Users/wangxingfan/Desktop/1.txt').read()
wordlist_after_jieba = jieba.cut(text_path)#使用默认的精准模式
wl_space_split = " ".join(wordlist_after_jieba)

cloud = WordCloud(
        #设置字体,不指定就会出现乱码
        font_path=r'/Library/Fonts/Songti.ttf',
        #允许最大词汇
        max_words=2000,
        #最大号字体
        max_font_size=40
    )
my_wordcloud = WordCloud().generate(wl_space_split)
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

结果出现中文不能显示,查找问题得知:使用中文词库作为参数添加到font_path即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值