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

PySpark词表清洗UDF正则无法去除连续标点的问题如何解决?

代码调整方案

原实现存在两个核心问题:

  • 正则仅匹配字符串开头的连续字母数字,没有处理词汇首尾附着的标点,导致带尾缀标点的有效词汇被过滤,带末尾标点的词汇因为开头匹配成功被连带保留了标点
  • 仅对原词做匹配过滤,没有提前剥离词汇中的标点字符,不符合清洗需求

调整后的逻辑为:先对每个词汇做全字符标点清理,再筛选长度大于1的有效内容,修改后代码如下:

import re

# 词表清洗函数
def clear_list(words_list):
    filtered = []
    for word in words_list:
        # 移除所有非字母数字的标点类字符
        cleaned_word = re.sub(r'[^\w\d]', '', word, flags=re.U)
        # 仅保留清洗后长度≥2的词汇
        if len(cleaned_word) >= 2:
            filtered.append(cleaned_word)
    return filtered

clear_list_udf = sf.udf(clear_list, ArrayType(StringType()))
items = items.withColumn("clear_words", clear_list_udf(sf.col("words")))

效果验证

以你给出的测试用例为例:
输入词汇列表:["непутевые,", "заметки\"\"", "с", "дмитрием", "крыловым"]
输出结果:["непутевые", "заметки", "дмитрием", "крыловым"],完全符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:36:01