构建上下文窗口特征数据
移动窗口技术对使用上下文窗口特征数据的机器学习模型非常有用。
您的工作区中已有一张名为 text 的表,包含列 id、word、part、title。其中存放了《福尔摩斯》一书的第 9、10、11、12 章。单词已预处理为「每行一个词」。每个词都有由 id 列提供的唯一整数索引。对于在文本中更早出现的词,id 值更小;更晚出现的词,id 值更大。
第 12 章数据集的前 10 行已作为 Table1 打印到控制台。目标结果中按第 12 章(part 12)筛选的前 10 行,已作为 Table2 打印到控制台。在 Table2 中,每一行的「给定」单词在列 w3 中。列 w1 和 w2 给出紧挨在给定词之前的两个词。列 w4 和 w5 给出紧挨在给定词之后的两个词。
请注意,第一行中 w1 和 w2 为 null。这是因为在第 12 章范围内,w3(此处为 "xii")之前没有任何词。
如果您忘记了视频中的某个步骤,请随时查看控制台右侧提供的幻灯片。
本练习是课程的一部分
Python 中的 Spark SQL 入门
练习说明
- 针对每一行,获取该词以及其之前的两个词和之后的两个词。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Word for each row, previous two and subsequent two words
query = """
SELECT
part,
LAG(word, 2) OVER(PARTITION BY ____ ORDER BY ____) AS w1,
LAG(word, ____) OVER(____ BY part ____ BY id) AS w2,
word AS w3,
____(word, 1) OVER(____ BY part ____ BY id) AS w4,
LEAD(word, 2) OVER(____ BY part ____ BY id) AS w5
FROM text
"""
spark.sql(query).where("part = 12").show(10)