建立語境視窗特徵資料
移動視窗技術對於使用語境視窗特徵資料的機器學習模型很有用。
你的工作環境中有一個資料表 text,包含欄位 id、word、part、title。內容為《福爾摩斯》書中的第 9、10、11 與 12 章。單字已經處理為每列一個字。每個單字都有一個由 id 欄位提供的唯一整數索引。id 欄位對於較早出現的單字會較小,對於較晚出現的單字會較大。
第 12 章資料集的前 10 列已印在主控台上為 Table1。目標結果的前 10 列(僅限於 part 12,也就是第 12 章)已印在主控台上為 Table2。在 Table2 中,該列的「given」單字在欄位 w3。欄位 w1 與 w2 分別是該 given 單字的前兩個單字。欄位 w4 與 w5 分別是該 given 單字的後兩個單字。
請注意首列中的 w1 與 w2 為 null。這是因為在 part 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)