目录
方法概述
分词——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格式另存文件
再次运行:
从分词的结果可以看出,我们提前设置的新词,如“颓秃”、“额首”等,已经被分在了一起。
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”)
执行结果:停止词不再出现在关键词中
词频分析与词云
工具:在线词频分析工具图悦