jieba的使用

举报
毛利 发表于 2021/07/15 07:50:24 2021/07/15
【摘要】 jieba是一个在中文自然语言处理中用的最多的工具包之一,它以分词起家,目前已经能够实现包括分词、词性标注以及命名实体识别等多种功能。既然Jieba是以分词起家,我们自然要首先学习Jieba的中文分词功能。Jieba提供了三种分词模式: 精确模式 : 在该模式下,Jieba会将句子进行最精确的切分 全模式 : 把句子中所有可以成词的词语都扫描出来,优点在于该模式非...

jieba是一个在中文自然语言处理中用的最多的工具包之一,它以分词起家,目前已经能够实现包括分词、词性标注以及命名实体识别等多种功能。既然Jieba是以分词起家,我们自然要首先学习Jieba的中文分词功能。Jieba提供了三种分词模式:

  • 精确模式 : 在该模式下,Jieba会将句子进行最精确的切分

  • 全模式 : 把句子中所有可以成词的词语都扫描出来,优点在于该模式非常快,缺点也很明显,就是不能有效解决歧义的问题

  • 搜索引擎模式 :在精确模式的基础上,对长词进行再次切分,该模式适合用于搜索引擎构建索引的分词

import 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))

str = "我是一个中国人"
word1 = jieba.cut_for_search(str)  # 搜索引擎模式
for item in word1: print(item)
OUT:
全模式: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
精确模式: 我/ 来到/ 北京/ 清华大学
我, 来到, 北京, 清华大学
我
是
一个
中国
人

  

有些结巴词库并没有该词,所以有时需要添加自定义词典
添加自定义词典

# mydict.txt 内容
# 乾清宫 1 n  # 词 分成1个 词性
# 黄琉璃瓦 1 n
jieba.load_userdict("./data/mydict.txt") #需UTF-8,可以在另存为里面设置
#也可以用jieba.add_word("乾清宫")
text = "故宫的著名景点包括乾清宫、太和殿和黄琉璃瓦等"
# 全模式
seg_list = jieba.cut(text, cut_all=True)
print(u"[全模式]: ", "/ ".join(seg_list))
# 精确模式
seg_list = jieba.cut(text, cut_all=False)
print(u"[精确模式]: ", "/ ".join(seg_list))
OUT:
[全模式]:  故宫/ 的/ 著名/ 著名景点/ 景点/ 包括/ 乾清宫/ 清宫/ / / 太和/ 太和殿/ 和/ 黄琉璃瓦/ 琉璃/ 琉璃瓦/ 等
[精确模式]:  故宫/ 的/ 著名景点/ 包括/ 乾清宫/ 、/ 太和殿/ 和/ 黄琉璃瓦/ 等

  

关键词抽取

import jieba.analyse
# 用于analyse这个包
seg_list = jieba.cut(text, cut_all=False)
print (u"分词结果:")
print ("/".join(seg_list))
text = "故宫的著名景点包括乾清宫、太和殿和黄琉璃瓦等"
#获取关键词
tags = jieba.analyse.extract_tags(text, topK=5)  #前5 个
print (u"关键词:")
print (" ".join(tags))
OUT:
分词结果:
故宫/的/著名景点/包括/乾清宫/、/太和殿/和/黄琉璃瓦/等
关键词:
著名景点 乾清宫 黄琉璃瓦 太和殿 故宫

  

打印关键词

tags = jieba.analyse.extract_tags(text, topK=5, withWeight=True)  #显示比重
for word, weight in tags: print(word, weight)
OUT:
著名景点 2.3167796086666668
乾清宫 1.9924612504833332
黄琉璃瓦 1.9924612504833332
太和殿 1.6938346722833335
故宫 1.5411195503033335

  

词性标注

import jieba.posseg as pseg
 
words = pseg.cut("我爱北京天安门")
for word, flag in words: print("%s %s" % (word, flag))
OUTL
我 r
爱 v
北京 ns
天安门 ns

  

词云展示

import jieba
from wordcloud import WordCloud
from scipy.misc import imread
from collections import Counter
import matplotlib.pyplot as plt

data={}

text_file = open('./data/19Congress.txt','r',encoding='utf-8')
text = text_file.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_wordcloud = WordCloud( background_color='white',  #设置背景颜色 max_words=400,  #设置最大实现的字数 font_path=r'./data/SimHei.ttf',  #设置字体格式,如不设置显示不了中文 mask=imread('./data/mapofChina.jpg'), #指定在什么图片上画 width=1000, height=1000, stopwords = stopwords
).generate_from_frequencies(data)

plt.figure(figsize=(18,16))
plt.imshow(my_wordcloud)
plt.axis('off')
plt.show()  # 展示词云
my_wordcloud.to_file('result.jpg')
text_file.close()

  

在这里插入图片描述

文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。

原文链接:maoli.blog.csdn.net/article/details/88913295

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。