我爱编程

JieBa分词与词云

2018-05-27  本文已影响0人  Hana_5f9b

目录

方法概述

分词——Jieba

词频分析与词云

方法概述

1、使用歌曲《山僧》的歌词片段为素材,进行分析。

经纶笔触 颓秃不至丰秀 可是笔墨处 抽丝做额首 又一生熬骨相诱 朱门清幽 你选如何走

使用jieba对文档进行分词操作。

参考:jieba官方文档

2、使用在线词频分析工具——图悦,制作词频统计和云图。

数据:《纪念日》(炎亚纶音乐专辑)全部歌词

分词——Jieba

(一)分词

1、在云服务上安装jieba

pip install jieba

2、编写shanseng.py文件

# encoding=gbk

import jieba

seg_list = jieba.cut("经纶笔触 颓秃不至丰秀 可是笔墨处 抽丝做额首 又一生熬骨相诱 朱门清幽 你选如何走", cut_all=True)

print("Full Mode: " + "/ ".join(seg_list))  # 全模式

seg_list = jieba.cut("经纶笔触 颓秃不至丰秀 可是笔墨处 抽丝做额首 又一生熬骨相诱 朱门清幽 你选如何走", cut_all=False)

print("Default Mode: " + "/ ".join(seg_list))  # 精确模式

seg_list = jieba.cut("经纶笔触 颓秃不至丰秀 可是笔墨处 抽丝做额首 又一生熬骨相诱 朱门清幽 你选如何走") 

print(", ".join(seg_list))      # 默认是精确模式,据说可以新词识别

seg_list = jieba.cut_for_search("经纶笔触 颓秃不至丰秀 可是笔墨处 抽丝做额首 又一生熬骨相诱 朱门清幽 你选如何走") 

print(", ".join(seg_list))  # 搜索引擎模式

3、在服务器上运行shanseng.py程序

使用XShell命令行进入到jieba目录下,输入:

python shanseng.py

4、运行结果

得到几种不同模式下的划分结果:

全模式 精确模式 默认精确模式 搜索引擎模式

对比发现,全模式下,jieba分词的划分结果最细致。其他三种模式在本例中划分结果相同。

(二)添加自定义词典

新词的出现会影响划分结果的准确性,如“颓秃”、“额首”、“熬骨”、“相诱”等。这些词都是默认词库中没有包含到的词,可以通过添加自定义词典的方式,来增强分词的准确性。

1、在jieba文件夹下新建userdict.txt

文档中编写希望设置添加的新词

颓秃

额首

熬骨

相诱

2、新建shanseng1.py文件

# encoding=utf-8

from __future__ import print_function, unicode_literals

import sys

sys.path.append("../")

import jieba

jieba.load_userdict("userdict.txt")

import jieba.posseg as pseg

test_sent = (

"经纶笔触 颓秃不至丰秀 可是笔墨处 抽丝做额首 又一生熬骨相诱 朱门清幽 你选如何走"

)

words = jieba.cut(test_sent)

print('/'.join(words))

3、执行

python shanseng1.py

4、执行结果

出现错误:

自定义词表必须以utf-8形式保存

解决方法:以utf-8格式另存文件

另存为utf-8编码格式的txt文件

再次运行:

自定义词典结果

从分词的结果可以看出,我们提前设置的新词,如“颓秃”、“额首”等,已经被分在了一起。

5、动态修改词典

修改shanseng1.py:

# encoding=gbk

from __future__ import print_function, unicode_literals

import sys

sys.path.append("../")

import jieba

jieba.load_userdict("userdict.txt")

import jieba.posseg as pseg

jieba.add_word('如何走')

test_sent = (

"经纶笔触 颓秃不至丰秀 可是笔墨处 抽丝做额首 又一生熬骨相诱 朱门清幽 你选如何走

"

)

words = jieba.cut(test_sent)

print('/'.join(words))

执行:

动态添加词典结果

可以看出,在上一步操作的基础上,“如何走”也被分在了一起。

(三)关键词提取

1、基于 TF-IDF 算法的关键词抽取

在jieba文件夹下新建news_extract_tags.py文件:

# -*- coding: utf-8 -*-

import sys

sys.path.append('../')

import jieba

from jieba import analyse  # 引入TF-IDF关键词抽取接口

from optparse import OptionParser

text = "经纶笔触 颓秃不至丰秀 可是笔墨处 抽丝做额首 又一生熬骨相诱 朱门清幽 你选如何走"

# 原始文本内容

keywords = analyse.extract_tags(text)

print ("keywords:")

for keyword in keywords:

    print (keyword + "/")

运行:

python news_extract_tags.py

关键词提取结果

关键词提取所使用停止词

意义:“在”、“里面”、“也”、“的”、“它”、“为”等无索引意义的副词、介词、冠词……

jieba.analyse.set_stop_words(file_name) # file_name为自定义语料库的路径

在jieba文件夹下的新建stop.txt

在其中添加人名和数字(一行一个词):

可是

如何

不至

在news_extract_tags.py中添加一句:

jieba.analyse.set_idf_path(“stop.txt”) 

执行结果:停止词不再出现在关键词中

词频分析与词云

工具:在线词频分析工具图悦

图悦分析结果
上一篇 下一篇

猜你喜欢

热点阅读