Proyek Deteksi Berita Palsu dengan Python [Dengan Coding]
Diterbitkan: 2020-12-14Pernah membaca berita yang sepertinya palsu? Kita semua menemukan artikel berita seperti itu, dan secara naluriah menyadari bahwa ada sesuatu yang tidak beres. Karena begitu banyak posting di luar sana, hampir tidak mungkin untuk memisahkan yang benar dari yang salah. Di sini, kita tidak hanya berbicara tentang klaim palsu dan poin faktual, melainkan, hal-hal yang terlihat salah secara rumit dalam bahasa itu sendiri.
Pernahkah Anda bertanya-tanya bagaimana cara mengembangkan proyek pendeteksian berita palsu? Namun tidak ada jalan keluar yang mudah untuk mengetahui mana berita yang bohong dan mana yang tidak, apalagi akhir-akhir ini dengan cepatnya penyebaran berita di media sosial. Namun, beberapa solusi dapat membantu dalam mengidentifikasi kesalahan ini.
Ada dua cara untuk mengklaim bahwa beberapa berita itu palsu atau tidak: Pertama, serangan terhadap poin-poin faktual. Kedua, bahasa. Yang pertama hanya dapat dilakukan melalui pencarian substansial ke internet dengan sistem kueri otomatis. Ini bisa menjadi tugas yang berat, terutama bagi seseorang yang baru memulai dengan ilmu data dan pemrosesan bahasa alami.
Yang terakhir ini dimungkinkan melalui saluran pemrosesan bahasa alami yang diikuti oleh saluran pembelajaran mesin. Begitulah cara kami mengimplementasikan proyek pendeteksian berita palsu dengan Python. Ini adalah salah satu masalah lain yang diakui sebagai masalah pembelajaran mesin yang diajukan sebagai masalah pemrosesan bahasa alami. Jika Anda seorang pemula dan tertarik untuk mempelajari lebih lanjut tentang ilmu data, lihat kursus online ilmu data kami dari universitas terkemuka.
Baca: Ide & Topik Proyek Python
Ada banyak kumpulan data di luar sana untuk jenis aplikasi ini, tetapi kami akan menggunakan yang disebutkan di sini . Data berisi sekitar 7500+ umpan berita dengan dua label target: palsu atau asli. Dataset juga terdiri dari judul berita tertentu.
Langkah-langkah dalam pipeline untuk pemrosesan bahasa alami adalah sebagai berikut:
- Memperoleh dan memuat data
- Membersihkan kumpulan data
- Menghapus simbol tambahan
- Menghapus tanda baca
- Menghapus stopword
- Stemming
- Tokenisasi
- Ekstraksi fitur
- Vektorisasi TF-IDF
- Penghitung vektor dengan transformator TF-IDF
- Pelatihan dan verifikasi model pembelajaran mesin
Sebelum kita mulai membahas langkah-langkah implementasi proyek pendeteksian berita palsu , mari kita impor pustaka yang diperlukan:
Kode:
impor panda sebagai pd impor numpy sebagai np impor ulang impor string dari nltk.corpus mengimpor stopwords dari nltk.tokenize impor word_tokenize stop_words = set(stopwords.words( 'english' )) |
Langkah pertama adalah memperoleh data. Kami telah menyediakan tautan ke file CSV; tetapi, penting juga untuk mendiskusikan cara lain untuk menghasilkan data Anda.
Salah satu caranya adalah dengan web scraping. Untuk ini, kami perlu membuat kode perayap web dan menentukan situs dari mana Anda perlu mendapatkan data. Tapi hati-hati, ada dua masalah dengan pendekatan ini.
Pertama, mungkin ilegal untuk menghapus banyak situs, jadi Anda harus menjaganya. Dan kedua, datanya akan sangat mentah. Seluruh pipeline akan ditambahkan dengan daftar langkah-langkah untuk mengubah data mentah tersebut menjadi file CSV atau kumpulan data yang dapat diterapkan. Oleh karena itu, kami menggunakan file CSV yang telah ditentukan sebelumnya dengan data yang terorganisir.
Namun, jika tertarik, Anda dapat melihat kursus upGrad tentang Ilmu data, di mana tersedia cukup sumber daya dengan penjelasan yang tepat tentang Rekayasa data dan pengikisan web. Pastikan untuk memeriksa mereka di sini .
Begitulah cara kami mengimpor dataset kami dan menambahkan label. Perhatikan bagaimana kami menghapus kolom yang tidak perlu dari kumpulan data. Jika diperlukan pada nilai yang lebih tinggi, Anda dapat mempertahankan kolom tersebut. Namun saat ini, proyek pendeteksian berita palsu kami akan bekerja dengan lancar hanya pada kolom teks dan label target.
Kode:
df_text = pd.read_csv( 'fake_or_real_news.csv' , encoding= 'latin-1' ) df_text.columns = [ 'id' , 'title' , 'text' , 'label' ] df_text.drop(['id', 'title'], axis=1) |
Pindah, langkah selanjutnya adalah membersihkan data yang ada. Mengapa langkah ini perlu? Sangat penting untuk memahami bahwa kita bekerja dengan mesin dan mengajarkannya untuk membagi yang palsu dan yang asli. Saat ini, kami memiliki data tekstual, tetapi komputer bekerja dengan angka. Jadi pertama-tama diperlukan untuk mengubahnya menjadi angka, dan langkah sebelumnya adalah memastikan bahwa kita hanya mengubah teks-teks yang diperlukan untuk pemahaman.
Langkah pertama dalam pipa pembersihan adalah memeriksa apakah kumpulan data berisi simbol tambahan untuk dihapus. Itu bisa berupa alamat web atau simbol referensi lainnya, seperti di(@) atau tagar. Berikut kodenya:
Kode:
# Hapus url teks = re.sub( r”http\S+|www\S+|https\S+” , , teks, flags=re.MULTILINE) # Hapus pengguna @ referensi dan '#' dari teks teks = re.sub( r'\@\w+|\#' , ” , teks) |
Setelah kami menghapusnya, langkah selanjutnya adalah menghapus simbol lainnya: tanda baca. Jika dipikir-pikir, tanda baca tidak memiliki masukan yang jelas dalam memahami realitas berita tertentu. Kadang-kadang, mungkin saja jika ada banyak tanda baca, maka berita itu tidak nyata, misalnya, penggunaan tanda seru yang berlebihan.
Tapi itu adalah kasus yang jarang terjadi dan akan membutuhkan analisis berbasis aturan khusus. Jadi, untuk proyek pendeteksian berita palsu ini , kami akan menghapus tanda baca. Berikut adalah cara melakukannya:
Kode:
teks = teks.translate(str.maketrans( ” , ” , string.punctuation)) |
Langkah selanjutnya adalah membendung kata ke intinya dan menandai kata-kata tersebut. Tokenisasi berarti membuat setiap kalimat menjadi daftar kata atau token. Berikut adalah kode dua baris yang perlu ditambahkan:
Kode:
token = word_tokenize(teks) kata = [w untuk w di token jika tidak w di stop_words] |
Langkah selanjutnya adalah langkah yang krusial. Konversi token menjadi angka yang berarti. Langkah ini juga dikenal sebagai ekstraksi fitur. Untuk aplikasi kami, kami menggunakan metode TF-IDF untuk mengekstrak dan membangun fitur untuk alur pembelajaran mesin kami.
TF-IDF pada dasarnya berarti istilah frekuensi-frekuensi dokumen terbalik. Seperti yang disarankan oleh namanya, kami mengambil informasi tentang kumpulan data melalui frekuensi istilahnya serta frekuensi istilah di seluruh kumpulan data, atau kumpulan dokumen.
TF-IDF dapat dengan mudah dihitung dengan mencampurkan kedua nilai TF dan IDF. Kedua rumus melibatkan rasio sederhana.
TF = tidak. berapa kali istilah tersebut muncul dalam dokumen / jumlah total istilah.
IDF = log of ( jumlah total dokumen / jumlah dokumen di mana istilah tersebut muncul )
Sekarang Python memiliki dua implementasi untuk konversi TF-IDF. Pertama adalah TF-IDF vectoriser dan kedua adalah TF-IDF transformer. Perbedaannya adalah transformator memerlukan implementasi bag-of-words sebelum transformasi, sedangkan vektoriser menggabungkan kedua langkah menjadi satu. Kita juga bisa menggunakan count vectoriser yang merupakan implementasi sederhana dari bag-of-words. Tetapi TF-IDF akan bekerja lebih baik pada kumpulan data tertentu.

