Mengonversi teks ke format vektor
Anda telah mempelajari cara memecah kalimat dan mengonversi sebuah array kata menjadi vektor numerik menggunakan CountVectorizer.
Sebuah dataframe df disediakan dengan kolom berikut: sentence, in, dan out. Setiap kolom berisi array string. sentence adalah daftar kata yang merepresentasikan sebuah kalimat dari buku teks. Kolom out berisi kata terakhir dari sentence. Kolom in diperoleh dengan menghapus kata terakhir dari sentence.
model CountVectorizer mengharapkan sebuah dataframe dengan kolom words dan akan membuat kolom vec.
Anda akan terlebih dahulu melakukan transform yang menambahkan kolom invec, yang tampilannya seperti berikut:
+----------------------+-------+------------------------------------+
|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
Kemudian Anda akan melakukan transform kedua, yang tampilannya seperti berikut:
+------------------------------------+----------------+
|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
Latihan ini adalah bagian dari kursus
Pengantar Spark SQL dalam Python
Petunjuk latihan
- Buat sebuah dataframe bernama
resultdengan menggunakanmodeluntuktransform()df.resultmemiliki kolomsentence,in,out, daninvec.invecadalah hasil transformasi vektor dari kolomin. - Tambahkan kolom ke
resultbernamaoutvec.resultsekarang memiliki kolomsentence,in,out,invec, danoutvec.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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)