• python -jieba 安装+分词+定位


    1、jieba 库安装


      方法1:全自动安装(容易失败):easy_install jieba 或者 pip install jieba / pip3 install jieba
      方法2:半自动安装(推荐):先下载 https://github.com/fxsjy/jieba ——>解压文件——>运行CMD——>(1)先定位到解压文件路径(注意:路径前有个磁盘字符cd/d)——>(2)再输入 python setup.py install 回车安装(或者pip install setup.py 格式)(如果回车后,出现错误:“python不是内部或者外部命令”,则是缺失系统环境变量,需要添加一下。见之前的文章:如何添加系统环境变量?


      方法3:手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录

    2、分词 |标签 


      2.1 jieba 特点

        (1)支持三种分词模式:

        • 精确模式(默认),试图将句子最精确地切开,适合文本分析(不在词典中的新词也可以被识别);
        • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
        • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率(查全率),适合用于搜索引擎分词。   

        (2)支持繁体分词

        (3)支持自定义词典

        (4)MIT 授权协议

      2.2 jieba 主要功能

      • jieba.cut (或jieba.lcut方法接受三个输入参数: 需要分词的字符串;cut_all =False/True 参数用来控制是否采用全模式;HMM =False/True参数 用来控制是否使用 HMM 模型。
      • jieba.cut_for_search(或jieba.lcut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。
      • jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射

        注意:

        (1)待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8。
        (2)jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode)。而用jieba.lcut 以及 jieba.lcut_for_search 直接返回 list

      2.3 分词

      代码示例:

     1 ###d导入模块
     2 import jieba
     3 
     4 seg_list = jieba.cut("我硕士毕业于中国科学院计算所,后来来到了杭州网易杭研大厦")  # 默认是精确模式
     5 print('【默认模式】:'+"/ ".join(seg_list))
     6 
     7 seg_list = jieba.cut("我硕士毕业于中国科学院计算所,后来来到了杭州网易杭研大厦", cut_all=False)
     8 print("【精确模式】: " + "/ ".join(seg_list))  # 精确模式
     9 
    10 seg_list = jieba.cut("我硕士毕业于中国科学院计算所,后来来到了杭州网易杭研大厦", cut_all=True)
    11 print("【全模式】: " + "/ ".join(seg_list))  # 全模式
    12 
    13 seg_list = jieba.cut_for_search("我硕士毕业于中国科学院计算所,后来来到了杭州网易杭研大厦")  # 搜索引擎模式
    14 print('【搜索引擎模式】:'+"/ ".join(seg_list))

      输出:

    【默认模式】:我/ 硕士/ 毕业/ 于/ 中国科学院/ 计算所/ ,/ 后来/ 来到/ 了/ 杭州/ 网易/ 杭研/ 大厦
    【精确模式】: 我/ 硕士/ 毕业/ 于/ 中国科学院/ 计算所/ ,/ 后来/ 来到/ 了/ 杭州/ 网易/ 杭研/ 大厦
    【全模式】: 我/ 硕士/ 毕业/ 于/ 中国/ 中国科学院/ 科学/ 科学院/ 学院/ 计算/ 计算所/ / / 后来/ 来来/ 来到/ 了/ 杭州/ 杭州网/ 网易/ 杭/ 研/ 大厦
    【搜索引擎模式】:我/ 硕士/ 毕业/ 于/ 中国/ 科学/ 学院/ 科学院/ 中国科学院/ 计算/ 计算所/ ,/ 后来/ 来到/ 了/ 杭州/ 网易/ 杭研/ 大厦

       2.4 分词&标签

    ### 分词+标签
    import jieba
    import jieba.posseg as pseg
    
    words=pseg.cut("社会主义明天会更好")
    for w in words:
        print(w.word,w.flag)

      输出:

    社会主义 n
    明天 t
    会 v
    更好 d

    3、定位


       代码示例:

    import jieba
    
    global g_mode
    g_mode="default"
    
    result = jieba.tokenize(u'杭州的房价越来越高了。')  # result = jieba.tokenize(test_sent,mode=g_mode,HMM=False)
    for t in result:
        print("word %s		 start: %d 		 end:%d" % (t[0],t[1],t[2])) 

      输出:

    1 word 杭州         start: 0          end:2
    2 word 的         start: 2          end:3
    3 word 房价         start: 3          end:5
    4 word 越来越         start: 5          end:8
    5 word 高         start: 8          end:9
    6 word 了         start: 9          end:10
    7 word 。         start: 10          end:11

     

    4、分词&词频统计(可通用)


    ### 分词 ####
    
    # 导入jieba分词库
    import jieba 
    
    
    # 打开文件
    f=open('C:/Users/Administrator/Desktop/test.txt','r')  # 以读的模式打开文件
    all_words=[]
    
    
    # 读取&分词
    for s in f.readlines():            
    #     line_words=jieba.lcut(s) # 采用精准分词,返回一个list
        line_words=jieba.lcut_for_search(s) # 采用搜索分词,返回一个list
        all_words.extend(line_words)
    f.close()
    print('【分词】' ,all_words)  
    
    all_words.sort()
    print('【分词排序】',all_words)
    
    set_all_words=list(set(all_words))
    set_all_words.sort()
    print('【分词去重】',set_all_words)
    
    # 将分词好的写入另一个文件
    f2=open('C:/Users/Administrator/Desktop/key_words.txt','w') # 以写的模式打开另一个文件
    join_all_words ='/n'.join(all_words)   # 以指定的字符将列表中的字符连接成字符串
    print('【写入另一文件】',join_all_words)
    f2.write(join_all_words) # 写入
    
    f2.close()

      输出:

    【分词】 ['杭州', '州市', '杭州市', '昨天', '举办', '', '一场', '比赛', '', '', '', '杭州', '杭州人', '', '']
    【分词排序】 ['', '一场', '举办', '', '', '', '州市', '昨天', '', '杭州', '杭州', '杭州人', '杭州市', '比赛', '']
    【分词去重】 ['', '一场', '举办', '', '', '', '州市', '昨天', '', '杭州', '杭州人', '杭州市', '比赛', '']
    【写入另一文件】 。/n一场/n举办/n了/n你/n吗/n州市/n昨天/n是/n杭州/n杭州/n杭州人/n杭州市/n比赛/n?
    ### 词频统计 ###
    
    # 方法一:统计各分词在源文件中出现的频数
    def f_key_words_cnts(file_name,key_words):
        d=dict.fromkeys(key_words,0) #创建个字典
        f=open(file_name,'r')
        for s in f.readlines():
            for name in d:
                d[name]=d[name]+s.count(name)
        return d
        f.close()
    
    r=f_key_words_cnts('C:/Users/Administrator/Desktop/test.txt',set_all_words) # 注意,输入参数分别是源文件&去重后的分词列表
    print(r)

      输出:

    {'': 1, '一场': 1, '举办': 1, '': 1, '': 1, '': 1, '州市': 1, '昨天': 1, '': 1, '杭州': 2, '杭州人': 1, '杭州市': 1, '比赛': 1, '': 1}

     

     其他分词&词频统计工具拓展:


    语料库在线,自动分词&词性标注&词频统计:http://corpus.zhonghuayuwen.org/CpsWParser.aspx

    词云统计(推荐):http://cloud.niucodata.com/

    制作词云图:https://wordart.com/create

    图悦:http://www.picdata.cn/picdata/index.php#

  • 相关阅读:
    有关云计算的思考
    转载:args build and execute command lines from standard input
    云计算时代来临
    How to check the service availble
    反射小结
    JOptionPane用法java
    eclipse快捷键调试总结
    javascript 控制 html元素 显示/隐藏
    "ORA00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效"的快速解决方法
    麻辣豆腐与编码
  • 原文地址:https://www.cnblogs.com/zwt20120701/p/12084510.html
Copyright © 2020-2023  润新知