nlp入门之jieba分词器

源码请到:自然语言处理练习: 学习自然语言处理时候写的一些代码 (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')

 其中原图是一张纯色的中国地图

 运行后的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值