PySpark HashingTF 具有给定术语的文档计数

PySpark HashingTF Count of Documents which have a given term

我有一个 spark 数据框,其中“文本”列有一些文本。我想计算出现各种单词的行数 - 本质上是出现“术语”的“文档”数量 - 以及相关计数,如最常见的单词,行(或称它为文档)有这个最常用的词。

我正在使用 pyspark.ml.feature 中的 HashingTF。但似乎找不到从输出中提取此信息的有效方法。

# As an example create a Pandas-df
import pandas as pd
pandas_df = pd.DataFrame({"text": ["The cat jumped over the lazy dog",
                                   "The dog jumped and jumped and ran after the bird"
                                  ]}) 

# Convert to Spark-df
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark_df = spark.createDataFrame(pandas_df)

# Add a column which has the individual words
from pyspark.sql.functions import split, col
spark_df = spark_df.withColumn("words", split(col("text"), " "))

# Use HashingTF
from pyspark.ml.feature import HashingTF
hashingTF = HashingTF(inputCol="words", outputCol="features")

df_term_frequency = hashingTF.transform(spark_df)

作为第一行的示例,数据框“df_term_frequency”列“features”具有:

矢量类型:“稀疏”

长度:262144

指数:[1398、51504、54556、95889、141363、179832、201496]

值:[1, 1, 1, 1, 1, 1, 1]

此列将包含词频。如何获得带有“懒惰”一词的行(文档)总数;包含单词“dog”和“bird”的行(文档)数?

有更好的方法吗?

更简单的方法是使用 .rlike