gpt4 book ai didi

python - 如何减少过滤文章数据集的时间?

转载 作者:行者123 更新时间:2023-12-01 00:49:04 25 4
gpt4 key购买 nike

我正在尝试过滤包含近 50K 篇文章的数据集。我想从每篇文章中过滤掉停用词和标点符号。但这个过程需要很长时间。我已经过滤了数据集,花了 6 个小时。现在我有另一个要过滤的数据集,其中包含 30 万篇文章。

我在 anaconda 环境中使用 python。 PC 配置:第 7 代 Core i5、8GB RAM 和 NVIDIA 940MX GPU。为了过滤我的数据集,我编写了一个代码,它获取数据集中的每篇文章,对单词进行标记,然后删除停用词、标点符号和数字。

def sentence_to_wordlist(sentence, filters="!\"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n?,।!‍.'0123456789০১২৩৪৫৬৭৮৯‘\u200c–“”…‘"):
translate_dict = dict((c, ' ') for c in filters)
translate_map = str.maketrans(translate_dict)
wordlist = sentence.translate(translate_map).split()
global c,x;
return list(filter(lambda x: x not in stops, wordlist))

现在我想减少这个过程的时间。有什么办法可以优化吗?

最佳答案

我一直在尝试优化您的流程:

from nltk.corpus import stopwords

cachedStopWords = set(stopwords.words("english"))

filters = "!\"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n?,।!‍.'0123456789০১২৩৪৫৬৭৮৯‘\u200c–“”…‘"
trnaslate_table = str.maketrans('', '', filters)
def sentence_to_wordlist(sentence, filters=filters):
wordlist = sentence.translate(trnaslate_table).split()
return [w for w in wordlist if w not in cachedStopWords]

from multiprocessing.pool import Pool

p = Pool(10)
results = p.map(sentence_to_wordlist, data)

我一直在测试包含 10 万篇文章的列表,每篇文章大约有 2k 个字符,花费了不到 9 秒的时间。

关于python - 如何减少过滤文章数据集的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56713358/

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