与停用词组匹配并在 Pyspark 中替换为空 space
match with group of stop words and replace with empty space in Pyspark
我在 table 中有地址栏,如下所示
>>> spark.sql("select add1 from test").show(10,False)
+---------------------------+
|add1 |
+---------------------------+
|PO BOX 1111DUBAI UAE |
|P.O. BOX 2222DUBAI - U.A.E|
+---------------------------+
我必须匹配一组单词并将它们从列中删除只是为了比较目的
我能够像下面那样用空 space 替换单个单词(在本例中为 'UAE')
spark.sql("select regexp_replace(add1,'UAE','') from test").show(10,False)
+---------------------------+
|regexp_replace(add1, UAE, )|
+---------------------------+
|PO BOX 1111DUBAI |
|P.O. BOX 2222DUBAI - U.A.E|
+---------------------------+
但我想删除所有特殊字符和一组停用词,如{'UAE'、'U.A.E'、'U A E'、'PO'、'P O'}
期望的输出:
spark.sql("select regexp_replace(add1,'UAE','') from test").show(10,False)
+---------------------------+
|regexp_replace(add1, UAE, )|
+---------------------------+
|1111DUBAI |
|2222DUBAI |
+---------------------------+
有人可以帮我实现这个吗,谢谢!
这里是你如何做到的。希望它能解决你所有的问题。
from pyspark.sql import functions as F
stop_words = {'UAE','U.A.E', 'U A E', 'PO', 'P O', 'BOX'}
df2 = df.withColumn(
"add1",
F.regexp_replace(F.col("add1"), r"[^a-zA-Z0-9\s]", "")
)
for stop_word in stop_words:
df2 = df2.withColumn(
"add1",
F.trim(F.regexp_replace(F.col("add1"), stop_word, ""))
)
df2.show()
+---------+
| add1|
+---------+
|1111DUBAI|
|2222DUBAI|
+---------+
我在 table 中有地址栏,如下所示
>>> spark.sql("select add1 from test").show(10,False)
+---------------------------+
|add1 |
+---------------------------+
|PO BOX 1111DUBAI UAE |
|P.O. BOX 2222DUBAI - U.A.E|
+---------------------------+
我必须匹配一组单词并将它们从列中删除只是为了比较目的
我能够像下面那样用空 space 替换单个单词(在本例中为 'UAE')
spark.sql("select regexp_replace(add1,'UAE','') from test").show(10,False)
+---------------------------+
|regexp_replace(add1, UAE, )|
+---------------------------+
|PO BOX 1111DUBAI |
|P.O. BOX 2222DUBAI - U.A.E|
+---------------------------+
但我想删除所有特殊字符和一组停用词,如{'UAE'、'U.A.E'、'U A E'、'PO'、'P O'}
期望的输出:
spark.sql("select regexp_replace(add1,'UAE','') from test").show(10,False)
+---------------------------+
|regexp_replace(add1, UAE, )|
+---------------------------+
|1111DUBAI |
|2222DUBAI |
+---------------------------+
有人可以帮我实现这个吗,谢谢!
这里是你如何做到的。希望它能解决你所有的问题。
from pyspark.sql import functions as F
stop_words = {'UAE','U.A.E', 'U A E', 'PO', 'P O', 'BOX'}
df2 = df.withColumn(
"add1",
F.regexp_replace(F.col("add1"), r"[^a-zA-Z0-9\s]", "")
)
for stop_word in stop_words:
df2 = df2.withColumn(
"add1",
F.trim(F.regexp_replace(F.col("add1"), stop_word, ""))
)
df2.show()
+---------+
| add1|
+---------+
|1111DUBAI|
|2222DUBAI|
+---------+