美文网首页我爱编程
JieBa分词与词云

JieBa分词与词云

作者: Hana_5f9b | 来源:发表于2018-05-27 23:14 被阅读0次

    目录

    方法概述

    分词——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”) 

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

    词频分析与词云

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

    图悦分析结果

    相关文章

      网友评论

        本文标题:JieBa分词与词云

        本文链接:https://www.haomeiwen.com/subject/dylijftx.html