前言:大家好,这里是Seon塞翁。最近工作中开发了一个需要对大批量文本进行分词及统计词频的工具,主要是在 jieba 分词、过滤停用词两个环节耗时。分词部分可以考虑采用 jieba-fast 库提升速度,而过滤环节的效率低下问题一直没找到好方法解决,今天偶然发现了pandas可以帮助实现!果然还是太无知了哈哈哈…

1、常规方法

那么开始吧!首先完成分词部分,得到一个储存了所有单词的超大列表;

import pandas as pd
import jiebastopwords = [line.strip() for line in open('chineseStopWords.txt', 'r', encoding='utf-8').readlines()]
df = pd.read_excel("/home/kesci/待分词文本.xlsx")
jieba_list = (jieba.cut(x) for x in list(df['内容']))  # 对每一行进行分词
cut_words = [w for words in jieba_list for w in words] # 所有行的分词汇总列表

循环判断分词是否在停用词列表中,乍一看这列表推导式已经很简洁了,在不使用多进程的情况下似乎没法更快了。

cut_word_list = [w for w in cut_words if w not in stopwords]

但实际上这竟然要耗费超过一分钟!这用户体验也太差了吧…

这是因为原始分词结果 cut_word_list 是超过 200 万个分词的列表,而停用词列表长度也超过 1000 个,如此一来需要经历的循环大大降低了过滤效率。

2、利用 pandas 中的 isin

利用 pandas 的内置方法 isin 可以对一列数据进行过滤,与 apply(lamba x: x if x not in stopwords) 或 for 循环这样的逐行逐个操作不同,使用 isin 进行的是向量化操作。

cut_df = pd.DataFrame({'cut_words':cut_words})
cut_df = cut_df[~cut_df.cut_words.isin(stopwords)]  # 用isin的反函数过滤词
cut_word_list = cut_df['cut_words'].to_list()

可见执行速度是常规方法的100倍以上,如此一来便大幅提升了过滤效率。

实战笔记:利用pandas提升分词后过滤停用词的效率相关推荐

  1. 中文分词后去除停用词

     中文分词后去除停用词  当我们利用jieba进行中文分词时,主要是句子中出现的词语都会被划分,而有些词语是没有实际意思的,对于后续的关键词提取就会加大工作量,并且可能提取的关键词是无效的.所以在分词 ...

  2. 中文分词与去除停用词

    jieba分词的三种模式 精确模式:把文本精确的切分开,不存在冗余单词. 全模式:把文本中所有可能的词语都扫描出来,有冗余. 搜索引擎模式:在精确模式基础上,对长词再次切分. jieba库的解析 ji ...

  3. 中文文本处理总结(读取文本、文本预处理、分词、去除停用词)

    中文文本处理总结(读取文本.文本预处理.分词.去除停用词)  针对前面学习的 Python读取文本内容.中文文本预处理.利用jieba对中文进行分词.中文分词后去除停用词.调整jieba分词结果,我们 ...

  4. python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例

    本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...

  5. (3.2)将分词和去停用词后的评论文本基于“环境、卫生、价格、服务”分类...

    酒店评论情感分析系统(三)-- 将分词和去停用词后的评论文本基于"环境.卫生.价格.服务"分类 思想: 将进行了中文分词和去停用词之后得到的词或短语按序存在一个数组(iniArra ...

  6. NLP深入学习——过滤停用词(Filtering stop words)

    文章目录 返回主目录 过滤停用词(Filtering stop words) Stemming操作 返回主目录 这是一个系列的文章,点击返回综合目录页 过滤停用词(Filtering stop wor ...

  7. java 对英文句子进行 分词、去除停用词、提取词干

    下面 词干提取算法 用到的jar包 lucene-analyzers-smartcn-7.6.0.jar (包含 中英 词干提取) 百度网盘链接:https://pan.baidu.com/s/15D ...

  8. 实践:jieba分词和pkuseg分词、去除停用词、加载预训练词向量

    一:jieba分词和pkuseg分词 原代码文件 链接:https://pan.baidu.com/s/1J8kmTFk8lec5ubfwBaSnLg 提取码:e4nv 目录: 1:分词介绍: 目标: ...

  9. 分词并去停用词自定义函数:seg_word(sentence)

    分词并去停用词自定义函数:seg_word(sentence). import jieba def seg_word(sentence):"""使用jieba对文档分词& ...

最新文章

  1. js实现图片虚化_js canvas画布实现高斯模糊效果
  2. linux下安装lrzsz,配合SecureCRT上传下载文件
  3. 社会保险省内转移需要什么手续或过程?
  4. html纵向文本,html – 垂直对齐CSS圈中多行的文本
  5. Kettle使用_3变量替换之获取系统信息与命名参数
  6. hdu5698瞬间移动(组合数,逆元)
  7. 漫画:什么是SnowFlake算法
  8. JSON.parse()、eval()和JSON.stringify()
  9. 关于集成通用mapper的Mybatis代码生成器产生的model类注解
  10. Mybatis破MySql8小时断线问题
  11. 陕西省高等数学竞赛_陕西省高等数学竞赛试题答案
  12. 运行 jar 文件_如何运行JAR文件
  13. 外贸企业管理系统解决方案丨汇信
  14. mysql查询分数前三个_MySQL中查询获取每个班级成绩前三名的学生信息
  15. 小故事折射出大道理:风靡办公室的管理寓言
  16. 网页设计初学者可制作的简单网页——我的第二篇博客
  17. 苹果版赤潮可以用微信登陆吗_用swiftui中的苹果登录
  18. 独立开发者为什么不需要运营也能月薪几万,甚至几十万?
  19. 计算机表格基础知识训练,计算机基础知识综合练习与答案
  20. Unity 3D学习之雷霆战机(一)

热门文章

  1. 计算机学院毕业季主题,毕业季 | 计算机学院2020届毕业生成长纪念册出炉!
  2. C语言项目实战:《别踩白块游戏》零基础项目,137 行源代码示例
  3. Tensorflow2.0 之深度残差收缩网络 (DRSN)
  4. 用IE临时文件夹获取Flash
  5. 蓝色科技AE宣传片头光晕视频
  6. NPM酷库:numeral,格式化数字
  7. 在Ubuntu 15下搭建V/P/N服务器pptpd安装和配置
  8. MRR 优化效果测试
  9. java变量前加private_类中private变量真的private么?
  10. 简历上的项目经历怎么写 ?这 3 条原则不可忽视 !