Berikut adalah bagaimana TF-IDF dapat diimplementasikan.
Kode:
dari sklearn.feature_extraction.text impor TfidfVectorizer tf_vector = TfidfVectorizer(sublinear_tf= Benar ) tf_vector.fit(df_text[ 'teks' ]) |
Langkah selanjutnya adalah alur pembelajaran Mesin. Sama seperti pipeline ML biasa, kita perlu memasukkan data ke dalam X dan y. Untuk melakukannya, kami menggunakan X sebagai matriks yang disediakan sebagai keluaran oleh vektoriser TF-IDF, yang perlu diratakan.
Kita dapat menggunakan fungsi travel di Python untuk mengubah matriks menjadi array. Nilai y tidak dapat langsung ditambahkan karena masih berupa label dan bukan angka. Untuk mengonversinya menjadi 0s dan 1s, kami menggunakan encoder label sklearn.
Encoder ini mengubah teks label menjadi target bernomor. Misalnya, asumsikan bahwa kita memiliki daftar label seperti ini: ['asli', 'palsu', 'palsu', 'palsu']
Yang kami butuhkan pada dasarnya adalah daftar seperti ini: [1, 0, 0, 0]. Apa yang dilakukan pembuat enkode label adalah, ia mengambil semua label yang berbeda dan membuat daftar. Untuk contoh kita, daftarnya adalah ['palsu', 'nyata'].
Berikut adalah implementasi yang sama:
Kode:
X_text = tf_vector.transform(df_text[ 'teks' ].ravel()) nilai_y = np.array(df_text[ 'label' ].ravel()) |
dari preprocessing impor sklearn le = prapemrosesan.LabelEncoder() le.fit(y_values) le.transform(y_values) |
Setelah selesai, pemisahan pelatihan dan pengujian dilakukan. Ini dapat dicapai dengan menggunakan paket preprocessing sklearn dan mengimpor fungsi train test split.
Kode:
dari sklearn.model_selection impor train_test_split X_train, X_test, y_train, y_test = train_test_split(X_text, y_values, test_size= 0.15 , random_state= 120 ) |
Langkah terakhir adalah menggunakan model. Ada banyak model pembelajaran mesin yang bagus yang tersedia, tetapi bahkan model dasar yang sederhana akan bekerja dengan baik pada implementasi proyek pendeteksian berita palsu kami . Kami pertama-tama menerapkan model regresi logistik. Berikut adalah cara mengimplementasikan menggunakan sklearn.
Kode:
dari sklearn.metrics impor akurasi_score dari sklearn.linear_model impor LogisticRegression model = LogisticRegression(solver= 'lbfgs' ) |
Model ini berkinerja cukup baik. Akurasi 92 persen pada model regresi cukup baik. Anda juga dapat menerapkan model lain yang tersedia dan memeriksa keakuratannya.
Jadi, ini adalah bagaimana Anda dapat mengimplementasikan proyek pendeteksian berita palsu menggunakan Python.
Perhatikan bahwa ada banyak hal yang harus dilakukan di sini. Pipa NLP belum sepenuhnya selesai. Ada banyak fungsi lain yang tersedia yang dapat diterapkan untuk mendapatkan ekstraksi fitur yang lebih baik.
Baca Juga: Ide Proyek Sumber Terbuka Python
Cara berita palsu mengadaptasi teknologi, model pemrosesan yang lebih baik dan lebih baik akan diperlukan. Dan model ini akan lebih ke pemahaman bahasa alami dan kurang berpose sebagai model pembelajaran mesin itu sendiri. Model juga dapat disesuaikan sesuai dengan fitur yang digunakan. Dataset dapat dibuat beradaptasi secara dinamis untuk membuatnya bekerja pada data saat ini. Tapi itu akan membutuhkan model yang terlatih secara mendalam pada artikel berita saat ini.
Jadi, jika lebih banyak data tersedia, model yang lebih baik dapat dibuat dan penerapan proyek pendeteksian berita palsu dapat ditingkatkan. Tetapi skema internal dan jalur pipa inti akan tetap sama. Pipeline yang dijelaskan sangat mudah beradaptasi dengan eksperimen apa pun yang mungkin ingin Anda lakukan. Jangan ragu untuk mencoba dan bermain dengan berbagai fungsi.
Jika Anda ingin tahu tentang belajar ilmu data untuk menjadi yang terdepan dalam kemajuan teknologi yang bergerak cepat, lihat Program PG Eksekutif upGrad & IIIT-B dalam Ilmu Data dan tingkatkan diri Anda untuk masa depan.
Keterampilan apa yang diperlukan untuk mengembangkan proyek pendeteksian berita palsu dengan Python?
Python digunakan untuk membangun proyek pendeteksian berita palsu karena pengetikan dinamis, struktur data bawaan, pustaka yang kuat, kerangka kerja, dan dukungan komunitas. Keterampilan lain yang diperlukan untuk mengembangkan proyek pendeteksian berita palsu dengan Python adalah Pembelajaran Mesin, Pemrosesan Bahasa Alami, dan Kecerdasan Buatan. Pengetahuan tentang keterampilan ini adalah suatu keharusan bagi peserta didik yang berniat untuk melakukan proyek ini. Pembelajar dapat dengan mudah mempelajari keterampilan ini secara online.
Bagaimana cara perusahaan menggunakan Proyek Deteksi Berita Palsu dari Python?
Karena sebagian besar berita palsu ditemukan di platform media sosial, memisahkan berita asli dan palsu bisa jadi sulit. Platform media sosial dan sebagian besar perusahaan media menggunakan Proyek Deteksi Berita Palsu untuk secara otomatis menentukan apakah berita yang diedarkan itu palsu atau tidak. Sebagian besar perusahaan menggunakan pembelajaran mesin selain proyek untuk mengotomatiskan proses menemukan berita palsu ini daripada mengandalkan manusia untuk melakukan tugas yang membosankan.
Apa saja aplikasi python kehidupan nyata lainnya?
Python memiliki berbagai aplikasi dunia nyata. Python mendukung sistem operasi lintas platform, yang membuat pengembangan aplikasi yang menggunakannya jauh lebih mudah dikelola. Python digunakan untuk mendukung beberapa aplikasi paling terkenal di dunia, termasuk YouTube, BitTorrent, dan DropBox. Python sering digunakan dalam produksi game inovatif. Python juga digunakan dalam pembelajaran mesin, ilmu data, dan kecerdasan buatan karena membantu dalam pembuatan algoritma berulang berdasarkan data yang disimpan. Python adalah penyelamat dalam hal mengekstraksi sejumlah besar data dari situs web, yang selanjutnya dapat digunakan pengguna dalam berbagai operasi dunia nyata seperti perbandingan harga, posting pekerjaan, penelitian dan pengembangan, dan sebagainya.