精华内容
下载资源
问答
  • Python进行词频统计
    千次阅读
    2020-04-04 00:15:35

    英文文本词频统计

    def getText():
        txt = open("hamlet.txt","r").read()#读取文件
        txt = txt.lower() #把文本全部变为小写
        for ch in '|"#$%&^()*+,-./:;<>=?@[]\\_‘{}~':#把特殊字符变为空格
            txt = txt.replace(ch," ")
        return txt
    
    
    hamletText = getText()
    words = hamletText.split()#把文件变为一个单词列表
    counts = {}#定义字典
    for word in words:
        counts[word] = counts.get(word,0) + 1
    items = list(counts.items())#把字典变为列表
    items.sort(key=lambda x:x[1],reverse = True)#按照词频降序排列,要记住,常用
    for i in range(10):#输出词频前10的单词
        word, count = items[i]
        print("{0:<10}{1:>5}".format(word,count))
    

    中文文本词频统计

    import jieba
    txt = open("threekingdoms.txt","r",encoding="utf-8").read()
    words = jieba.lcut(txt)#利用jieba库进行分词
    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))
    
    import jieba
    txt = open("threekingdoms.txt","r",encoding="utf-8").read()
    excludes = {"将军","却说","荆州","二人","不可","不能","如此"}
    words = jieba.lcut(txt)#利用jieba库进行分词
    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 = "刘备"
        else:
            reword = word
            counts[rword] = 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)
    for i in range(15):
        word, count = items[i]
        print("{0:<10}{1:>5}".format(word,count))
    
    更多相关内容
  • 利用python实现词频统计

    千次阅读 2021-10-16 18:31:42
    词频统计软件: 1)从文本中读入数据:(文件的输入输出) 2)不区分大小写,去除特殊字符。 3)统计单词 例如:about :10 并统计总共多少单词 4)对单词排序。出现次数 5)输出词频最高的10个单词和次数 6)把统计...

    这是我们老师的作业 代码中都有注释

    要求

    词频统计软件:
    1)从文本中读入数据:(文件的输入输出)
    2)不区分大小写,去除特殊字符。
    3) 统计单词 例如:about :10 并统计总共多少单词
    4)对单词排序。出现次数
    5)输出词频最高的10个单词和次数
    6)把统计结果存入文本


    1.文件的读取,区分大小写,去除特殊字符

    import re
    
    def getword():
         # 读取文件
         f=open('read.txt','r',encoding='utf-8')
         # 将大写转化成小写
         word=f.read().lower()
         # 关闭文件
         f.close()
         #利用正则除去特殊字符   |\符+
         list=re.split('\s+|\,+|\.+|\!+|\:+|\?+|\;+|\(+|\)+|\-+|\_+|\=+|\++|\“+|\、+|\/+|\{+|\}+|\”+|\:+|\。+|\“+|\[+|\]+|\【+|\】+|\—+|\%+|\"+',word)
         # 遍历列表 去除列表中的空格
         i = 0
         while i < len(list):
              if list[i] == '':
                   list.remove(list[i])
                   i -= 1
              i += 1
    
         # for a in list:
         #      if a == "":
         #         list.remove(a)
        #用for循环的话如果存在多个空字符串 其列表会随时发生变化,导致无法正常删除空字符串 所以在使用for…in循环遍历列表时,最好不要对元素进行增删操作
    
    #  对于others'优化 如果最后一个字符是‘就将’其去掉
         for i in range(len(list)):
              l=list[i]
              if list[i][-1] == "'":
                   list[i] = list[i][:-1]
         return list
    
    
    
    
    
    

    2. 统计,排序

    from getfilewords import getword
    
    def statistics():
        dict={}  #定义一个空的字典,在后面的运算中逐步添加数据
        words=getword()
        for word in words: #遍历整个列表
            if word in dict.keys():  #判断当前单词是否已经存在 dict.keys()是已存进字典中的单词
                # 补充:keys() 方法用于返回字典中的所有键;
                # values() 方法用于返回字典中所有键对应的值;
                #详情见Test1
                dict[word]=dict[word]+1  #在当前单词的个数上加 1
            else:
                dict[word]=1  #当前单词第一次出现时 会把单词写入dict字典里 格式为 ‘单词’=1
    #排序
        w_order=sorted(dict.items(),key=lambda x:x[1],reverse=True)
    # print(dict.items())
    # dict.items()返回的是列表
    # 按字典集合中,每一个元组的第二个元素排列。
    # sorted会对dict.items()这个list进行遍历,把list中的每一个元素,也就是每一个tuple()当做x传入匿名函数lambda x:x[1],函数返回值为x[1]
    # reverse属性True为降序 False为升序
        return w_order #返回排序后的列表

    3.结果写入文本

    from WordStatistics import statistics
    def writefile():
        w_order=statistics()
        f = open('result.txt', 'w',encoding='utf-8')
        print("文章单词总个数:",+len(getword()),file=f)
        print("文章单词总个数:", +len(getword()))
    
        # 写入文件
        print("词频最高的10个单词和次数",file=f)
        print("词频最高的10个单词和次数")
    
        w_order10=w_order[:10]#将列表的前十位提取并且遍历 输出key(单词)和values(次数)
        for key,values in w_order10:
            print(key,':',values,file=f)
            print(key, ':', values)
    
        #遍历列表中的所有数据
        print("统计结果",file=f)
        for key,values in w_order:
            print(key,':',values,file=f)
        f.close()#关闭文件

    4.程序入口

    import os
    
    from writefile import writefile
    
    print("词频统计软件")
    print("正在统计中。。。")
    print("统计成功,结果保存到result.txt")
    writefile()
    print("程序运行结束")
    os.system("pause")

    5.运行截图

    这是需要统计的文本

    运行程序

     运行结果

     最后成功实现!

    展开全文
  • 本文介绍一种快速生成关键词-词频统计-词云生成的办法,作为Python数据分析初级技能,除基本运行环境外无需其他软件或工具,且流程搭建成功后可重复利用,可极大提升相似事务的处理效率。 一、操作环境 1.1 ...

    本文介绍一种快速生成关键词-词频统计-词云生成的办法,作为Python数据分析初级技能,除基本运行环境外无需其他软件或工具,且流程搭建成功后可重复利用,可极大提升相似事务的处理效率。

    一、操作环境

    1.1 搭建Python运行环境,如尚未搭建建议下载安装Anaconda,并搭配Jupyter Notebook作为IDE

    1.2 需加载pandas,jieba, pyecharts等常用包,直接输入pip install+包名称可能会很慢,建议搜索豆瓣镜像文件快速安装

    1.3 数据源可以是现有文件或通过爬虫手段获取,需保证有足够的数据量

    二、原始数据获取

    本文以京东商城热销的"iphone 13"机型为例,从购买者发布的文字评论中提取关键词进行统计,所以原始数据即评论原文。通过爬虫手段获取最近1000条评论,并保存至本地csv文件,以下为字段预览:

    三、Pandas读取文件

    3.1 导入本次所需要用到的包:

    import pandas as pd
    import jieba
    import pyecharts.options as opts
    from pyecharts.charts import WordCloud

    读取csv文件:

    data = pd.read_csv(r'(文件路径).csv')
    data.head()

     成功读取数据:

    查看评论数据是否异常:

    data['评价内容'].describe()

     

    一共1000条评论,没有重复(文字重复有极大的刷单嫌疑)

    pandas能够用data[字段名]的方法选中特定字段,也可以通过loc[]选中特定行,比如[商品评价]字段中第1行数据:

    data['评价内容'].loc[0] #0代表第1行数据

     

    有了这个核心功能,才能在后面用循环语句把一个个支离破碎的单词放在一个列表里进行词频统计

    四、分词

    Jieba是目前最流行的中文分词组件,比如一句很常见的话:

    “我是一个热爱祖国的中国人”

    通过jieba可以根据中文语义把句子切分并提取出可作为关键词的单词:

    jieba.lcut('我是一个热爱祖国的中国人')

    Output[]: ['我', '是', '一个', '热爱祖国', '的', '中国', '人'] 

    有了这样的关键词列表,后续做词频统计会更加方便

    五、获取词频

    5.1 获取全部的关键词列表

           由于[商品评论]一共有1000行(本例子算少的),需要用jieba.lcut对每一行的评论原文都进行分词,因此使用for循环语句,并且用List的extend功能获取完整的关键词List:

    review_all = [] #先做一个空List,用来装下所有关键词
    for i in range(999): #已知一共1000条数据
        review = jieba.lcut(data['评价内容'].loc[i])
        review_all.extend(review)
    review_all

    Output[]:

    ['iPhone13',
     '手机',
     '收到',
     '了',
     ',',
     '粉色',
     '也',
     '太',
     '好看',
     '了',
    '吧',

    ...]

     
    

    5.2 对关键词总表进行单词词频统计

      

    首先指定一份“非关键词”名单,比如逗号","可能出现的频次很高,但很明显,这不是我们需要的,可以用一个excludes表列出这类不需要的名单:

    excludes = {",",":","“","。","”","、",";"," ","!","?"," ","\n", "iphone13", "13", "12"}
    

    利用遍历对关键词出现次数做累计,并输出频次前100的关键词:

    counts= {}
    cloud_data = []
    excludes = {",",":","“","。","”","、",";"," ","!","?"," ","\n", "iphone13", "13", "12"}
    for word in review_all:
        if len(word) == 1: #不使用单字作为关键词
            continue
        elif word in excludes:
            continue
        else:
            rword = word
        counts[rword] = counts.get(rword, 0) + 1
    
    items = list(counts.items())
    items.sort(key=lambda x:x[1],reverse = True)
    for i in range(100):
        word, count = items[i]
        cloud_data.extend([word, count])
    cloud_data
    

    Output[]:

    ['拍照',
     930,
     '效果',
     844,
     '速度',
     839,
     '运行',
     792,
     '屏幕',
     758,
     '外观',
     731,
     '音效',
     631,
    ...]

     

    六、生成词云

      做词云图的方法有很多,这里推荐使用Pyecharts自带的WordCloud包,在Jupyter

    Notebook可以直接输出动态html在页面上,可以灵活调整各项参数(参考官网说明书)。唯一的问题在于,上文我们得到的是一个包含关键词和频次的List,而Pyecharts词云如果要将列表作为参数直接使用,需要元组数据,即[(“关键词”:频次)]结构,因此需要多一步操作,可以使用for循环解决:

     

    L = [] #做一个新的空List用来装下我们要用的元组
    for i in range(199): #由于我们取Top100关键词+频次,所以一共是200个元素
        if i % 2 == 0:#偶数位[i]是我们需要的关键词,[i+1]即对应的频次
            a = cloud_data[i]
            b = cloud_data[i+1]
            tuple_x = tuple([cloud_data[i],cloud_data[i+1]])#List转元组
            L.append(tuple_x) #这里不能用extend,只能用append
    L
    

    Output[]:

    [('拍照', 930),
     ('效果', 844),
     ('速度', 839),
     ('运行', 792),
     ('屏幕', 758),
     ('外观', 731),
     ('音效', 631),
     ('非常', 625),
     ('外形', 593),
     ('手机', 531),
     ('待机时间', 502),
     ('不错', 441),
     ('苹果', 395),
     ('好看', 365),
     ('流畅', 353),
     ('喜欢', 318),
    ...]

     

     然后将L这个元组列表传到WordCloud()生成云图:

    c = (
        WordCloud()
        .add("", L, word_gap = 0, word_size_range=[10, 50], mask_image = r'(自定义图片路径)', rotate_step = 90, width = 2000, height = 2000, is_draw_out_of_bound = False)
        .set_global_opts(title_opts=opts.TitleOpts(title=""), 
                        )
    )
    c.render_notebook()

    Output: 

    公众号水印是本人的,非转载,部分代码片段参考网友的,循环以及List转tuple那段是自己手撕出来的,并尽可能说明原理,希望对初学者有帮助。 

     

    展开全文
  • python实现词频统计

    千次阅读 2021-07-30 19:23:05
    python实现词频统计 词频统计就是输入一段句子或者一篇文章,然后统计句子中每个单词出现的次数。 那么,这个在python中其实是很好实现的,下面我们来看看具体是怎样实现的,里面又用到了哪些知识呢? 输入一段话...

    用python实现词频统计

    词频统计就是输入一段句子或者一篇文章,然后统计句子中每个单词出现的次数。

    那么,这个在python中其实是很好实现的,下面我们来看看具体是怎样实现的,里面又用到了哪些知识呢?

    输入一段话,统计每个字母出现的次数

    先来讲一下思路:

    例如给出下面这样一句话

    Love is more than a word
    it says so much.
    When I see these four letters,
    I almost feel your touch.
    This is only happened since
    I fell in love with you.
    Why this word does this,
    I haven’t got a clue.

    那么想要统计里面每一个单词出现的次数,思路很简单,遍历一遍这个字符串,再定义一个空字典count_dict,看每一个单词在这个用于统计的空字典count_dict中的key中存在否,不存在则将这个单词当做count_dict的键加入字典内,然后值就为1,若这个单词在count_dict里面已经存在,那就将它对应的键的值+1就行

    下面来看代码:

    #定义字符串
    sentences = """           # 字符串很长时用三个引号
    Love is more than a word
    it says so much.
    When I see these four letters,
    I almost feel your touch.
    This is only happened since
    I fell in love with you.
    Why this word does this,
    I haven't got a clue.
    """
    #具体实现
    #  将句子里面的逗号去掉,去掉多种符号时请用循环,这里我就这样吧
    sentences=sentences.replace(',','')   
    sentences=sentences.replace('.','')   #  将句子里面的.去掉
    sentences = sentences.split()         # 将句子分开为单个的单词,分开后产生的是一个列表sentences
    # print(sentences)
    count_dict = {}
    for sentence in sentences:
        if sentence not in count_dict:    # 判断是否不在统计的字典中
            count_dict[sentence] = 1
        else:                              # 判断是否不在统计的字典中
            count_dict[sentence] += 1
    for key,value in count_dict.items():
        print(f"{key}出现了{value}次")
    

    输出结果是这样:

    在这里插入图片描述

    怎么样,大家get到了吗?赶紧试试

    如果对你有帮助,不要忘记点赞评论关注加收藏哦!

    展开全文
  • 编译原理实验一:利用Python实现词频统计 对类似的文档实现简单的词频统计 代码如下: # -*- coding: utf-8 -*- """ Created on Fri Feb 21 14:16:28 2020 @author: lenovo """ import numpy as np def gettxt():...
  • 利用python词频统计

    万次阅读 多人点赞 2018-05-15 07:52:28
    方法一:利用python字典的方式 speech_etxt = ''' My fellow citizens: I stand here today humbled by the task before us, grateful for the trust you've bestowed, mindful of the sacrifices borne by our ...
  • 如何利用Python进行文本词频统计

    千次阅读 2019-03-02 00:00:00
    欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。问题描述Python在自然语言处理这个方面,有其天然的优...
  • Python如何进行词频统计?3种方法教给你

    千次阅读 多人点赞 2021-01-14 14:36:08
    以下文章来源于快学Python ,作者小小明 Python爬虫、数据分析、网站开发等案例教程视频免费在线观看 https://space.bilibili.com/523606542 数据准备 importjieba withopen("D:/hdfs/novels/天龙八部....
  • 本文介绍了python实现简单中文词频统计示例,分享给大家,具体如下: 任务 简单统计一个小说中哪些个汉字出现的频率最高 知识点 1.文件操作 2.字典 3.排序 4.lambda 代码 import codecs import matplotlib.pyplot ...
  • 统计文件的字符数: 只需要统计Ascii码,汉字不需考虑 空格,水平制表符,换行符,均算字符 统计文件的单词总数,单词:以英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。 英文字母: A-Z,a-z ...
  • 使用Python进行英文词频统计

    万次阅读 多人点赞 2019-03-11 16:54:42
    对一篇英文文章进行词频统计重点在于内容去噪和归一化,可用split()进行分词。本文以《飘》为例,统计词频最高的前十位。 1.读取文件,通过lower()、replace()函数将所有单词统一为小写,并用空格替换特殊字符。 ...
  • 利用python词频计算(word-count)

    千次阅读 2020-12-04 08:47:56
    主要针对英文文本做出词频计算,因为英文是用空格作为词语分割的。中文需要用到分词的库。下面就用奥巴马的一片演讲做词频计算1,分析的文本speech_etxt = '''My fellow citizens: I stand here today humbled by ...
  • 统计单词词频,能够按照单词次数排列,统计英语高频词。可用于自我学习,对于想快速提升英语的可以快速把握所有高频词。打蛇打七寸,把握关键点。也可用于培训机构,针对考试高频词,快速提分,
  • 浅析如何用Python进行中英文词频统计 主要思路: 读取数据 数据预处理 分词 词频统计 结果显示 词频统计 TF-IDF(term frequency–inverse document frequency)词频–反转文件频率,是...
  • Python】三国演义词频统计,wordcloud实现,内含有词频统计和实现词云的两份代码,还有三国演义的文本文档,感谢下载
  • 这是一个经典的字典练习题,本文实现的是较为简易的方法,通过控制台进行操作。 输出要求: 按照英文单词出现的次数从高到低打印出所有单词,且要考虑次数相同时的情况。 示例: 字典内容已经写好,且没有出现次数...
  • Python 中文词频统计

    千次阅读 2021-03-13 21:11:57
    items.sort(key=lambda x:x[1], reverse=True) for i in range(2000)://统计数量 word, count = items[i] #print ("{0:<10}{1:>5}".format(word, count)) t=open('count.txt', 'a',encoding='utf-8') t.write("{0:...
  • Python读取文件后进行词频统计

    千次阅读 2021-11-26 00:41:15
    1引言本文解决由粉丝提出的问题。2问题我们在使用python函数获取文件后,有时需要对该文件进行词频统计。本文将通过对英文文件的读取和中文文件的读取进行讲解。3 方法一.统计英文文档中的...
  • Python实现一个词频统计(词云+图)

    千次阅读 2020-11-21 01:07:47
    (有一些是安装好python电脑自带有哦)有一些会出现一种情况就是安装不了词云展示库有下面解决方法,需看请复制链接查看:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud第三步:1.准备好你打算统计的文件...
  • python利用字典统计词频的两种方式

    千次阅读 2021-11-20 13:30:22
    python利用字典统计词频的两种方式 1、自带collections库 >>> import collections >>> s = 'collection' >>> collections.Counter(s) Counter({'c': 2, 'o': 2, 'l': 2, 'e': 1, 't': 1,...
  • 此文件用于初学者通过python来制作词云使用,配合我的博客相关词云基础语法进行使用,没有任何商业价值,仅供初学者使用和玩耍。
  • #将在excludes表中的词也去除 items=list(counts.items()) #将字典类型转换为list类型便于操作 items.sort(key=lambda x:x[1],reverse=True) #对一个列表,所有键值对的第2个元素进行排序, # 默认是false,是从小...
  • 原博文2018-12-06 23:02 −1、利用jieba分词,排除停用词stopword之后,对文章中的词进行词频统计,并用matplotlib进行直方图展示 # coding: utf-8 import codecs import matplotlib.pyplot as plt import jieba # ...
  • 最好还是要学以致用,自主搜集了19年最近的14份剑桥真题之后,通过Python提供的jieba第三方库,对所有的文章信息进行词频统计,并选择性地剔除了部分简易词汇,比如数字,普通冠词等,博主较懒,未清楚干净。...
  • 使用jupyter notebook作为交互工具,python语言写。 代码 sc.textFile()用于加载文件数据。 words = sc.textFile('/data/word.txt') 结果: /data/word.txt MapPartitionsRDD[3] at textFile at ...
  • Python中英文词频统计

    2022-04-10 09:39:28
    Python中英文词频统计的简单使用方法
  • jieba库进行词频统计

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,618
精华内容 2,247
关键字:

利用python进行词频统计