gpt4 book ai didi

python - 在 PySpark 中使用正则表达式创建 N-Gram

转载 作者:行者123 更新时间:2023-12-04 08:29:02 25 4
gpt4 key购买 nike

我有一个带有名称的 pyspark 数据框列:

|   name     |
--------------
|Lebron James|
|Kyrie Irving|
|Kevin Durant|
我想创建一个新列,如下所示:
|   name     |         trigram          |
-----------------------------------------
|Lebron James| Leb ebr bro on Jam ame es
|Kyrie Irving| ...
|Kevin Durant| ...
到目前为止我有
df.withColumn("trigram", regex_replace(col("name"), "([A-Za-z0-9\s]{3})(?!$)", r"$1 "))
但这输出:
|   name     |         trigram       |
--------------------------------------
|Lebron James| Leb ron Ja mes
|Kyrie Irving| Kyr ie Irv ing
|Kevin Durant| Kev in Dur ant
注意:重要的是不要使用 udfs。我可以简单地使用 udf 和列表理解来做我想做的事,但我希望以最佳方式做到这一点,因为实际数据有数亿行

最佳答案

您可以使用

regex_replace(col("name"), "(?=(.{3})).", r"$1 ")
regex demo .细节:
  • (?=(.{3})) - 一个正向前瞻,捕获(进入第 1 组,$1)当前位置
  • 右侧的除换行符以外的三个字符
  • . - 除换行符以外的任何字符,消耗(它将被删除,并由从此字符开始的 3 个字符条纹替换)。
  • 关于python - 在 PySpark 中使用正则表达式创建 N-Gram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65115796/

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