You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效移除大规模文本中的稀有词?现有代码运行过慢求助

优化大规模文本稀有词移除代码的方案

原代码的核心低效点

  • 稀有词判断效率极低:rare_words是列表,idx in rare_words属于线性查找(O(n)),百万级单词反复执行该操作会直接拖慢整体速度。
  • 词频统计存在冗余步骤:将Counter的keys和values转为列表后再通过索引筛选,多了不必要的中间环节,增加内存占用与处理时间。
  • 循环操作开销冗余:原函数逐个处理样本时反复创建列表、拼接字符串,未利用更高效的数据结构简化流程。

优化后的代码实现

第一步:高效统计词频并筛选稀有词

from collections import Counter

# 从数据集提取所有单词并统计词频(替换原冗余的get_unique+Counter逻辑)
all_words = []
for item in ds:
    all_words.extend(item[0].split())

# 统计每个单词的出现次数
word_counts = Counter(all_words)

# 直接筛选稀有词并转为集合(关键优化:集合的成员查找是O(1))
rare_words_set = {word for word, count in word_counts.items() if count < 20}

第二步:优化稀有词移除函数

def remove_jnk(dataset, rare_words):
    processed_ds = []
    for item in dataset:
        # 用生成器表达式替代列表推导,减少内存占用
        filtered_words = (word if word not in rare_words else " " for word in item[0].split())
        processed_text = " ".join(filtered_words)
        processed_ds.append([processed_text])
    return processed_ds

# 调用优化后的函数
ds = remove_jnk(ds, rare_words_set)

额外提速建议

  • 用pandas矢量化处理:如果数据集是DataFrame格式,可借助矢量化操作进一步压缩耗时:
    import pandas as pd
    
    df = pd.DataFrame(ds, columns=["text"])
    def filter_rare(text):
        return " ".join(word if word not in rare_words_set else " " for word in text.split())
    df["text"] = df["text"].apply(filter_rare)
    ds = df.values.tolist()
    
  • 跳过重复拆分:若原数据集已存储拆分好的单词列表,直接处理列表即可省去split()和join()的开销。
  • 分批处理大数据:若数据集超出内存承载,可分批次加载处理,避免一次性占用过多内存。

内容的提问来源于stack exchange,提问作者mucho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:15:32