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

Spark NLP Normalizer正则功能异常 误删除变音符号问题咨询

问题根因
  • Spark NLP底层基于Java正则引擎实现,默认正则元字符\w仅匹配ASCII范围内的大小写字母、数字、下划线,无法识别带变音符号的非ASCII拉丁字符(如德语的Ä、ü、ö等),你配置的排除规则[^\w -]会将这类变音字符判定为待清理内容,因此出现Äpfel变为pfel、Müller变为Mller的问题。
  • 原清理规则中-(?!\w)|(?<!\w)-用于过滤非单词中间的横杠,但因为\w不识别变音字符,Müller的首字符ü会被判定为非单词字符,最终导致Reutter-Müller中间的合法横杠被误删。
修复方案

将Normalizer组件的清理规则中的\w替换为可匹配所有Unicode字母的正则符\p{L}即可,修正后的代码如下:

normalizer = Normalizer() \
    .setInputCols(["column_token"]) \
    .setOutputCol("column_normalized")\
    .setCleanupPatterns(["[^\p{L}0-9 -]|_|-(?!\p{L})|(?<!\p{L})-"])\
    .setLowercase(True)

调整说明:

  • 用\p{L}替代原规则中的所有\w,兼容所有带变音符号的Unicode字母
  • 规则中保留了0-9用于匹配数字,若业务不需要保留数字可直接删除该部分
  • 如果你不需要将输出统一转为小写,删除.setLowercase(True)配置即可保留原文本的大小写格式
验证效果

针对你提供的输入示例,修正后输出完全匹配预期:

Ich esse gerne Äpfel vom Biobauernhof Reutter-Müller die schmecken besonders gut

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:09:01