实例8 --- jieba库及文本词频统计

2020-06-10  本文已影响0人  glRu

基本统计值计算

举一反三

    -获取多个数据:从控制台获取多个不确定数据的方法

    -分隔多个函数:模块化设计方法

    -充分利用函数:充分利用Python提供的内置函数

jieba库

    -中文文本需要通过分词获得单个的词语

    -jieba是优秀的中文分词第三方库,需要额外安装

    -jieba库提供三种分词模式,最简单只需掌握一个函数

jieba分词的原理

    -利用一个中文词库,确定中文字符之间的关联概率

    -中文字符间概率大的组成词组,形成分词结果

    -除了分词,用户还可以添加自定义的词组

jieba分词的三种模式

    -精确模式:把文本精确的切分开,不存在冗余单词

    -全模式:把文本中所有可能的词语都扫描出来,有冗余

    -搜索引擎模式:在精确模式基础上,对长词再次切分

jieba库常用函数

"文本词频统计"问题分析

-英文文本:Hamet分析词频

https://python123.io/resources/pye/hamlet.txt

-中文文本:《三国演义》分析人物

https://python123.io/resources/pye/threekingdoms.txt

1. "Hamlet英文词频统计"实例代码

# CalHamletV1.py

def get_text():

    txt= open('hamlet.txt', 'r').read()

    txt= txt.lower()

    for chin '!"#$%&()+,-./:;<=>?@[\\]^_{|}~':

        txt= txt.replace(ch, " ")

    return txt

hamletTxt= get_text()

words= hamletTxt.split()

counts= {}

for wordin words:

    counts[word] = counts.get(word, 0) + 1

items= list(counts.items())

items.sort(key=lambda x:x[1], reverse=True)

for iin range(10):

    word, count= items[i]

    print("{0:<10}{1:>5}".format(word, count))

"《三国演义》人物出场统计"实例代码

# CalThreeKingdomV2.py

import jieba

txt= open('threekingdom.txt', 'r',encoding="utf-8").read()

exclude= {'将军', '却说', '荆州', '二人', '不可', '不能', '如此'}

words= jieba.lcut(txt)

counts= {}

for wordin 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 wordin exclude:

    del counts[word]

items= list(counts.items())

items.sort(key=lambda x: x[1], reverse=True)

for iin range(10):

    word, count= items[i]

    print("{0:<10}{1:>5}".format(word, count))

词频统计举一反三 

    -《红楼梦》、《西游记》、《水浒传》…

    -政府工作报告、科研论文、新闻报道…

    -进一步呢?未来还有词云…

上一篇下一篇

猜你喜欢

热点阅读