字典类型操作、jieba库使用及文本词频统计

这篇具有很好参考价值的文章主要介绍了字典类型操作、jieba库使用及文本词频统计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

字典类型及操作

字典的定义

理解“映射”

映射是一种键(索引)和值(数据)的对应

字典类型是“映射”的体现

键值对:键是数据索引的扩展

字典是键值对的集合,键值对之间无序

采用大括号{}和dict()创建,键值对用冒号: 表示

{<键1>:<值1>,<键2>:<值3>}

jieba词频统计,python,服务器,java,html

可以通过键拿到值

我们在之前的的集合中说声明一个空集合要使用set(),而不是直接用{}这是因为,如果使用{}默认为集合

字典的处理函数及方法

jieba词频统计,python,服务器,java,html 

jieba词频统计,python,服务器,java,html

注意keys()和values()返回的是一种字典的key类型,这些类型是可以用for in的方式做遍历,但是不能当做列表类型来操作

jieba词频统计,python,服务器,java,html

jieba词频统计,python,服务器,java,html 这里要注意的是:如果我们使用get()找键时没有找到,那就返回第二个设置的参数,否则返回值 

# 定义空字典d
d={}
# 向d新增2个键值对元素
d[0]=1
d[1]=2
# 修改第2个元素
d[1]=3
# 判断字符"c"是否是d的键
"c" in d
# 计算d的长度
len(d)
# 清空d
d.clear()

Jieba库的使用

jieba库概述:jieba是优秀的中文分词第三方库

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

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

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

jieba库的安装

(cmd命令行) pip install jieba

jieba词频统计,python,服务器,java,html

jieba分词的原理 

jieba分词依靠中文词库

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

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

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

jieba库使用说明

 精确模式、全模式、搜索引擎模式

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

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

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

jieba词频统计,python,服务器,java,html

jieba词频统计,python,服务器,java,html 

jieba分词要点 jieba.lcut(s)

文本词频统计--英文

需求:一篇文章,出现了哪些词?哪些词出现得最多?

该怎么做呢? 这里要分中文文本 和 英文文本

 英文文本:Hamet 分析词频

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

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

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

jieba词频统计,python,服务器,java,html

 文章来源地址https://www.toymoban.com/news/detail-790915.html

这段代码的作用是读取一个名为“hamlet.txt”的文本文件,将其转换为小写字母,并将文本中的特殊字符替换为空格。然后,将文本中的单词分割,并统计每个单词出现的次数。最后,按照单词出现次数从高到低的顺序,输出出现次数最多的前10个单词及其出现次数。

具体实现过程如下:

  1. 定义函数 getText(),它打开名为“hamlet.txt”的文本文件,并将文件内容读取到变量 txt 中。

  2. 将 txt 中的所有字符转换为小写字母。

  3. 遍历字符串 txt 中的每个字符,如果字符是特殊字符,则将其替换为空格。

  4. 返回处理后的文本 txt

  5. 调用 getText() 函数,将处理后的文本赋值给变量 hamletTxt

  6. 将 hamletTxt 中的单词通过空格分割,并将每个单词的出现次数保存在字典 counts 中。

  7. 将 counts 转换为列表 items,并按照每个元素的第二个值(即单词出现次数)从高到低排序。

  8. 遍历 items 列表的前10个元素,将每个元素的第一个值(即单词)和第二个值(即出现次数)输出到屏幕上。其中,{0:<10} 表示输出第一个值(即单词)时左对齐占用10个字符的位置,{1:>5} 表示输出第二个值(即出现次数)时右对齐占用5个字符的位置。

文本词频统计--中文

import jieba
txt = open("threekingdoms.txt", "r", encoding='utf-8').read()
words  = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(15):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))

这段代码的作用是读取一个名为“threekingdoms.txt”的文本文件,使用结巴分词库将文本中的中文分词,并统计每个词语出现的次数。最后,按照词语出现次数从高到低的顺序,输出出现次数最多的前15个词语及其出现次数。

具体实现过程如下:

  1. 导入结巴分词库 jieba

  2. 打开名为“threekingdoms.txt”的文本文件,并将文件内容读取到变量 txt 中。注意需要指定文件编码为 utf-8

  3. 使用结巴分词库 jieba 中的 lcut() 函数对文本进行分词,并将分词结果保存在列表 words 中。

  4. 创建一个空字典 counts,用于保存每个词语的出现次数。

  5. 遍历列表 words 中的每个词语,如果该词语的长度为1,则跳过该词语;否则,将该词语的出现次数加1,并保存到字典 counts 中。

  6. 将字典 counts 转换为列表 items,并按照每个元素的第二个值(即词语出现次数)从高到低排序。

  7. 遍历 items 列表的前15个元素,将每个元素的第一个值(即词语)和第二个值(即出现次数)输出到屏幕上。其中,{0:<10} 表示输出第一个值(即词语)时左对齐占用10个字符的位置,{1:>5} 表示输出第二个值(即出现次数)时右对齐占用5个字符的位置。

jieba词频统计,python,服务器,java,html

但是存在一个bug,将词频与人物并没有相关联 

