在 Python 中删除停用词的更快方法

2023-12-30

我正在尝试从文本字符串中删除停用词:

from nltk.corpus import stopwords
text = 'hello bye the the hi'
text = ' '.join([word for word in text.split() if word not in (stopwords.words('english'))])

我正在处理 600 万个这样的字符串,因此速度很重要。分析我的代码,最慢的部分是上面的行,有更好的方法吗?我正在考虑使用类似正则表达式的东西re.sub但我不知道如何编写一组单词的模式。有人可以帮我吗,我也很高兴听到其他可能更快的方法。

注意:我尝试了某人的包装建议stopwords.words('english') with set()但这没有什么区别。

谢谢。


尝试缓存停用词对象,如下所示。每次调用函数时都构建这个似乎是瓶颈。

    from nltk.corpus import stopwords

    cachedStopWords = stopwords.words("english")

    def testFuncOld():
        text = 'hello bye the the hi'
        text = ' '.join([word for word in text.split() if word not in stopwords.words("english")])

    def testFuncNew():
        text = 'hello bye the the hi'
        text = ' '.join([word for word in text.split() if word not in cachedStopWords])

    if __name__ == "__main__":
        for i in xrange(10000):
            testFuncOld()
            testFuncNew()

我通过分析器运行了这个:python -m cProfile -s 累积测试.py。相关行发布在下面。

nCalls 累计时间

10000 7.723 个单词.py:7(testFuncOld)

10000 0.140 个单词.py:11(testFuncNew)

因此,缓存停用词实例可提供约 70 倍的加速。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中删除停用词的更快方法 的相关文章

  • 在 Python 中同时插入行

    我正在尝试对我的代码进行矢量化 但遇到了障碍 我有 nxd x 值数组 x1 xn 其中每一行 x1 有很多点 x11 x1d nxd y 值数组 y1 y2 y3 其中每一行 y1 有很多点 y11 y1d x 值的 nx1 数组 x 1
  • Huggingface 变形金刚模块未被 anaconda 识别

    我正在使用 Anaconda python 3 7 Windows 10 我尝试通过安装变压器https huggingface co transformers https huggingface co transformers 在我的环境
  • TCP打孔问题

    我尝试使用 Python 3 中概述的原则为防火墙编写一个基本的 TCP 打孔器本文 http www bford info pub net p2pnat index html 不过 我无法连接任何东西 这是代码 usr bin pytho
  • Python实时读取串口数据

    我正在使用 Python 中的脚本通过串行端口以 2Mbps 的速度从 PIC 微控制器收集数据 PIC 在 2Mbps 下完美定时工作 FTDI USB 串行端口在 2Mbps 下工作也很好 均通过示波器验证 我每秒发送消息 大小约为 1
  • 正则表达式等价

    有没有办法找出两个任意正则表达式是否等价 对我来说看起来很复杂的问题 但可能有一些 DFA 简化机制之类的 要测试等价性 您可以计算的表达式并进行比较
  • self.__dict__.update(**kwargs) 的风格是好是坏?

    在 Python 中 假设我有一些类 Circle 它继承自 Shape Shape 需要 x 和 y 坐标 此外 Circle 需要半径 我希望能够通过执行类似的操作来初始化 Circle c Circle x 1 y 5 r 3 Cir
  • 如何使用appium自动化Android手机后退按钮

    我正在使用 Appium python 客户端库 对 Android 上的混合移动应用程序进行测试自动化 我无法找到任何方法来自动化或创建手势以使用 电话后退 按钮返回到应用程序的上一页 有没有可以使用的驱动函数 我尝试了 self dri
  • Pygooglevoice登录错误

    另一个人问了这个问题 但没有回复 所以我再问一遍 我正在尝试使用 pygooglevoice API 但是当我运行 SMS py 示例脚本时 它给了我一个登录错误 我已经安装了 Enthought python 我想也许我还需要安装其他东西
  • 如何从 Python 3.5 降级到 3.4

    我想安装 kivy 链接在这里 https kivy org docs installation installation windows html install win dist 用于项目 但是 当尝试使用 pip 安装它所依赖的包时
  • 从网站上抓取数字和详细信息的数据

    我想从网站上抓取联系电话以及快递服务的相应详细信息 我无法从所有快递服务中获取联系电话和其他详细信息 例如姓名地址和评级 我分析的数据位于脚本标签中 请提出修复此问题的建议 import requests import pandas as
  • pandas-更改重采样时间序列的开始和结束日期

    我有一个时间序列 我将其重新采样到这个数据框中df 我的数据是从6月6日到6月28日 它希望将数据从6月1日延长到6月30日 计数列仅在较长时间内具有 0 值 而我的实际值是从 6 日到 28 日 Out 123 count Timesta
  • 如何连接多个字符串? [复制]

    这个问题在这里已经有答案了 如何将 stringList 中的所有字符串合并为一个而不打印它 例如 s joinStrings very hot day returns string print s Veryhotday 感觉有点倒退 但是
  • 优化正则表达式以过滤数千个 HTML 选择选项

    背景 我开发了一个基于 jQuery 的穿梭小部件 https stackoverflow com a 13557000 59087对于 HTMLselect元素 因为我找不到一个经过最低限度编码并提供正则表达式过滤器来补偿的元素变音符号
  • Python 包安装:pip 与 yum,还是两者一起安装?

    我刚刚开始管理 Hadoop 集群 我们使用 Bright Cluster Manager 直至操作系统级别 CentOS 7 1 然后使用 Ambari 以及适用于 Hadoop 的 Hortonworks HDP 2 3 我不断收到安装
  • 在 Python 中伪造一个对象是否是类的实例

    假设我有一堂课FakePerson它模仿基类的所有属性和功能RealPerson 不扩展它 在Python 3中 是否可以伪造isinstance 为了认识到FakePerson as a RealPerson只通过修改对象FakePers
  • 设置字符串中单词或字符数的限制

    假设我有一个字符串元素列表 wordlist hi what s up home diddle mc doo Oh wise master kakarot hello have a da 我希望列表中的每个元素最多包含 3 个单词或 20
  • 混合两个列表的Pythonic方法[重复]

    这个问题在这里已经有答案了 我有两个长度为 n 和 n 1 的列表 a 1 a 2 a n b 1 b 2 b n 1 我想要一个函数作为结果给出一个列表 其中包含两个中的替代元素 即 b 1 a 1 b n a n b n 1 以下方法有
  • Python Pandas:向类 pandas.core.series.Series 添加方法

    我想在 Python 中处理时间序列 因此 Pandas 的 Series 类非常完美 并且有很多有用的方法 现在我想添加一些我需要但未实现的方法 例如 假设我有兴趣添加一个方法 该方法将两次一值附加到时间序列中 让我们调用该方法appen
  • 将 .parquet 编码为 io.Bytes

    目标 将 Parquet 文件上传到 MinIO 这需要将文件转换为字节 我已经能够做到这一点了 csv json and txt bytes data to csv encode utf 8 bytes json dumps self d
  • 所有语言中特殊字符的 Java 正则表达式

    在我的用户输入字段中 我想允许某些特殊字符 字母和数字的组合 我应该确保正则表达式模式在输入时允许此设置任何语言 基本上我构建的这个正则表达式也应该支持 unicode 表示 如何使用 Java 中的 Pattern 类来实现这一点 这里给

