gpt4 book ai didi

python - 加快从巨大的 csv 文件中删除停用词

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:39 24 4
gpt4 key购买 nike

是否有更好(更快)的方法从 csv 文件中删除停用词?

这是简单的代码,一个多小时后我还在等待结果(所以我什至不知道它是否真的有效):

import nltk
from nltk.corpus import stopwords
import csv
import codecs

f = codecs.open("agenericcsvfile.csv","r","utf-8")
readit = f.read()
f.close()

filtered = [w for w in readit if not w in stopwords.words('english')]

csv 文件有 50.000 行,总共约 1500 万个单词。为什么需要这么长时间?可悲的是,这只是一个子语料库。我将不得不处理超过 100 万行和超过 3 亿个单词。那么有没有办法加快速度呢?还是更优雅的代码?

CSV 文件示例:

1 text,sentiment
2 Loosely based on The Decameron, Jeff Baena's subversive film takes us behind the walls of a 13th century convent and squarely in the midst of a trio of lustful sisters, Alessandra (Alison Brie), Fernanda (Aubrey Plaza), and Ginerva (Kate Micucci) who are "beguiled" by a new handyman, Massetto (Dave Franco). He is posing as a deaf [...] and it is coming undone from all of these farcical complications.,3
3 One might recommend this film to the most liberally-minded of individuals, but even that is questionable as [...] But if you are one of the ribald loving few, who likes their raunchy hi-jinks with a satirical sting, this is your kinda movie. For me, the satire was lost.,5
4 [...]
[...]
50.000 The movie is [...] tht is what I ahve to say.,9

所需的输出将是没有停用词的相同 csv 文件。

最佳答案

第一个明显的优化是 1/避免在每次迭代中调用 stopwords.words() 和 2/使其成为一个 set(set 查找是 O(1),其中 list 查找是 O(N):

words = set(stopwords.words("english"))
filtered = [w for w in readit if not w in words]

但这不会产生预期的结果,因为 readit 是一个字符串,所以您实际上是在单个字符而不是单词上迭代。您需要先标记您的字符串,[如此处解释][1]:

from nltk.tokenize import word_tokenize
readit = word_tokenize(readit)
# now readit is a proper list of words...
filtered = [w for w in readit if not w in words]

但是现在你已经丢失了所有的 csv 换行符,所以你不能正确地重建它......如果你的 csv 中有任何引用,你可能也会遇到一些引用问题。因此,实际上您可能希望使用 csv.reader 正确解析您的源代码,并逐字段、逐行清理您的数据,这当然会增加相当多的开销。好吧,如果您的目标是在没有停用词的情况下重建 csv,那就是(否则您可能不会那么在意)。

Anwyay:如果你有一个非常庞大的语料库需要清理并且需要性能,那么下一步就是真正的并行化:将源数据分成几部分,将每个部分发送到一个不同的进程(每个处理器/核心一个是一个好的开始) ,可能分布在许多计算机上,并收集结果。这种模式被称为“map reduce”,它们已经是几个 Python 实现。

关于python - 加快从巨大的 csv 文件中删除停用词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com