在 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 中删除停用词的更快方法 的相关文章

  • 编辑 scikit-learn 决策树

    我想编辑 sklearn DecisionTree 例如改变条件或切割节点 叶子等 但似乎没有功能可以做到这一点 如果我可以导出到文件 编辑它以导入 如何编辑决策树 环境 Windows 10 python3 3 sklearn 0 17
  • Python 在 chroot 中运行时出现错误

    我尝试在 chroot 中运行一些 Python 程序 但出现以下错误 Could not find platform independent libraries
  • Python,将迭代函数变成递归函数

    我创建了一个输出 4 3 2 1 0 1 2 3 4 的迭代函数 def bounce2 n s n for i in range n print n n n 1 if n lt 0 for i in range s 1 print n n
  • Python的reduce()短路了吗?

    If I do result reduce operator and False 1000 得到第一个结果后它会停止吗 自从False anything False 相似地 result reduce operator or True 10
  • Python sqlite3游标没有属性commit

    当我运行这段代码时 path Scripts wallpapers single png conn sqlite3 connect Users Heaven Library Application Support Dock desktopp
  • 如何找到列表S的所有分区为k个子集(可以为空)?

    我有一个唯一元素列表 比方说 1 2 我想将其拆分为 k 2 个子列表 现在我想要所有可能的子列表 1 2 1 2 2 1 1 2 我想分成 1 1 2 我怎样才能用 Python 3 做到这一点 更新 我的目标是获取 N 个唯一数字列表的
  • 为什么我的scoped_session 引发 AttributeError: 'Session' object has no attribute 'remove'

    我正在尝试建立一个系统 将数据库操作优雅地推迟到单独的线程 以避免在 Twisted 回调期间发生阻塞 到目前为止 这是我的方法 from contextlib import contextmanager from sqlalchemy i
  • Django 的 URL 覆盖率测试为 0%,为什么?

    使用姜戈鼻子 我对 URL 进行了测试 但 URL 覆盖率仍然为 0 为什么 python manage py 测试配置文件 这是我的报道 Name Stmts Miss Cover Missing profiles 0 0 100 pro
  • 为 Networkx 图添加标题?

    我希望我的代码创建一个带有标题的图 使用下面的代码 可以创建绘图 但没有标题 有人可以告诉我我做错了什么吗 import pandas as pd import networkx as nx from networkx algorithms
  • str.translate 给出 TypeError - Translate 采用一个参数(给定 2 个参数),在 Python 2 中工作

    我有以下代码 import nltk os json csv string cPickle from scipy stats import scoreatpercentile lmtzr nltk stem wordnet WordNetL
  • 如何对这个 Flask 应用程序进行单元测试?

    我有一个 Flask 应用程序 它使用 Flask Restless 来提供 API 我刚刚写了一些身份验证来检查 如果消费者主机被识别 该请求包含一个哈希值 通过加密 POST 的请求内容和 GET 的 URL 以及秘密 API 密钥来计
  • Django - 电子邮件发送两次

    每当我使用如下所示的电子邮件设置从views py调用下面的方法时 电子邮件的两份副本都会发送给收件人 并且我收到如下所示的错误 def sendEmailBasic request msg EmailMessage Request Cal
  • pip 安装软件包两次

    不幸的是我无法重现它 但我们已经见过几次了 pip 将一个软件包安装两次 如果卸载第一个 第二个就会可见并且也可以被卸载 我的问题 如果一个包安装了两次 如何用 python 检查 背景 我想编写一个测试来检查这一点 devOp Updat
  • Python正则表达式从字符串中获取浮点数

    我正在使用正则表达式来解析字符串中的浮点数 re findall a zA Z d d t 是我使用的代码 这段代码有问题 如果数字和任何字符之间没有空格 则不会解析该数字 例如 0 1 2 3 4 5 6 7 8 9 的预期输出为 0 1
  • 如何检查列表是否为空?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 例如 如果通过以下内容 a 我如何检查是否a是空的 if not a print Lis
  • 如何在 Python 中从 HTML 页面中提取 URL [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我必须用Python 编写一个网络爬
  • 为什么“return self”返回 None ? [复制]

    这个问题在这里已经有答案了 我正在尝试获取链的顶部节点getTopParent 当我打印出来时self name 它确实打印出了父实例的名称 然而 当我回来时self 它返回 None 为什么是这样 class A def init sel
  • 从 IMDbPy 结果中的片目中获取电影 ID

    我正在尝试创建一个数据集 允许我根据 Python IMDb API 中的演员 ID 和电影 ID 加入演员和电影 现在 我正在尝试从演员的电影作品中提取电影 ID 列表 但无法做到 例如 我知道 Rodney Dangerfield 在
  • 从另一个 python 脚本获取返回信息

    我在 Linux 上 我有一个 python 脚本 我想从另一个 python 脚本调用它 我不想将其作为模块导入 为了一层安全性 现在为了学术练习 因为我想弄清楚这一点 我实际上想让一个脚本使用 os system 或另一个类似的函数 并
  • 从 pandas 数据框中绘制堆积条形图

    我有数据框 payout df head 10 复制以下 Excel 绘图的最简单 最智能和最快的方法是什么 我尝试过不同的方法 但无法让一切都到位 Thanks 如果您只想要一个堆积条形图 那么一种方法是使用循环来绘制数据框中的每一列 并

随机推荐

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

    寻找一种调整大小的方法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