Tutorial ini membahas basic class untuk preprocessing text. Misalkan kita memiliki list teks, misalnya daftar quotes top film. Kalian bisa download filenya DISINI.
Kita akan membangun class yang membersihkan/cleans quotes dan menghasilkan encoding one-hot atau matriks TF-IDF.
Biasanya, data teks dibersihkan dengan menghapus elemen yang tidak diperlukan. Misalnya, kata-kata seperti saya, aku, gw, kamu, muncul dalam banyak teks dan hampir tidak informatif. Ini disebut stopwords. Kuta harus menghapus ini. Kedua, untuk membuat corpus teks yang lebih homogen, kita bisa menurunkan huruf kecil semua karakter sehingga misal kata "Sintha sayangku" identik dengan "sintha sayangku". Terakhir, dalam tutorial ini kita akan stem kata-kata tersebut ke bentuk akarnya. Ini berarti kita akan mengubah kata-kata seperti memancing,dan kepancing menjadi akar kata pancing.
Class dalam Python mirip dengan membuat pemotong kue. Kita ingin membuat prototipe agar setiap kita menggunakan cookie cutter pada dataset teks, objek tersebut akan memiliki bentuk, karakteristik, dan fungsi yang sama.
Mari kita mulai dengan menginisialisasi class kita.
Setiap class pada Python harus diinisialisasi. Pada dasarnya, kita ingin menggunakan fungsi __init__ (yaitu dua garis bawah sebelum dan setelah kata init) untuk memberi objek beberapa karakteristik dasar. Dalam kasus kita, ini akan menjadi karakteristik bagaimana kita ingin membersihkan/cleaning data.
self adalah elemen penting dari program berorientasi objek. Ini adalah class itu sendiri dan akan menjadi variabel yang dapat kita tambahkan atributnya.
text akan menjadi daftar teks yang ingin kita bersihkan. Variabel ini wajib dimasukkan oleh pengguna saat memanggil kelas Preprocess yang kita buat.
sw adalah daftar stopwords. Kamu akan melihat ini sama dengan nilai (stopwords.words ('english')). Ini berarti secara default stopwords akan diimpor dari modul nltk (alat bahasa alami yang bagus yang dibuat oleh orang-orang baik di UPenn http://www.nltk.org). Ini berarti sw TIDAK wajib karena akan mengambil nilai secara default jika pengguna tidak memberinya nilai.
lower adalah variabel Boolean secara default sama dengan True. Kita akan menggunakan ini nanti untuk mengetahui apakah teks harus huruf kecil atau tidak.
stem adalah variabel Boolean secara default sama dengan True. Kita akan menggunakan ini nanti untuk mengetahui apakah akan stem kata-kata dalam teks atau tidak.
Baris terakhir seperti self.text = text adalah atribut pegging ke objek kita. Artinya, di tempat lain di dalam kelas, kita dapat merujuk ke atribut ini dengan menjalankan/running class_instance.text.
(type (text) == pd.core.series.Series) memeriksa apakah teks tersebut adalah seri Pandas/pandas series. Jika bukan, maka kita akan mengconvert menjadi satu. Pandas adalah modul yang memudahkan untuk memanipulasi list, misalnya menurunkan casing atau mengembalikan dataframe.
Berikut contohnya:
Pertama kita membuat instance kelas, lalu kita memanggil atributnya (teks yang saya cetak hanya bagian atas, atau head, dari dataframe untuk menghemat ruang).
Sekarang kita memiliki fungsi __ init __ , mari kita definisikan method pertama kita. Method adalah fungsi di dalam class. Argumen pertama harus self, karena variabel ini berisi atribut yang kita definisikan dalam fungsi __ init __ . Pertama, kita akan memeriksa apakah atribut lower adalah True; jika demikian, mari kita kecilkan teksnya. Kemudian, mari kita pisahkan setiap teks menjadi list kata.
Dengan cara ini kita dapat menggilir setiap kata dan i) stem jika self.stem True ii) Menghapusnya.remove jika itu stopword.
Mirip dengan fungsi Python lainnya, kita dapat mendefinisikan fungsi di dalam fungsi untuk membuat kode yang lebih bersih. Terakhir, kita akan menggabungkan setiap list kata untuk membuat string, dan kemudian menginisialisasi objek TfidfVectorizer. TfidfVectorizer akan memungkinkan kita membuat matriks padat di mana setiap kolom adalah kata dalam kosakata kita, dan setiap baris sesuai dengan dokumen.
Atribut df_dense adalah representasi dense dari matriks TF-IDF (
wikipedia).. (0, 70) sesuai dengan dokumen pertama, "frankly, dear, I don't give a damn.", Dan kata ke-70 dalam kosakata kita yang terkandung dalam kutipan itu. 0.478079... adalah skor TF-IDF.
Kita mungkin ingin mengembalikan ini dalam bentuk kumpulan data yang lebih mudah dibaca. Jadi mari kita buat dataframe Pandas di mana kolomnya adalah kata-kata dalam kosakata kita setelah membersihkan teks, self.vectorizer.get_feature_names(), dan kemudian nilai yang bisa kita dapatkan dari self.df_dense.toarray().
onehot akan menjadi variabel yang dapat kita gunakan sehingga pengguna dapat mengembalikan matriks dengan nilai 1 jika dokumen tersebut berisi kata dalam kosa kata di posisi ke-i, atau skor TF-IDF.
Dari hasil diatas kita akan coba convert dalam bentuk csv file
No comments: