jieba分词太慢,怎么办?找jieba_fast

原文链接:https://www.rtnzero.com/archives/272.html


有时候感觉处理一个几十M的文本,要一分钟才能好,然后调试时各种心焦!

下面举个例子:

归零有一个11.9M的文本文件,是一些抓取到的Python长尾关键词,我们拿它做个实验,看看用jieba分词需要多久:

以下为测试代码:

# -*- coding: utf-8 -*-
# Author : Alven.Gu
import time
import jieba


def timmer(func):
    def deco(*args, **kwargs):
        print('\n函数:\033[32;1m{_funcname_}()\033[0m 开始运行:'.format(_funcname_=func.__name__))
        start_time = time.time()
        res = func(*args, **kwargs)
        end_time = time.time()
        print('函数: \033[32;1m{_funcname_}()\033[0m 运行了 {_time_}秒'
              .format(_funcname_=func.__name__, _time_=(end_time - start_time)))
        return res

    return deco


@timmer
def chinese_word_segmentation(txt_file_path, seg_mode='search'):
    with open(txt_file_path, 'r', encoding='utf-8-sig')as f:
        all_text_in_file = f.read().replace('\r', '').replace('\n', '').replace('\t', '')
    if seg_mode == 'accurate':
        word_generator = jieba.cut(all_text_in_file)
    elif seg_mode == 'full':
        word_generator = jieba.cut(all_text_in_file, cut_all=True)
    else:
        word_generator = jieba.cut_for_search(all_text_in_file)
    return word_generator


@timmer
def generator2dict(word_generator):
    word_dict = {}
    for word in word_generator:
        if len(word) < 1:
            continue
        else:
            word_dict[word] = word_dict.get(word, 0) + 1
    return word_dict


def main():
    word_generator = chinese_word_segmentation('python长尾词.txt')
    word_dict = generator2dict(word_generator)


if __name__ == '__main__':
    main()

简述一下流程:
1、程序启动会从main函数开始,先执行分词,分词函数会返回一个生成器。
2、再执行生成器转字典函数
两个函数前都加上了timmer装饰器,所以会打印函数运行所消耗的时间
看下结果:

可以看到分词函数返回生成器所用的时间非常的少,只有消耗了0.17186450958251953秒。
而生成器转字典消耗了26.730547428131104秒。
而这个jieba库慢就慢在这个返回的生成器的效率上。

接下去,我们使用jieba_fast做个对比,对代码做以下修改:
只修改以下语句,其它内容不作修改

# import jieba
import jieba_fast as jieba

我们再来看下测试结果:

可以看到分词函数的运行时间因为本来就很少,所以看不出很明显的变化。
但是生成器转字典的函数运行时间缩短到了15.10241174697876
速度提升了43%

好了看完结果,赶紧去装一个试下吧
安装命令:

pip3 install jieba_fast


看到这个结果是不是还觉得不给劲?没关系,接下去还可以祭出多进程处理,请关注下一篇《Python jieba分词库的多进程处理方法:pool.map()应用实例》

—-手—-工—-分—-割—-线—-

文末给大家分享一些本人在学习Python的过程当中,用到的资料(视频、书籍、文档、源码)。

下载链接:https://pan.baidu.com/s/1_qtDzNyeDoAP62A9xxY9ow 提取码:9t62

每一份资料我都精心整理过,留给需要的朋友

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DGL_图的打印

首先要安装 networkx import matplotlib.pyplot as plt import networkx as nx import dgl import numpy as np def build_karate_club_graph():src np.array([1, 2, 2, 3, 3])dst np.array([0, 0, 1, 0, 1])u np.concatenate([src, dst])v np.concatenate([dst, src])ret…

闲鱼账号被封怎么办?解封看这里!

怎样避免宝贝被屏蔽、限流解封账号&#xff1f;首先我们要学会规避封号的风险 不要频繁的更改账号&#xff0c;不要多账号单手机操作&#xff0c;一机一号才是正确。 不要连续给人商品点赞或是我想要&#xff0c;连续的操作容易被封 不要发布违禁品&#xff0c;违禁品具体可…

推荐系统顶会RecSys’20亮点赏析

文 | banana源 | 知乎RecSys 2020原计划是在南美洲巴西举办&#xff0c;因为疫情的原因不得不改到线上。虽说线上举办会议&#xff0c;参会效果会打折扣&#xff0c;但也为远在北京的我提供了参会便利。得益于各方的努力和软件的应用&#xff0c;整体来看此次参会的效果高于我对…

技术研讨会 | 2019 恒生技术开放日产业链知识图谱专场开始报名

知识图谱旨在采用图结构 (Graph Structure) 来建模和记录世界万物之间的关联关系和知识&#xff0c;是互联网时代的知识工程方法&#xff0c;能够对纷繁复杂、多源异构的金融资讯大数据进行加工整合&#xff0c;提升决策分析的效率&#xff0c;已经得到金融行业从业人士的普遍认…

01.神经网络和深度学习 W1.深度学习概论

文章目录1. 什么是神经网络2. 使用神经网络进行监督学习3. 神经网络的兴起4. 练习题1. 什么是神经网络 它是一个强大的学习算法&#xff0c;类似于人脑的工作方式。 例子1. 单个神经网络 给定房地产市场上房屋大小的数据&#xff0c;预测其价格。这是一个线性回归问题。 …

中文任务型对话系统中的领域分类

大规模跨领域中文任务导向多轮对话数据集及模型CrossWOZ&#xff1a;项目地址&#xff1a;https://gitee.com/yh14232988/CrossWOZ?_fromgitee_search 具体介绍&#xff1a;https://cloud.tencent.com/developer/article/1617197 北邮张庆恒&#xff1a;如何基于 rasa 搭建一…

互联网热门职位薪酬报告

“ 很多同学毕业后想进入互联网领域&#xff0c;当前有什么热门的互联网工作机会&#xff0c;薪资结构怎么样&#xff1f;看图说话&#xff0c;我简短给 大家做一个回报。 互联网职位需求最热的TOP20 mikechen&#xff1a;我个人比较看好旅游、金融板块、医疗健康板块&#x…

算法岗面试前怎样高效刷题?

如果不是为了面试AI工程师刷题有用吗&#xff1f;把时间都放在项目上不香嘛&#xff1f;作为一个战五渣&#xff0c;我特地去观察和询问了身边很多精通此道的大神&#xff0c;他们对于“刷题”还是保持着认可的态度&#xff1a;很清晰地理解问题的本质&#xff0c;并进行合理的…

征稿 | JIST 2019 Regular Technical Papers

JIST 2019: The 9th Joint International Semantic Technology ConferenceNov. 25-27, 2019, Hangzhou, China.http://jist2019.openkg.cn/第 9 届国际语义技术联合会议 JIST 2019 将于今年 11 月在美丽的杭州召开&#xff0c;投稿截止日期临近 (Abstract submission: 23:59 (H…

DGL_子图

用途一&#xff1a;数据集太大&#xff0c;无法画图&#xff0c;取子图看看是有向图/无向图 import dgl import matplotlib.pyplot as plt import networkx as nx G dgl.DGLGraph() G.add_nodes(5) # G.add_edges([0, 1, 2, 3, 4], [1, 2, 3, 4, 0]) # 有向图 G.add_edges(…

史上最全互联网八大技术岗位详解

“互联网技术岗位详解&#xff0c;涉及到前段开发、后端开发、移动端开发、大数据、项目管理、测试、运维、技术管理等八大领域。 架构师 每个产品线都有架构师&#xff0c;在技术平台部门也需要技术平台的架构师。 架构师负责设计系统整体架构&#xff0c;从需求到设计的每个…

什么?!“路由器”也会做信息抽取了?

文 | 雨城编 | QvQ前几周&#xff0c;一个“撞脸”路由器的联合抽取模型TPLinker横空出世&#xff0c;将NYT数据集的分数直接刷上了90&#xff0c;提高了2个百分点。卖萌屋邀请到作者雨城&#xff0c;来聊一聊他们在关系抽取上的工作。目前&#xff0c;该工作已经被COLING 2020…

征稿 | ​第 9 届国际语义技术联合会议征稿(截稿日 9 月 8 号)

第 9 届国际语义技术联合会议 JIST2019 将于今年 11 月在美丽的杭州召开&#xff0c;投稿截止日期延迟至 9 月 8 日。现在征集优秀的研究论文&#xff0c;本届会议还专门设置了 special session track&#xff0c;优秀论文将被推荐到 SCI 期刊发表&#xff0c;目前已申请到 Sem…

LeetCode 142. 环形链表 II(链表环的检测)

文章目录1. 题目链接2. 解题1. 题目链接 给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如…

一篇文章详解BAT薪资构成、晋升体系、绩效考核

“ BAT薪资、级别与晋升这一块&#xff0c;全国采取的都是一套体系&#xff0c;下面就为大家详细介绍腾讯、阿里巴巴、百度内部的薪资等级情况。 一&#xff1a;腾讯 薪资、级别与晋升这一块&#xff0c;BAT一般全国采取的都是一套体系&#xff0c;下面就为大家详细介绍。 1…

文末送书 | Facebook:易于解释的神经元可能会阻碍神经网络的学习

文 | Matthew Leavitt、Ari Morcos编 | 张倩、杜伟源 | 机器之心易于解释的神经元对于提升神经网络的性能来说是必要的吗&#xff1f;Facebook 的研究者给出了出人意料的答案。AI 模型能「理解」什么&#xff1f;为什么能理解这些东西&#xff1f;回答这些问题对于复现和改进 A…

技术动态 | ACL 2019 知识图谱的全方位总结

本文转载自公众号&#xff1a;AI科技评论。 ACL 2019 已经结束&#xff0c;但其空前的规模仍然震撼人心&#xff1a;2900多篇提交论文&#xff0c;660篇被接收&#xff0c;3000多名会议注册人员&#xff0c;以及4个超过400人的研讨会&#xff08;比一些国际CS会议都大&#xff…

LeetCode 287. 寻找重复数(BitMap)

文章目录1. 题目信息2. 解题2.1 BitMap2.2 set去重2.3 官方解题&#xff0c;快慢指针1. 题目信息 给定一个包含 n 1 个整数的数组 nums&#xff0c;其数字都在 1 到 n 之间&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设只有一个重复的整…

参加完阿里Java面试:一面+二面+三面+HR四面,后的复盘经验总结!

阿里中间件团队一面&#xff1a; 第一步先自我介绍? 介绍自己的项目经验和个人的擅长点&#xff0c;面试官主要考察你的表达能力和语言精简能力。 第二步&#xff1a;项目中做了什么&#xff0c;难点在哪里? 主要是想了解参与过技术难度最大的项目难点&#xff0c;技术难点…

IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题

IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题 方式一、在 pom.xml 中添加下面的代码 <build><!--解决Maven项目编译后classes文件中没有.xml问题--><resources><resource><directory>src/main/java</directory><in…