赞
踩
源码请到:自然语言处理练习: 学习自然语言处理时候写的一些代码 (gitee.com)
说到中文分词,就不得不提jieba分词器,虽然已经很久没有更新,但是依然很好用
5.1 jieba分词器安装
jieba分词器安装十分方便,输入命令就可安装成功
pip install jieba
5.2 分词工具
jieba分词器提供了中文的分词工具,并且有精确模式和全模式两种模式,默认是精确模式
示例:
- # 分词工具
- seg_list = jieba.cut('我来到北京清华大学', cut_all=True)
- print('全模式:' + '/'.join(seg_list))
- seg_list = jieba.cut('我来到北京清华大学', cut_all=False)
- print('精确模式:' + '/'.join(seg_list))
- seg_list = jieba.cut('他来到网易杭研究大厦')
- print(','.join(seg_list))
5.3 添加自定义词典
jieba还可以添加自定义的词典,使分词更精准
示例:
- # 添加自定义词典
- text = '故宫的著名景点包括乾清宫、太和殿和黄琉璃瓦等'
- seg_list = jieba.cut(text, cut_all=True)
- print('全模式:' + '/'.join(seg_list))
- seg_list = jieba.cut(text, cut_all=False)
- print('精确模式:' + '/'.join(seg_list))
默认词典中不识别乾清宫和黄琉璃瓦,现在添加词典加入这两个词
- jieba.load_userdict("./data/mydict.txt")
- # jieba.add_word("乾清宫")
- text = '故宫的著名景点包括乾清宫、太和殿和黄琉璃瓦等'
- seg_list = jieba.cut(text, cut_all=True)
- print('全模式:' + '/'.join(seg_list))
- seg_list = jieba.cut(text, cut_all=False)
- print('精确模式:' + '/'.join(seg_list))
5.4 关键字提取
根据词典中词语的频率,可以提取关键词
示例:
- # 关键字抽取
- seg_list = jieba.cut(text, cut_all=False)
- print(u"分词结果:")
- print('/'.join(seg_list))
- tags = jieba.analyse.extract_tags(text, topK=5)
- print(u"关键字:")
- print(' '.join(tags))
- tags = jieba.analyse.extract_tags(text, topK=5, withWeight=True)
- for word, weight in tags:
- print(word, weight)
5.5 词性标注
jieba也可以标注词性
示例:
- # 词性标注
- words = pseg.cut('我爱北京天安门')
- for word, flag in words:
- print('%s %s' % (word, flag))
5.6 词云展示
利用xxx的发言稿作为语料,进行分词并且统计频率最后画在一张图上体现出来关键字
示例
- # 词云展示
- data = {}
- with open('./data/19Congress.txt', 'r', encoding='utf-8') as f:
- text = f.read()
- with open('./data/stopwords.txt', encoding='utf-8') as file:
- stopwords = [line.strip() for line in file]
- seg_list = jieba.cut(text, cut_all=False)
- for word in seg_list:
- if len(word) >= 2:
- if not data.__contains__(word):
- data[word] = 0
- data[word] += 1
- print(data)
- my_wordclod = WordCloud(
- background_color='white', # 背景颜色
- max_words=400, # 设置最大实现的字数
- font_path=r'./data/SimHei.ttf', # 设置字体格式,不设置显示不了中文
- mask=imread('./data/mapofChina.jpg'), # 指定在什么图片上画
- width=1000,
- height=1000,
- stopwords=set(stopwords)
- ).generate_from_frequencies(data)
-
- plt.figure(figsize=(18,16))
- plt.imshow(my_wordclod)
- plt.axis('off')
- plt.show()
- my_wordclod.to_file('result.jpg')

其中原图是一张纯色的中国地图
运行后的结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。