随机推荐

  • 缩放标签文本与标签尺寸一致

    寻找一种调整大小的方法Labels文字随着尺寸的变化而变化Label 即标签尺寸是否应增加50 那么文本的大小也应该增加大约50 有很多文章可以调整文本以完全适合页面的大小Label 这不适合我想要的 我已经有了这个的工作版本 不知何故 我
  • 在node.js中模拟数据库?

    我如何在我的node js应用程序中模拟数据库 在本例中使用mongodb作为博客 REST API 的后端 当然 我可以将数据库设置为特定的testing database 但我仍然会保存数据 不仅测试我的代码 还会测试数据库 所以我实际
  • 绝对定位的元素隐藏其前面的透明元素

    我有三个彼此相邻的块元素 第一个和最后一个是透明的 中间的是绝对定位的 box width 300px height 300px box1 background yellow opacity 0 5 box2 background red
  • 从 iCloud 删除核心数据失败

    我正在尝试使用以下方法从 iCloud 中删除核心数据 NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL options error 但我
  • 在生产中找不到模块“worker_threads”错误

    我创建了一个利用工作线程的 Node js 项目 当我在 VS Code 中运行 npm start 时 代码工作正常 但是当在Ubuntu服务器中构建和复制时 它显示 找不到模块 worker threads 在生产环境中使用工作线程部署
  • 如何传递非插值数据 OpenGL ES (GLSL)

    我正在尝试将简单的 FLOAT 值从顶点传递到片段着色器 如何在不进行插值的情况下 按原样 传递它 在桌面上我可以使用平面变化来禁用插值 openGL es中有类似的东西还是唯一的方法是通过纹理 GLSL ES 目前不支持flat关键字 所
  • 使用 Jquery 将事件动态插入到 Fullcalendar

    我在使用 Jquery 将新事件添加到 fullCalendar 时遇到问题 我正在使用 Eclipse 开发 Web 对 Ajax 完全不熟悉 而且它不适用于我的 Eclipse 一切都写在 jquery 中的 Button click
  • 允许在数据表的“fnServerData”中进行服务器端缓存

    默认情况下 DataTables 中的 Ajax 调用通过在 url 上添加虚假字段来避免缓存 例如http yoursite com api 348522852542 我想禁用此功能 看来ajax函数调用fnServerData它的定义是
  • 以编程方式访问 Eclipse 的调用层次结构

    我需要以编程方式生成调用图作为 Eclipse 插件的一部分 我知道 Eclipse 具有内置的 Open Call Hierarchy 功能 但我一直无法找到一种方法来访问它作为插件开发的一部分 有谁知道如何使用 Eclipse 的调用层
  • 使用 Windows 命令提示符或 PowerShell 在 Spyder 中运行脚本

    我想知道是否有一种方法可以使用 Windows cmd 或 PowerShell 而不是 IPython 控制台在spyder ide 中运行 python 脚本 有时 Ipython 的工作方式与在 cmd 中运行脚本的方式不同 专门用于
  • Python 使用什么字节序写入文件?

    当使用 file write 和 wb 标志时 Python 使用大端还是小端 或者 sys byteorder 值 我如何确定字节序不是随机的 我问是因为我在同一个文件中混合 ASCII 和二进制数据 并且对于二进制数据 我使用 stru
  • 未知提供者:$uibModalInstanceProvider - Bootstrap UI 模式

    我的 UI Bootstrap 模式有问题 在一个控制器中我有这个 app controller tableCtrl scope http uibModal log function scope http uibModal log scop
  • 如何在VLOOKUP中设置范围条件?

    我的 Excel 文件中有下表 我想找到相应输入的值列 Col A Col B Col C Min Max Value 101 AA High 0 10 1 101 AA High 11 20 2 101 AA Low 0 10 3 101
  • 没有模板的组件

    我有一些代码可以对服务器进行 api 调用并返回一些 JSON 它确实作为我的组件中的一种方法存在 但由于它变得有点长 我想将其提取到它自己的文件中 在 vuejs 中 这里的最佳实践是什么 它应该是一个没有模板的组件吗 这将如何运作 我会
  • 期望从可观察的下一个处理程序中抛出错误,用 Jasmine 测试 Angular

    在 Angular 应用程序中 有一个具有以下方法的控制器 onClick void this http get some endpoint subscribe response gt const editUrl this service
  • C# 中的 System.AttributeTargets.GenericParameter:如何使用这样的属性?

    在 C 中 当指定属性类应如何使用时 有一个GenericParameter值在System AttributeTargets枚举 我们如何应用这样的属性 语法是什么 System AttributeUsage System Attribu
  • 詹金斯 - 矩阵作业 - 不同从属设备上的变量会相互覆盖吗?

    我想我不明白矩阵构建是如何工作的 当我根据运行的节点在某个阶段设置某个变量时 然后在该阶段的其余部分有时会按应有的方式设置该变量 有时它会从其他节点 轴 获取值 在下面的示例中 在 ub18 1 上运行的类似作业有时具有 VARIABLE1
  • jQuery 网络摄像头插件 - 保存图像

    我很难使用 jquery 网络摄像头插件保存从网络摄像头捕获的图像 这是代码 document ready function camera webcam width 320 height 240 mode save swffile jsca
  • C++11 虚拟复制构造函数

    我正在阅读 Mark Joshi 的 C 设计模式和衍生品定价 并在 C 11 中实现他的代码 一切都进展顺利 直到我进入第 4 章 他在其中讨论了虚拟复制构造函数 PayOffDoubleDigital thePayOff Low Up
  • 在 Python 中删除停用词的更快方法

    我正在尝试从文本字符串中删除停用词 from nltk corpus import stopwords text hello bye the the hi text join word for word in text split if w