假设我有一个Spark数据框,其中一列有短句。唯一短语的总数太大,在机器学习算法中没有用处,但我正在考虑将短语分解为单词,然后将每个短语转换为固定长度的向量
N
其中每个维度表示
N
最常见的单词出现在这个短语中。
val sentenceDataFrame = spark.createDataFrame(Seq(
(0, "Foo bar dinosaur"),
(1, "bar logistic"),
(2, "foo bar logistic regression")
)).toDF("id", "sentence")
如果我让
N
val sentenceDataFrameTransformed = spark.createDataFrame(Seq(
(0, "Foo bar dinosaur", [1, 1, 0]),
(1, "bar logistic", [0, 1, 0]),
(2, "foo bar logistic regression", [1 1 1])
)).toDF("id", "sentence", "sentenceTopWordsHotEncoded")
在这种情况下,最热门的词是“foo”、“bar”和“logistic”(按流行程度)。
Spark describes here
,但我没有看到一个(或一些简单的组合)可以给我想要的。
我不想手动编写此函数的原因是,我希望transformer准备好放入管道中,以便可以序列化此模型,因此当我评估新行时,顶部
文字将是相同的。