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

PySpark下使用UDF配合自定义停用词表实现多语言文本停用词移除

实现代码

你可以直接按照以下步骤注册并调用UDF实现按语种过滤停用词:

  1. 首先导入UDF相关依赖:
from pyspark.sql.functions import udf, concat_ws
from pyspark.sql.types import ArrayType, StringType
  1. 定义停用词过滤逻辑并注册UDF:
def remove_stopwords(lang, text):
    # 拆分文本为单词列表
    word_list = text.split()
    # 读取对应语种的停用词表,转set提升查询效率
    target_stopwords = set(stopwords.get(lang, []))
    # 过滤停用词,统一转小写匹配避免大小写问题
    return [word for word in word_list if word.lower() not in target_stopwords]

# 注册UDF,指定返回值为字符串数组
remove_sw_udf = udf(remove_stopwords, ArrayType(StringType()))
  1. 调用UDF处理数据:
# 生成移除停用词后的结果列,filtered_text为单词数组,filtered_text_str为拼接后的字符串
sf_processed = sf.withColumn("filtered_text", remove_sw_udf("lang", "text")) \
                 .withColumn("filtered_text_str", concat_ws(" ", "filtered_text"))

# 查看结果
sf_processed.show(truncate=False)

输出示例

运行后得到的结果如下:

+----+---------------------------------------------------------+-----------------------------------------------+---------------------------------------+
|lang|text                                                     |filtered_text                                  |filtered_text_str                      |
+----+---------------------------------------------------------+-----------------------------------------------+---------------------------------------+
|eng |I saw the red balloon                                    |[I, saw, red, balloon]                         |I saw red balloon                      |
|eng |She was drinking tea from a black mug                    |[She, drinking, tea, black, mug]               |She drinking tea black mug             |
|ger |Er ging heute sehr weit                                  |[ging, heute, weit]                            |ging heute weit                        |
|ger |Ich habe dich seit hundert Jahren nicht mehr gesehen     |[hundert, Jahren, gesehen]                     |hundert Jahren gesehen                 |
+----+---------------------------------------------------------+-----------------------------------------------+---------------------------------------+

如果你不需要保留单词数组格式,只需要最终字符串的话,可以省略filtered_text列的生成,直接一步拼接即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:03