import jieba
excludes = {"将军","却说","荆州","二人","不可","不能","如此"}
txt = open("threekingdoms.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(10):
    word, count = items[i]

中文文本分词

使用字典表达词频

扩展程序解决问题

面向问题改造程序

这段代码的功能是读取《三国演义》文本文件,使用jieba分词库对文本进行分词,并统计关键词出现的频率。在统计关键词的过程中,对一些关键词进行了简化和替换,如“孔明曰”简化为“孔明”,“玄德曰”简化为“刘备”,“丞相”替换为“曹操”。

该代码的面向问题改造思路如下:

  1. 问题:需要统计《三国演义》中出现频率最高的关键词。

  2. 解决方案:使用jieba分词库对文本进行分词,并统计关键词出现的频率,然后按照出现频率从高到低排序,选取出现频率最高的前10个关键词。

  3. 实现步骤:

  • 读取《三国演义》文本文件,使用jieba分词库对文本进行分词。
  • 统计分词结果中各个关键词出现的频率,将结果存储在字典counts中。
  • 对一些关键词进行简化和替换,如“孔明曰”简化为“孔明”,“玄德曰”简化为“刘备”,“丞相”替换为“曹操”。
  • 删除一些无意义的关键词,如“将军”、“却说”、“荆州”、“二人”、“不可”、“不能”、“如此”。
  • 将counts转换为列表items,并按照出现频率从高到低排序。
  • 选取出现频率最高的前10个关键词,并输出结果。

jieba词频统计,python,服务器,java,html

 

到了这里,关于字典类型操作、jieba库使用及文本词频统计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 统计文本词频的几种方法(Python)

    目录 1. 单句的词频统计 2. 文章的词频统计 方法一:运用集合去重方法 方法二:运用字典统计 方法三:使用计数器 词频统计是自然语言处理的基本任务,针对一段句子、一篇文章或一组文章,统计文章中每个单词出现的次数,在此基础上发现文章的主题词、热词。 思路:首

    2024年02月04日
    浏览(33)
  • 使用python进行字频统计和词频统计

    读取给定的语料库,根据制表符’t’划分其文本与标签,将获得的文本仅保留汉字部分,并按字划分,保存在列表中,至少使用一种方法,统计所有汉字的出现次数,并按照从高到低的顺序排序;至少使用一种方法,统计所有字频,按照从高到低的顺序排序;至少使用一种

    2024年02月06日
    浏览(33)
  • python 基础教程:使用jieba库对文本进行分词

    Python的jieba库是一个中文分词工具,它可以将一段中文文本分割成一个一个的词语,方便后续的自然语言处理任务,如文本分类、情感分析等。jieba库使用了基于前缀词典的分词方法,能够处理中文的各种复杂情况,如歧义词、新词等。它还提供了多种分词模式,如精确模式、

    2024年02月05日
    浏览(34)
  • python 基础知识:使用jieba库对文本进行分词

    前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 一、jieba库是什么? Python的jieba库是一个中文分词工具,它可以将一段中文文本分割成一个一个的词语,方便后续的自然语言处理任务,如文本分类、情感分析等。 jieba库使用了基于前缀词典的分词方法,能够处理中文的各种复

    2024年02月10日
    浏览(34)
  • 使用python统计《三国演义》人物词频,看看罗贯中笔下谁的出场次数最多

    “滚滚长江东逝水,浪花淘尽英雄”。近来读《三国演义》,忽然想看看到底哪位英雄在书中提到的最多,于是就想用分词算法实现一下。 网上也确实有相关的案例,作为参考,自己又重写并优化了一遍。 思路 下载《三国演义》txt文档 使用jieba分词算法对文档进行分词处理

    2024年02月06日
    浏览(30)
  • Python统计词频的几种方法

    本文介绍python统计词频的几种方法,供大家参考 目录 方法一:运用集合去重方法 方法二:运用字典统计 方法三:使用计数器 说明:运用集合对文本字符串列表去重,这样统计词汇不会重复,运用列表的counts方法统计频数,将每个词汇和其出现的次数打包成一个列表加入到

    2024年02月13日
    浏览(32)
  • python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。

    注意:本篇所讲的文件操作,都是对后缀为.txt、.json文件进行的操作。 1、json其实就是一个 文件的格式 ,像.txt一样,json也是一个 纯文本文件 。 与.txt不同的是, json常用来存放有键值对的数据,写法上像python中的字典一样, 但与字典不同的是 ,字典是一个数据类型,且

    2024年02月16日
    浏览(33)
  • Python英文词频统计(哈姆雷特)程序示例

    今天继续给大家介绍Python相关知识,本文主要内容是Python英文词频统计程序示例,主要是对英文文本——《哈姆雷特》进行分词。 想要对《哈姆雷特》进行英文单词词频统计,那么我们首先需要拿到《哈姆雷特》的原文,将之存储为本地的txt文档,然后使用Python打开该文件,

    2024年02月04日
    浏览(59)
  • Python统计中文词频的四种方法

    统计中文词频是Python考试中常见的操作,由于考察内容较多,因此比较麻烦,那么有没有好的方法来实现呢?今天,我们总结了四种常见的中文词频统计方法,并列出代码,供大家学习参考。 中文词频统计主要是通过open()打开文本,然后read()方法读取后,采用结巴分词(jieb

    2024年02月11日
    浏览(41)
  • Python读取Word统计词频输出到Excel

    1.安装依赖的包 ``` \\\"# 读取docxn\\\",     \\\"!pip install python-docxn\\\",     \\\"!pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docxn\\\",     \\\"# 中英文分词n\\\",     \\\"!pip install jieban\\\",     \\\"!pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieban\\\",     \\\"# 输出到exceln\\\",     \\\"!pip install pandas\\\"     \\\"!pip

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包