美文网首页
jieba分词学习

jieba分词学习

作者: _dami | 来源:发表于2017-05-30 01:40 被阅读0次

    1、分词数据源
    基于之前采集公共管理学院老师的数据,一共得到10个字段。本次分词是对大文本字段进行分词,因此将所得到的老师的数据去掉5个基本字段,对简介(intro)、研究成果(output)、获奖情况(award)、科研项目(project)、人才培养(training)5个大文本字段进行分词,最终制作词云图,本次制作词云图利用的工具为tagxedo-creator,这是一个在线制作词云图的工具,可以对中文数据进行统计分析。

    数据示例.png

    将上次采集的老师的数据保存为csv格式的文件,删除基本信息的5列,在将csv文件另存为txt格式,在利用jieba分词可直接导入需分词的txt数据文档。

    2、jieba学习
    基于jieba的教程,尝试了相关代码的测试。
    首先,安装jieba:pip install jieba
    在venv下创建jieba文件夹,编写test1.py

    # encoding=utf-8
    from __future__ import print_function, unicode_literals
    import sys
    sys.path.append("../")
    import jieba
    jieba.load_userdict("/root/venv/jieba/userdict.txt")
    import jieba.posseg as pseg
    
    jieba.add_word('石墨烯')
    jieba.add_word('凱特琳')
    jieba.del_word('自定义词')
    
    test_sent = (
    "李小福是创新办主任也是云计算方面的专家; 什么是八一双鹿\n"
    "例如我输入一个带“韩玉赏鉴”的标题,在自定义词库中也增加了此词为N类\n"
    "「台中」正確應該不會被切開。mac上可分出「石墨烯」;此時又可以分出來凱特琳了。"
    )
    words = jieba.cut(test_sent)
    print('/'.join(words))
    
    print("="*40)
    
    result = pseg.cut(test_sent)
    
    for w in result:
        print(w.word, "/", w.flag, ", ", end=' ')
    
    print("\n" + "="*40)
    
    terms = jieba.cut('easy_install is great')
    print('/'.join(terms))
    terms = jieba.cut("python 的正则表达式是好用的")
    print('/'.join(terms))
    
    print("="*40)
    # test frequency tune
    testlist = [
    ('今天天气不错', ('今天', '天气')),
    ('如果放到post中将出错。', ('中', '将')),
    ('我们中出了一个叛徒', ('中', '出')),
    ]
    
    for sent, seg in testlist:
        print('/'.join(jieba.cut(sent, HMM=False)))
        word = ''.join(seg)
        print('%s Before: %s, After: %s' % (word, jieba.get_FREQ(word), jieba.suggest_freq(seg, True)))
        print('/'.join(jieba.cut(sent, HMM=False)))
        print("-"*40)
    

    运行结果:(python "/root/venv/jieba/test1.py")


    分词示例结果.png

    知识点:
    jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式(默认为精确模式);HMM 参数用来控制是否使用 HMM 模型。
    jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。
    jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径。
    使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典。
    使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。

    3、教师数据分词
    test3.py:

    # encoding=utf-8
    from __future__ import print_function, unicode_literals
    import sys
    sys.path.append("../")
    import jieba
    jieba.load_userdict("/root/venv/jieba/userdict2.txt")
    import jieba.posseg as pseg
    import jieba.analyse as anl
    import re
    import codecs
    
    #导入停用词表
    stopwords = {}.fromkeys([ line.rstrip() for line in open('/root/venv/jieba/stopwordlist.txt') ])
    
    def seg_sentence(sentence):
        wordList = jieba.cut(sentence.strip())
        outstr = ''
        for word in wordList:
            if word not in stopwords:
                if len(word) > 1:  # 去掉长度小于1的词
                    if word != '\t':
                        outstr += word
                        outstr += "/"
        return outstr
    
    
    infile = open('/root/venv/jieba/content_detail.txt', 'r')
    outfile = open('/root/venv/jieba/result3_2.txt', 'w')
    for line in infile:
        line_seg = seg_sentence(line)  
        outfile.write(line_seg.encode('utf-8'))
    outfile.close()
    infile.close()
    

    userdict2.txt:

    补充中
    四川大学
    

    stopwordlist.txt:

    !
    "
    #
    $
    %
    &
    '
    (
    )
    *
    +
    ,
    -
    --
    .
    ..
    ...
    ......
    ...................
    ./
    .一
    记者
    数
    年
    月
    日
    时
    分
    秒
    /
    //
    的
    training
    ,
    award
    project
    intro
    output
    

    content_detail.txt:(部分)

        姜晓萍教授先后承担公共行政、公共政策、行政法学、中国政府与政治、地方政府创新等课程。曾获全国高校霍英东教育基金优秀青年教师奖,四川省教学名师、四川省优秀教学成果一等奖等。
    
              ","
                 ?1、2016年获教育部长江学者奖励计划特聘教授
    
        2、2015年获宝钢优秀教师奖
    
    
        3、2014年获国家哲学社会科学成果文库
    
    
        4、2014年获四川省第十六次哲学社会科学优秀成果一等奖、二等奖
    
    
        5、2014年获四川省第七届高等教育教学成果奖二等奖
    
    
        6、2013年第六届高等学校科学研究优秀成果奖三等奖
    
    
        7、2012年四川大学优秀教材奖二等奖
    
    
        8、2012年四川大学教学成果一等奖
    
    
        9、2010年获第五届“四川杰出创新人才奖”
    
    
        10、2010年获四川省第六届高等教育教学成果奖三等奖
    
    
        11、2010年获四川省第十四次哲学社会科学优秀成果二等奖
    
    
        12、2009年获四川省教学名师奖
    
    
        13、2008年获中国行政管理学会第四届行政管理科学优秀成果二等奖
    

    result3_2.txt:(部分)

    补充中/补充中/补充中/补充中/补充中/补充中/补充中/补充中/补充中/补充中/补充中/补充中/补充中/补充中/补充中/姜晓萍/教授/先后/承担/公共行政/公共政策/行政法学/中国政府/政治/地方/政府/创新/课程/全国/高校/霍英东/教育/基金/优秀青年/教师/四川省/教学/名师/四川省/优秀/教学/成果/一等奖/2016/教育部/长江/学者/奖励/计划/特聘/教授/2015/宝钢/优秀教师/2014/国家/哲学/社会科学/成果/文库/2014/四川省/第十六次/哲学/社会科学/优秀成果/一等奖/二等奖/2014/四川省/第七届/高等教育/教学/成果奖/二等奖/2013/第六届/高等学校/科学研究/优秀/成果奖/三等奖/2012/四川大学/优秀/教材/二等奖/2012/四川大学/教学/成果/一等奖/2010/第五届/四川/杰出/创新/人才/10/2010/四川省/第六届/高等教育/教学/成果奖/三等奖/11/2010/四川省/第十四次/哲学/社会科学/优秀成果/二等奖/12/2009/四川省/教学/名师/13/2008/中国/行政管理学/第四届/行政/管理科学/优秀成果/二等奖/14/2008/四川省/第十三次/哲学/社会科学/优秀成果/二等奖/15/2008/四川省/教育厅/人文/社科/一等奖/16/2007/四川省/第十二次/哲学/社会科学/优秀成果/三等奖/17/2006/成都市/第八次/哲学/社会科学/优秀成果/二等奖/18/2005/四川省/优秀/教学/成果/一等奖/19/2005/四川省/第十一次/哲学/社会科学/优秀成果/三等奖/20/2005/建设/成都/杰出/贡献奖/21/2004/四川省/教育厅/第五届/人文/社科/优秀/科研成果/二等奖/22/2004/四川省/第四届/政务/调研/二等奖/23/2004/第十二届/娇子/成都/十杰/青年/称号/24/2004/四川省/哲学/社会科学/优秀成果/三等奖/25/2003/中国/行政管理学/优秀论文/26/2003/中国/行政管理学/2003/优秀论文/其他/27/1998/全国/高校/霍英东/教育/基金/青年教师/主持/科研项目/主持/国家/社科/基金/重大项目/深化/干部
    

    4、制作词云图(tagxedo-creator)
    导入分词文件:

    导入文件.png

    可以看到在旁边的菜单栏进行颜色、形状、字体等的调整。

    去掉无用的词:


    去掉无用的词.png

    词云图:

    分词词云图.jpg

    相关文章

      网友评论

          本文标题:jieba分词学习

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