python的jieba库使用

python

1.jieba库

jieba是python中一个重要的第三方中文分词函数库。
jieba库常用的分词函数

函数描述
jieba.cut(s)精确模式,返回一个可迭代的数据类型
jieba.cut(s,cut_all=True)全模式,输出文本s中所有可能的单词
jieba.cut_for_search(s)搜索引擎模式,适合搜索引擎建立索引的分词结果
jieba.lcut(s)精确模式,返回一个列表类型
jieba.luct(s,cut_all=True)全模式,返回一个列表类型
jieba.lcut_for_search(s)搜索引擎模式,返回一个列表类型
jieba.add_word(w)向分词词典中添加新词w

实例:文本词频统计
该问题的IPO描述:
输入:从文件中读取一篇文章
处理:采用字典数据结构统计词语出现频率
输出:文章中最常出现的10个单词及出现次数

  1. 英文文本统计词频
    # 停用词 
    excludes={"the","and","to","of","you","a","i","my","in"}
    # 读入文本
    def getText():
        txt=open("hamlet.txt","r").read()
        txt.lower()
        for ch in '!@#$%^&*()_+-={}[]\|:"<>?;,./':
            txt=txt.replace(ch," ")#将标点符号替换成空格
        return txt
    hamletTxt=getText()
    # 分词
    words=hamletTxt.split()
    # 统计词频
    counts={} ##字典类型,存储词频
    for word in words:
        counts[word]=counts.get(word,0)+1
    # 去除停用词
    for word in excludes:
        del(counts[word])
    # 排序
    items=list(counts.items())#转换成列表,便于排序
    items.sort(key=lambda x:x[1],reverse=True)
    """
    sort()排序函数:对列表元素进行排序
    reverse可选。reverse=True 将对列表进行降序排序。
    key可选。指定排序标准的函数。 
    """
    # 输出
    for i in range(10):
        word,count=items[i]
        print("{0:<10}{1:>5}".format(word,count))
    
  2. 中文文本统计词频
    #导入jieba库
    import jieba 
    # 停用词
    excludes={"将军","却说","荆州","二人","不可","不能","如此","如何","商议","主公"}
    # 读入文本
    txt=open("三国演义.txt","r",encoding='utf-8').read()
    # 分词
    words=jieba.lcut(txt)
    # 统计词频
    counts={}
    for word in words:
        if len(word)==1: # 排除单个字符的分词结果
            continue
        elif word=="诸葛亮" or word=="孔明曰":
            rword="孔明" # 同一个人合并
        elif word=="关公" or word=="云长":
            rword="关羽"
        elif word=="玄德" or word=="玄德曰":
            rword="刘备"
        elif word=="孟德" or word=="丞相":
            rword="曹操"
        else:
            rword=word # 其他词照搬
        counts[rword]=counts.get(rword,0)+1
    # 去除停用词
    for word in excludes:
        del(counts[word])
    # 排序
    items=list(counts.items())
    items.sort(key=lambda x:x[1],reverse=True)
    # 输出
    for i in range(5):
        word,count=items[i]
        print("{0:{2}<10}{1:{2}>5}".format(word,count,chr(12288))) #chr(12288)用于对其文本
    
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物往fd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值