从文本列中过滤停用词 - spark SQL

filter stop words from text column - spark SQL

我正在使用 spark SQL 并且有一个包含用户 ID 和产品评论的数据框。 我需要从评论中过滤停用词,我有一个包含要过滤的停用词的文本文件。

我设法将评论拆分为字符串列表,但不知道如何过滤。

这是我尝试做的:

from pyspark.sql.functions import col

stopWords = spark.read.text('/FileStore/tables/english.txt')

df.select(split(col("reviewText")," "))

df.filter(col("reviewText") == stopWords)

谢谢!

你有点含糊,因为你没有提到更常见的 flatMap 方法。

这里有一个替代方案,只检查数据框列。

import pyspark.sql.functions as F
from pyspark.sql.functions import regexp_extract 

stopWordsIn = spark.read.text('/FileStore/tables/sw.txt').rdd.flatMap(lambda line: line.value.split(" "))
stopWords = stopWordsIn.collect()
print(stopWords)
 
words = spark.read.text('/FileStore/tables/df.txt')
words = words.withColumn('value_1', F.lower(F.regexp_replace('value', "[^0-9a-zA-Z^ ]+", "")))
words = words.withColumn('value_2', F.regexp_replace('value_1', '\b(' + '|'.join(stopWords) + ')\b', ''))
words.show()

returns - 并过滤掉不需要的列。

['a', 'in', 'the']


+--------------+-------------+-------------+
|         value|      value_1|      value_2|
+--------------+-------------+-------------+
|      A quick2|     A quick2|       quick2|
|brown fox was#|brown fox was|brown fox was|
| in the house.| in the house|        house|
+--------------+-------------+-------------+

您会看到停用词以及我将所有内容都转换为小写并删除了一些内容的事实。