当前位置: 首页 > 面试题库 >

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

孟茂学
2023-03-14
问题内容

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

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')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()

:我通过探查跑这 蟒蛇-m CPROFILE -s累计test.py 。相关行如下。

nCalls累积时间

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

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

因此,缓存停用词实例可以使速度提高约70倍。



 类似资料:
  • 本文向大家介绍在Python中使用NLTK删除停用词,包括了在Python中使用NLTK删除停用词的使用技巧和注意事项,需要的朋友参考一下 当计算机处理自然语言时,某些极端通用的单词似乎在帮助选择符合用户需求的文档方面几乎没有值,因此完全从词汇表中排除了。这些单词称为停用词。 例如,如果您输入的句子为- 停止单词删除后,您将获得输出- NLTK收集了这些停用词,我们可以将其从任何给定的句子中删除。

  • 问题内容: 我想从“ tweets”列中删除停用词。如何遍历每一行和每一项目? 问题答案: 使用列表理解 返回值:

  • 问题内容: 关于数据库,我是一个相对新手。我们正在使用MySQL,而我目前正在尝试加速似乎需要一段时间才能运行的SQL语句。我四处寻找类似问题,但没有找到。 目的是删除表A中表B中具有匹配ID的所有行。 我目前正在执行以下操作: 表a中约有10万行,表b中有约22k行。列“ id”是两个表的PK。 在我的测试箱上运行此语句大约需要3分钟-Pentium D,XP SP3、2GB内存,MySQL 5

  • 问题内容: 是否可以使用正则表达式删除文本中的小词?例如,我有以下字符串(文本): 我想删除所有不超过3个字符的单词。结果应为: 使用正则表达式或任何其他python函数可以做到吗? 谢谢。 问题答案: 当然,这也不难: 上面的表达式选择任何以某些非单词字符开头的单词(本质上是空格或开头),其长度在1-3个字符之间,并以单词边界结尾。 该边界的比赛是很重要的位置,他们保证你不匹配只是一个字的第一个

  • 问题内容: 我正在Linux系统上使用非常大的文本文件(〜11GB)。我正在通过正在检查文件错误的程序来运行它。一旦发现错误,我需要修复该行或完全删除该行。然后重复… 最终,一旦我对流程感到满意,我便将其完全自动化。但是,现在让我们假设我正在手动运行它。 从此大文件中删除特定行最快(就执行时间而言)是什么?我想到了用Python进行此操作…但是可以接受其他示例。该行可能在文件中的 任何位置 。 如

  • 我一直在用spaCy查找最常用的名词和noun_phrases 在寻找单个名词时,我可以成功地去掉标点符号并停止单词 然而,使用noun_chunks来确定短语会导致属性错误 spacy.tokens.span.Span对象没有属性 我理解的性质的消息但我不能为我的生活得到语法正确的地方存在的停止字在一个emmatiated字符串将排除从被附加到noun_phrases列表 不删除停止字的输出 [