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实现简单中文词频统计示例
本文介绍了python实现简单中文词频统计示例,分享给大家,具体如下: 任务 简单统计一个小说中哪些个汉字出现的频率最高 知识点 1.文件操作 2.字典 3.排序 4.lambda 代码 import codecs import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 mpl.rcParams['axes.unicode_minus
-
Python编程使用NLTK进行自然语言处理详解
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.自然语言工具箱(NLTK,NaturalLanguageToolkit)是一个基于Python语言的类库,它也是当前最为流行的自然语言编程与开发工具.在进行自然语言处理研究和应用时,恰当利用NLTK中提供的函数可以大幅度地提高效率.本文就将通过一些实例来向读者介绍NLTK的使用. NLTK NaturalLanguageToolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库. NLTK是一个开源的项目,包含:P
-
Python科学计算之Pandas详解
起步 Pandas最初被作为金融数据分析工具而开发出来,因此 pandas 为时间序列分析提供了很好的支持. Pandas 的名称来自于面板数据(panel data)和python数据分析 (data analysis) .panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型. 在我看来,对于 Numpy 以及 Matplotlib ,Pandas可以帮助创建一个非常牢固的用于数据挖掘与分析的基础.而Scipy当然是另一个主要的也十分出色的科学计
-
在Python中使用NLTK库实现对词干的提取的教程
什么是词干提取? 在语言形态学和信息检索里,词干提取是去除词缀得到词根的过程─-得到单词最一般的写法.对于一个词的形态词根,词干并不需要完全相同:相关的词映射到同一个词干一般能得到满意的结果,即使该词干不是词的有效根.从1968年开始在计算机科学领域出现了词干提取的相应算法.很多搜索引擎在处理词汇时,对同义词采用相同的词干作为查询拓展,该过程叫做归并. 一个面向英语的词干提取器,例如,要识别字符串"cats"."catlike"和"catty"是
-
Python科学计算之NumPy入门教程
前言 NumPy是Python用于处理大型矩阵的一个速度极快的数学库.它允许你在Python中做向量和矩阵的运算,而且很多底层的函数都是用C写的,你将获得在普通Python中无法达到的运行速度.这是由于矩阵中每个元素的数据类型都是一样的,这也就减少了运算过程中的类型检测. 矩阵基础 在 numpy 包中我们用数组来表示向量,矩阵和高阶数据结构.他们就由数组构成,一维就用一个数组表示,二维就是数组中包含数组表示. 创建 # coding: utf-8 import numpy as np a =
-
Python计算程序运行时间的方法
本文实例讲述了Python计算程序运行时间的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: import time def start_sleep(): time.sleep(3) if __name__ == '__main__': #The start time start = time.clock() #A program which will run for 3 seconds start_sleep() #The End time
-
python计算文本文件行数的方法
本文实例讲述了python计算文本文件行数的方法.分享给大家供大家参考.具体实现方法如下: filename = "somefile.txt" myfile = open(filename) lines = len(myfile.readlines()) print "There are %d lines in %s" % (lines, filename) 希望本文所述对大家的Python程序设计有所帮助.
-
Python开发的单词频率统计工具wordsworth使用方法
使用方法: python wordsworth --filename textfile.txt python wordsworth -f textfile.txt 分析结果: 附上github项目地址:https://github.com/autonomoid/wordsworth
-
python jieba分词并统计词频后输出结果到Excel和txt文档方法
前两天,班上同学写论文,需要将很多篇论文题目按照中文的习惯分词并统计每个词出现的频率. 让我帮她实现这个功能,我在网上查了之后发现jieba这个库还挺不错的. 运行环境: 安装python2.7.13:https://www.python.org/downloads/release/python-2713/ 安装jieba:pip install jieba 安装xlwt:pip install xlwt 具体代码如下: #!/usr/bin/python # -*- coding:utf-8
-
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方法之后切分的词
-
Python实现快速计算24点游戏的示例代码
目录 24 点游戏规则 回溯算法计算思路 生成表达式 24 点游戏规则 有4个范围在 [1,9] 的数字,通过「加.减.乘.除」四则运算能够获得24,认为有解. 4个范围在 [1,9] 的数字能够产生495种可能,其中404中组合情况都是有解的,有解概率高达81.62%. 下面我们用python来验证它,首先计算组合数: from scipy.special import comb comb(9, 4, repetition=True) 495.0 可以看到python计算出9个数字有重复的组合
-
Python实现两款计算器功能示例
本文实例为大家分享了Python实现计算器功能示例代码,供大家参考,具体内容如下 1.简单计算器 #计算一个表达式的时候,首先肯定是先算括号里面的,再算乘除法,后算加减法 import re # 1.去括号 def remove_kuohao(expression): ''' 这是一个去除括号的函数 :param expression: 传进来的表达式 :return: 计算后的结果 ''' while True: ret = re.search(r'\([^(]*?\)',expression
-
基于Python实现的ID3决策树功能示例
本文实例讲述了基于Python实现的ID3决策树功能.分享给大家供大家参考,具体如下: ID3算法是决策树的一种,它是基于奥卡姆剃刀原理的,即用尽量用较少的东西做更多的事.ID3算法,即Iterative Dichotomiser 3,迭代二叉树3代,是Ross Quinlan发明的一种决策树算法,这个算法的基础就是上面提到的奥卡姆剃刀原理,越是小型的决策树越优于大的决策树,尽管如此,也不总是生成最小的树型结构,而是一个启发式算法. 如下示例是一个判断海洋生物数据是否是鱼类而构建的基于ID3思想
-
Python实现的科学计算器功能示例
本文实例讲述了Python实现的科学计算器功能.分享给大家供大家参考,具体如下: import wx import re import math # begin wxGlade: extracode # end wxGlade ans=0 ts="" class MyFrame(wx.Frame): def __init__(self, *args, **kwds): # begin wxGlade: MyFrame.__init__ kwds["style"] =
-
Python实现的端口扫描功能示例
本文实例讲述了Python实现的端口扫描功能.分享给大家供大家参考,具体如下: 一 代码 import sys import socket import multiprocessing def ports(ports_service): #获取常用端口对应的服务名称 for port in list(range(1,100))+[143,145,113,443,445,3389, 8080]: try: ports_service[port] = socket.getservbyport(por
-
Python实现的多项式拟合功能示例【基于matplotlib】
本文实例讲述了Python实现的多项式拟合功能.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- #! python2 import numpy as np import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体 plt.rcParams['axes.unicode_minus']=False #解决负数坐
-
Python正则表达式实现简易计算器功能示例
本文实例讲述了Python正则表达式实现简易计算器功能.分享给大家供大家参考,具体如下: 需求:使用正则表达式完成一个简易计算器. 功能:能够计算简单的表达式. 如:1*2*((1+2)/(2+3)+1)*5.1-3+2**2 import re class SimpleCalc(object): # 表达式检测 def check(self,exp): # 合法字符检测 res = re.findall(r"[^\d\+\-\*/\(\)\.]", exp) print(res) i
-
Python实现的文本编辑器功能示例
本文实例讲述了Python实现的文本编辑器功能.分享给大家供大家参考,具体如下: wxpython实现的文本编辑器 效果如下: 主要功能: 1.编辑保存文本,打开修改文本 2.常用快捷键,复制,粘贴,全选等 3.支持撤销功能 4.支持弹出式菜单 代码如下: #encoding=utf-8 import wx import os class MyFrame(wx.Frame): def __init__(self): self.file='' self.content=[] self.count=
随机推荐
- php操作xml入门之cdata区段
- 整合ckeditor+ckfinder,解决上传文件路径问题
- 好人卡是什么意思
- js操作label给label赋值及取label的值示例
- 解读什么是防火墙
- 企业上网的几个理由
- 通过JavaScript使Div居中并随网页大小改变而改变
- 利用Python命令行传递实例化对象的方法
- C#中委托用法实例分析
- 关于图片存储格式的整理(BMP格式介绍)
- java使用sigar 遇到问题的快速解决方法
- 一个不错的仿携程自定义数据下拉选择select
- .NET中如何将文本文件的内容存储到DataSet
- 一个简易时钟效果js实现代码
- 微信小程序 Windows2008 R2服务器配置TLS1.2方法
- 虚拟服务器实现方法(动态均衡)
- 获取MySQL的表中每个userid最后一条记录的方法
- 边缘智能交换
- Android架构组件Room的使用详解
- C# WPF使用AForge类库操作USB摄像头拍照并保存