当前位置:主页 > python教程 > Python实现快速计算词频功能示例

Python实现快速计算词频的代码分析

发布:2020-01-02 16:09:53 53


给网友朋友们带来一篇Python计算词频相关的编程文章,网友逯弘化根据主题投稿了本篇教程内容,涉及到Python、计算词频、Python实现快速计算词频功能示例相关内容,已被541网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

Python实现快速计算词频功能示例

本文实例讲述了Python实现快速计算词频功能。分享给大家供大家参考,具体如下:

这几天看到一位同事的代码,方法如下:

def cut_word(body):
  temp_dict={}
  if body is not None:
    temp=jieba.cut(body)
    for t in temp:
      temp_dict[t]=1
  else:
    pass
  return temp_dict

这个函数的功能是,输入一段字符串,比如:'今天天气很不错',输出一个字典,key为使用结巴的cut方法之后切分的词,value为1,如:{'很':1,'今天天气':1,'不错': 1}。

然后我看到同事的另一个方法:

def union_dict(x,y):
  _keys = set(sum([obj.keys() for obj in [x,y]],[]))
  _total = {}
  for _key in _keys:
    _total[_key] = sum([obj.get(_key,0) for obj in [x,y]])
  return _total

是这样调用的:

final_dict=reduce(union_dict,result)

result是这样产生的:

result=df['body'].apply(cut_word)

也就是把df的body列每一行进行cut_word函数操作(即将字符串转换成一个字典)。

result的类型是series,随后对result用reduce函数进行union_dict操作。

union_dict的作用是,输入两个字典,比如{'很':1,'今天天气':1,'不错': 1}和{'很':1,'今天天气':1,'差': 1},对key相同的进行value求和,也就是输出会变成{'很':2,'今天天气':2,'不错': 1,'差':1}

所以这一系列的操作其实是为了计算一大堆文字的词频数,但同事使用的是对每一行分别进行拆分,生成字典,随后

对字典进行合并,其实有些麻烦。

再学习自然语言处理的时候,我了解到nltk有一个方法,可以直接计算词频,用在此处正好。

# -*- coding:utf-8 -*-
import nltk
import jieba
str = '今天天气很不错。今天天气很差'
a = list(jieba.cut(str))
cfd = nltk.FreqDist(a)

结果直接是一个带有频数的字典:{'很':2,'今天天气':2,'不错': 1,'很差':1,'。'}

由于同事的函数cut_word对每个词只计一次频数,所以不能直接拼接字符串后调用FreqDist函数,需要对每个cut出来的列表去重,随后再拼接为大字符串调用FreqDist,这也比之前写这两个函数简单许多。

对于普通的计算频数的需求来说,这个函数能直接解决,十分方便。

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。


参考资料

相关文章

  • Python 3.7中dataclass装饰器用法详解

    发布:2018-10-25

    这篇文章主要给大家介绍了关于Python 3.7新功能之dataclass装饰器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧。


  • 《Python编程:从入门到实践》课后习题及答案

    发布:2018-12-01

    这篇文章主要介绍了JavaScript简介,都是非常基础的内容,有需要的小伙伴参考下吧。


  • python和matlab的优势及区别点

    发布:2021-05-06

    在本文中小编给大家分享的是关于python和matlab的优势与区别的知识点以及实例代码,需要的朋友们参考学习下。


  • 将python程序打包成DLL的三种方式

    发布:2023-04-06

    这篇文章主要介绍了将python程序打包成DLL的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • python字典添加元素的实例方法

    发布:2019-09-17

    python字典是另一种可变容器模型,且可存储任意类型对象。向python字典添加新内容的方法是增加新的键/值对。


  • Python协程原理全面分析

    发布:2023-04-16

    协程(co-routine,又称微线程、纤程)是一种多方协同的工作方式。协程不是进程或线程,其执行过程类似于Python函数调用,Python的asyncio模块实现的异步IO编程框架中,协程是对使用async关键字定义的异步函数的调用


  • python判断列表为空的三种方法总结

    发布:2023-04-20

    这篇文章主要介绍了python判断列表为空的三种方法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • python如何进行批量图片处理

    发布:2019-08-06

    本文实例讲述了python批量图片处理。分享给大家供大家参考,具体如下: #!/usr/bin/python#coding:utf-8import osfrom PIL import Image#源目录MyPath = C:/Users/Eric/Desktop/python_text/20161214/test_Image/#输出目录OutPath


网友讨论