开始使用免费开始使用

将文本转换为向量格式

您已经学习了如何拆分句子,并使用 CountVectorizer 将词数组转换为数值向量。

已提供数据框 df,包含以下列:sentenceinout。每一列都是字符串数组。sentence 是表示教科书中一句话的词列表。out 列给出 sentence 的最后一个词。in 列是从 sentence 中移除最后一个词后得到的。

CountVectorizer 模型 model 期望输入的数据框包含一列 words,并生成一列 vec

您将先进行一次变换,添加名为 invec 的列,其结果如下所示:

+----------------------+-------+------------------------------------+
|in                    |out    |invec                               |
+----------------------+-------+------------------------------------+
|[then, how, many, are]|[there]|(126,[3,18,28,30],[1.0,1.0,1.0,1.0])|
|[how]                 |[many] |(126,[28],[1.0])                    |
|[i, donot]            |[know] |(126,[15,78],[1.0,1.0])             |
+----------------------+-------+------------------------------------+
only showing top 3 rows

然后您将进行第二次变换,结果如下所示:

+------------------------------------+----------------+
|invec                               |outvec          |
+------------------------------------+----------------+
|(126,[3,18,28,30],[1.0,1.0,1.0,1.0])|(126,[11],[1.0])|
|(126,[28],[1.0])                    |(126,[18],[1.0])|
|(126,[15,78],[1.0,1.0])             |(126,[21],[1.0])|
+------------------------------------+----------------+
only showing top 3 rows

本练习是课程的一部分

Python 中的 Spark SQL 入门

查看课程

练习说明

  • 使用 modeldf 调用 transform(),创建名为 result 的数据框。result 包含列 sentenceinoutinvecinvec 是对 in 列进行向量化后的结果。
  • result 中添加名为 outvec 的列。此时 result 包含列 sentenceinoutinvecoutvec

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Transform df using model
result = model.____(df.withColumnRenamed('in', 'words'))\
        .withColumnRenamed('words', 'in')\
        .withColumnRenamed('vec', 'invec')
result.drop('sentence').show(3, False)

# Add a column based on the out column called outvec
result = model.transform(result.withColumnRenamed('out', 'words'))\
        .withColumnRenamed('words', 'out')\
        .withColumnRenamed('vec', '____')
result.select('invec', 'outvec').show(3, False)	
编辑并运行代码